概述
一.从RNN谈起
相信接触过深度学习的朋友们应该十分清楚BP神经网络和CNN了。今天主要总结下RNN模型。
1.为什么提出RNN模型?
传统的神经网络模型输入输出有事相互独立的,有些连续性的任务无法解决。比如图像上的猫和狗等内容是分隔开的,但在一些自然语言处理问题上,输入和输出是不独立的。eg:我是中国人,我的母语是_____。在这个任务中,输出不仅依赖于输入,还和之前的一部分信息有关。
传统的神经网络无法解决输出对输入和之前信息的依赖关系,所以提出RNN(循环神经网络)。通过RNN可以解决“记忆”问题。
二.RNN的结构
- Xt是t时刻的输入
- St是t时刻的记忆,St=f(UXt+WS_t-1),f可以是tanh等。St只保存了前一时间点上的信息。但不能保存之前的所有信息。
- Ot是t时刻的输出
- RNN的整个神经网络都共享一组参数(U,V,W),极大减小了需要训练和预估的参数量
三.双向RNN
有些情况下,当前输入不仅取决于前一时刻,可能与下一时刻也有关。所以有进一步发展了双向RNN
四.LSTM
为解决RNN记忆能力的问题,进一步提出LSTM模型。LSTM和RNN大体结构相同,区别是: - 记忆细胞经过改造
- 需要记忆的信息会一直传递,不需要记忆的会被“门”截断
五.LSTM的关键问题总结
1.细胞状态(cell state)
细胞状态类似于传送带。直接在真个链上运行,只有一些少量的线性交互。信息在上面传输保持不变。
2.LSTM如何控制细胞状态
通过“门”让信息选择性通过,来去除或增加信息到细胞状态。包含一个sigmoid神经网络层和一个pointwise乘法操作。sigmoid层输出0-1之间的数值,描述每个部分有多少量可以通过。0表示不允许任何量通过,1表示允许任意量通过。
3.LSTM中的几个关键的“门”操作 - 忘记门
- 决定从细胞状态中丢弃什么信息
比如完形填空中填“他”或者“她”的问题。细胞状态可能包含当前主语的类别,当我们看到新的代词没我们希望忘记旧的代词
- 决定放什么新信息到细胞状态中
sigmoid层决定什么值需要更新
tanh层创建一个新的候选值向量
上述2步视为状态更新做准备
- 更新细胞状态
将C_t-1更新为Ct
把旧状态与ft相乘,丢弃掉我们确定需要丢弃的信息
加上i_t*Ct。这就是新的候选值,根据我们更新每个状态的程度进行变化
最后
以上就是外向眼神为你收集整理的LSTM学习记录的全部内容,希望文章能够帮你解决LSTM学习记录所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复