[Day17] NLP会用到的模型(二)-LSTM

一. RNN会造成的问题

前一天看过了RNN的训练流程,他是非常长一串,若今天我们需训练一个非常长的文本训练 RNN 时,会进行非常多次的反向传播,这在让我们计算梯度时会造成梯度消失(Gradient Vanishing)与梯度爆炸(Gradient Exploding)的问题。

那LSTM解决了上述的这个问题,它不会将前面的资讯都记录下来,而是会选择性纪录前面的资讯,那至於LSTM是如何做到的,就是因为他有一个遗忘门的机制,让他决定哪些资讯要保留,哪些要遗忘!

二. LSTM

LSTM全名为Long short-term memory(长短期记忆),其实整体上,LSTM与RNN的流程是一样的,都是在向前传播的时候处理资讯,但LSTM的架构与运算方式不同,如下图,图片一样来自Coupy的'NLP 深度学习马拉松':
https://ithelp.ithome.com.tw/upload/images/20210917/20140426I0ecrNbTKu.png

在计算时会决定哪些资讯该保留哪些该舍去,接下来来说明LSTM的三大门: 遗忘门、输入门、输出门

  • 遗忘门,前面一个状态h(t-1)会与现在的input X(t) 一起决定这边要不要保留(这边是用sigmoid来决定保留的%数,因为sigmoid是输出0-1之间的数字),操作流程如下:
    https://ithelp.ithome.com.tw/upload/images/20210917/20140426wqHLVJLm1j.png

  • 输入门,用於更新单元现在的状态。一样先通过sigmoid输出0-1之间的数字调整输出值,0表示不重要,1表示重要。也将这动作传输给Tanh函数,最後将这两个结果相乘,这个动作就是在说 Sigmoid的值来权衡Tanh输出中哪些信息哪些是重要的,操作流程如下:
    https://ithelp.ithome.com.tw/upload/images/20210917/20140426lwfAgS3AU7.png

输入门输出後,C的值也可以开始跟着变动,往前进,会先乘上遗忘门输出的值,如果是0表示前面的资讯不重要了可以舍弃,更新完C後C就可以送给下一个LSTM单元继续做一样的事罗~如下图:
https://ithelp.ithome.com.tw/upload/images/20210917/20140426oBrV3yliBs.png

  • 输出门,决定下个隐藏状态的值并送至下一个LSTM单元,包含了前面资讯。与输入门一样,将先前的隐藏状态前面一个状态h(t-1)会与现在的input X(t)传递给Sigmoid函数,接着把上一不的C传递给Tanh函数,最後将Tanh输出和 Sigmoid输出相乘,这样就可以知道这个LSTM单元与过去的一些隐藏讯息h(t),将它往後一个单元输出:

https://ithelp.ithome.com.tw/upload/images/20210917/20140426SDm79bP3eE.png


以上就是LSTM的操作流程~明天会再说明GRU的部分~~


<<:  [Day 2] php变数型态与运算

>>:  DAY17 MongoDB Replication 观念

1Y0-403 转储 - Citrix 1Y0-403 考试准备指南

您是 Citrix CCE-V 考试的有抱负的候选人之一吗?然後你就中了头奖!多年来,学生在尝试通过...

Day 29: 来讲一下commit前的小撇步

今天来讲一些使用套件来方便我们做自动化的一些流程,今天要提的是lint-staged与husky. ...

Day20-94. Binary Tree Inorder Traversal

94. Binary Tree Inorder Traversal(Easy) Given the ...

定时器爬虫练习

这次我用上篇练习的基本定时器进行爬虫,但是过程中遇到了困难,总感觉连资料都没办法好好抓取,所以只好先...

[Golang]range 使用细节

1. range 表达式的值 当for语句被执行的时候,在range关键自右边的number1会先被...