李宏毅深度学习笔记(十三)LSTM(长短期记忆网络)

1.结构

李宏毅深度学习笔记(十三)LSTM(长短期记忆网络)_第1张图片

2.计算

李宏毅深度学习笔记(十三)LSTM(长短期记忆网络)_第2张图片例1:
李宏毅深度学习笔记(十三)LSTM(长短期记忆网络)_第3张图片假设 x 1 x_1 x1 x 2 x_2 x2 x 3 x_3 x3均为输入,当 x 2 = 1 x_2=1 x2=1的时候将 x 1 x_1 x1加入记忆单元,当 x 2 = − 1 x_2=-1 x2=1时将将记忆单元清空,当 x 3 = 1 x_3=1 x3=1的时候输出记忆单元里面的数值。根据规则,最开始记忆单元里面存储的是0,当输入 x 1 = 1 x_1=1 x1=1时因为 x 2 = 0 x_2=0 x2=0 x 3 = 0 x_3=0 x3=0所以记忆单元和输出都不工作,到了第二列,因为 x 1 = 3 x_1=3 x1=3 x 2 = 1 x_2=1 x2=1 x 3 = 0 x_3=0 x3=0,所以将 x 1 = 3 x_1=3 x1=3加入记忆单元,输出依旧为0,第三列, x 1 = 2 x_1=2 x1=2 x 2 = 0 x_2=0 x2=0 x 3 = 0 x_3=0 x3=0,所以 x 1 = 2 x_1=2 x1=2不会被加入到记忆单元,输出依旧为0,第四列 x 1 = 4 x_1=4 x1=4 x 2 = 1 x_2=1 x2=1 x 3 = 0 x_3=0 x3=0,所以 x 1 = 4 x_1=4 x1=4会被加入到记忆单元此时记忆单元变为7,输出依然为零,直到出现 x 3 = 1 x_3=1 x3=1,记忆单元的数才会被输出。

例2:
李宏毅深度学习笔记(十三)LSTM(长短期记忆网络)_第4张图片
还是假设最开始记忆单元里面储存的是0,经过函数 g ( x ) g(x) g(x)可以得到3,经过Input Gate的sigmoid函数可以求出1,经过Output Gate的sigmoid函数计算出0,经过Forget Gate的sigmoid函数计算出1,然后根据上面的公式就可以算出最终的输出。
李宏毅深度学习笔记(十三)LSTM(长短期记忆网络)_第5张图片

3.LSTM与传统神经网络的联系

我们只要把LSTM看作是传统神经网络的一个神经元(neuron)即可
李宏毅深度学习笔记(十三)LSTM(长短期记忆网络)_第6张图片另外,LSTM需要四个输入
李宏毅深度学习笔记(十三)LSTM(长短期记忆网络)_第7张图片

4.LSTM的最终形态

李宏毅深度学习笔记(十三)LSTM(长短期记忆网络)_第8张图片LSTM的四个输入都是从最初始的x乘以不同的权重得来的,然后还要考虑上一个时间点的 c t c^t ct h t h^t ht

5.LSTM的数学公式

将上图的LSTM封装起来就是:
李宏毅深度学习笔记(十三)LSTM(长短期记忆网络)_第9张图片输入 x t x_t xt和上一个时间点的隐藏状态 h t − 1 h_{t-1} ht1相加经过一个sigmoid函数得 f t f_t ft
所以遗忘门(foget gate)的路径和式子是:
李宏毅深度学习笔记(十三)LSTM(长短期记忆网络)_第10张图片输入 x t x_t xt和上一个时间点的隐藏状态 h t − 1 h_{t-1} ht1相加经过一个sigmoid函数得 i t i_t it,这是一个输入门,
李宏毅深度学习笔记(十三)LSTM(长短期记忆网络)_第11张图片记忆单元 C t C_t Ct的值由上面提到的几个式子决定:
李宏毅深度学习笔记(十三)LSTM(长短期记忆网络)_第12张图片
输出 o t o_t ot和这一个时刻的隐藏状态 h t h_t ht式子如下
李宏毅深度学习笔记(十三)LSTM(长短期记忆网络)_第13张图片注: [ h t − 1 , x t ] [h_{t-1},x_t] [ht1,xt]表示把两个向量连接成一个更长的向量

Pytorch中LSTM的参数与案例理解.
Pytorch中文文档.
LSTM.
重推:详解LSTM.
刘建平讲LSTM.
pytorch实现LSTM.
外国大神的博文.
Understanding LSTM Networks.

你可能感兴趣的:(李宏毅深度学习)