长短期记忆网络(Long Short-Term Memory networks( 四 )


示例:
你有一段话,这段话有100个字,你经过一种作用(e.g. ),每个字都用一个300维的向量表示 。那么这100个字是有先后顺序的,也就是时序信息的 。所以,你现在相当于有一个[100,300]的矩阵,这就是你的input 。现在,有一个神奇的DL层,经过这个层之后呢,你原来的[100, 300]矩阵,就会变成[100,128]的矩阵 。这里的300维降到128维,可以想“全连接”层,也就是相当于过了一个隐含层,得到了隐含表达( ) 。
上面提到的神奇的DL层就是LSTM!
假如现在处理第50个字:第50个字
(300维)以及前面49个字的隐状态,也就是别的答案里的cell的状态,
(128维),这两个会拼接在一起形成一个428维的输入 。这个输入会在当前的cell中,分别经过那4个小黄框 。每个小黄框的输出都被设定成为128维度(就是你赋给units的值),所以后面的一些列操作都是在128维基础上进行相乘、相加(就是图里的红色的小圆圈) 。一系列操作之后,你会产生一个
,也是128维度的,如此进行下去...
8 LSTM 反向传播
详见:LSTM反向传播求导_意念回复的博客-CSDN博客_lstm反向求导
9LSTM为什么可以解决梯度消失的问题?
如果是多个时间步,就是多个类似公式的累乘 。从这一步的结果中我们可以发现,对于普通的RNN,
的最终要么总是大于1,要么总是在[0, 1]范围内,这将导致梯度消失或者梯度爆炸 。其结果的取值范围并不一定局限在[0,1]中,而是有可能大于1的 。而对于LSTM,
在任何时间步,该值可以大于1,或者在[0, 1]范围内 。
LSTM增加了更多回传梯度的路径,只要一条路径没有梯度消失,那么梯度消失的问题就得到了改善 。
那么什么情况下大于1?
这个由LSTM自身的权值决定,那权值从何而来?当然是学习得到的,这便是LSTM牛逼之处,依靠学习得到权值去控制依赖的长度,这便是LSTM缓解梯度消失的真相 。综上可以总结为两个事实:
1、cell state传播函数中的“加法”结构确实起了一定作用,它使得导数有可能大于1;
2、LSTM中逻辑门的参数可以一定程度控制不同时间步梯度消失的程度 。
最后,LSTM依然不能完全解决梯度消失这个问题,有文献表示序列长度一般到了三百多仍然会出现梯度消失现象 。如果想彻底规避这个问题,还是好用 。
10 LSTM的问题
[LSTM]时间序列预测存在的问题--滑动窗口是一把双刃剑【持续更新】:[LSTM]时间序列预测存在的问题--滑动窗口是一把双刃剑【持续更新】 - 百度文库
神经网络的参数数目和计算过程
lstm的计算公式是:
假设=150,=64,那么
在的torch.nn.LSTM模块中,会把几个向量按0方向拼接在一起:
所以总的参数数目是256*150 +256+256*64 +256= 55296.
归纳一下就是:
假设=x,=h,那么这个LSTM模型的参数数目就是:4*h*x + 4*h + 4*h*h + 4*h = 4*h*(x+h+2)
LSTM神经网络的计算过程:
假设=150,=64,那么单个时间步的计算过程如下:
星号*表示逐元素相乘 。
吴恩达视频:【中英字幕】吴恩达深度学习课程第五课 — 序列模型_哔哩哔哩
如何简单的理解LSTM——其实没有那么复杂:如何简单的理解LSTM——其实没有那么复杂 - 简书
LSTM :
用 LSTM 做时间序列预测的一个小例子:用 LSTM 做时间序列预测的一个小例子 - 简书
LSTM的计算过程,权重参数数目,,