循环神经网络
-
RNN :循环神经网络,处理的是后续的输出与之前的内容有关联的任务。
-
RNN引入“记忆”的概念
-
“循环”2字来源于其每个源于都执行相同的任务,但是输出依赖于输入和“记忆”。NMT: neural machine translation
一.场景与多种应用:模仿生成论文(生成序列)
二.层级结构
- 是时间 处 的输入
- 是时间 处的“记忆”, , 可以是 等
-
是时间
处的输出,如果是预测下个词的话,可能是
输出的属于每个候选词的概率,
和 是参数的矩阵
- 参数复用:每个时间点上用的 , , 都是同一个参数
-
只与
有关系
结构细节: - 1.可以把因状态 视作“记忆体”,捕捉了之前时间点上的信息;
- 2.输出 由当前时间及之前所有的“记忆”共同计算得到;
- 3.实际应用中, 并不能捕捉和保留之前所有的信息;
- 4.不同于CNN,这里的RNN其实整个神经网络都共享一组参数( , , ),极大减小了需要训练和预估的参数量;
- 5.图中的 在有些任务下是不存在的,比如文本情感分析,其实只需要最后的output结果就行。
三.多种RNN
双向RNN:1.有些情况下,当前的输出不只依赖于之前的序列元素,还可能依赖之后的序列元素。比如从一段话踢掉部分词,让你补全。
直观理解:双向RNN叠加
深层双向RNN和双向RNN的区别是每一步/每个时间点我们设定多层结构
4.BPTT算法
MLP(DNN)与CNN用BP算法求偏导
BPTT和BP是一个思路,不过既然有step,就和时间t有关系
1:16:12处
5.生成模型与图像描述
LSTM
1.长时依赖问题
(Long short-term Memory)
LSTM 是RNN的一种,大体结构几乎一样,区别是:1.它的“记忆细胞”被改造过;2.该记的信息会一直传递,不该记的会被“门”截断。
LSTM关键:“细胞状态”
细胞状态类似于传送带。直接在整个链上运行,只有一些少量的线性交互。信息在上面流传保持不变会很容易
LSTM怎么控制“细胞状态”
通过“门”让信息选择性通过,来去除或者增加信息到细胞状态
包含一个sigmoid神经网络曾和一个pointwise乘法操作
sigmoid层输出0到1之间的概率值,描述每个部分有多少量可以通过。0代表“不允许任何量通过”,1就指“允许任何量通过”
LSTM的几个关键“门”与操作
第一步:决定从“细胞状态”中丢弃什么信息
“忘记门”
第二步:决定放什么新信息到“细胞状态”中
层决定什么值需要更新
层创建一个新的候选值向量
上述2步是为状态更新做准备
第三步:更新“细胞状态”
1.更新
为
2.把旧状态与
相乘,丢弃掉我们确定需要丢弃的信息
3.加上
。这就是新的候选值,根据我们决定更新每个状态的程度进行变化
第四步:基于“细胞状态”得到输出
1.首先运行一个sigmoid层来确定细胞状态的哪个部分得到输出
2.接着用tanh处理细胞状态(得到一个在-1到1之间的值),再将它和sigmoid门的输出相乘,输出我们确定要输出的那部分。
3.比如我们可能需要单复数信息来确定输出“他”还是“他们”。
LSTM相较于RNN会较少猪队友的影响,本质是前者求导是加法方式,后者是乘法方式。
变种1:
- 增加“peephole connection”
- 让门层也会接受细胞状态的输入
变种2:
- 通过使用coupled忘记和输入门
- 之前是分开确定需要忘记和添加的信息,这里是一同做出决定。
四.GRU(Gated Recurrent Unit)
- 将忘记门和输入门合成来一个单一的更新门
- 同样还混合来细胞状态和隐藏状态,和其他一些改动
- 比标准LSTM简单