1 普通的RNN:无法学习到时序数据的长期依赖关系,基于时间的反向传播BPTT存在梯度消失和梯度爆炸的缺点。
2 RNN存在的问题:梯度爆炸(反向传播矩阵连乘)和梯度消失(反向传播tanh函数的导数1-y^2;反向传播矩阵连乘);主要是由激活函数tanh和和矩阵连续乘积造成的。矩阵的奇异值和矩阵乘积的结果有一定关系(必要条件)。
3 梯度爆炸的对策:梯度裁剪 if ||g||>=t;g=t/||g||*g;描述为如果梯度的L2范数大于等于阈值,则修正梯度。
4梯度消失对策:LSTM层。
5 LSTM Gate 门:sigmoid函数控制门的开合程度。
记忆单元:c;
隐藏状态:h;
1 输出门:o;控制下一隐藏层 ht 的输出:o=sigmoid(x*Wx+h(t-1)*Wh+b)。 ht=o×tanh(ct) 这里是对应元素的乘积
2 遗忘门:控制记忆单元ct 遗忘不必要的信息:f=sigmoid(x*Wx+h(t-1)*Wh+b)。 ct=f ×c(t-1)
3 新的记忆单元:g=tanh(xt*Wx+h(t-1)*Wh+b);将输入门i和记忆单元g的乘积添加到上一记忆单元c(t-1);
4 输入门:i=sigmoid(x*Wx+h(t-1)*Wh+b);判断新增信息g的各个元素的价值有多大,最终将i×g添加到记忆单元中
5 最终记忆单元:ct=f ×c(t-1)+i×g
6 LSTM不会发生梯度消失(爆炸)的原因:记忆单元反向传播为矩阵的对应元素乘积,每次都基于不同的门值进行对应元素的乘积。
7 LSTM比普通RNN多了记忆单元c;记忆单元只在LSTM层内部接收和传递数据,不向其他层输出
LSTM语言模型:Embedding-->LSTM-->Affine-->Softmax With Loss;实际在处理时序数据时使用Time LSTM。
8 LSTM层:输入C(t-1)和h(t-1)经过tanh或者Sigmoid函数转换计算向下层输出ht,向下一LSTM输入ht和ct。
9 LSTM中包含实质信息时用tanh为激活函数;门大多数情况使用Sigmoid为激活函数。
10 LSTM改进:增加网络深度、深度或时序方向加入Dropout层、Embedding 和 Affine 层权值共享。