深度学习之长短期记忆网络LSTM

 

LSTM(Long Short-Term Memory networks)是一种时间递归神经网络,是RNN的改进之一,解决了RNN不易处理的远距离信息上下文依赖、梯度消失或梯度爆炸等问题。LSTM的结构类似RNN,区别在于将传统神经元用记忆单元代替,这个单元由遗忘门、输入门和输出门组成,根据规则判断信息期限,长期记忆信息可以传到很深的层,短期记忆信息将很快被遗忘。

所有的递归神经网络都由重复的链式模块组成,标准RNN的重复模块只包含一个tanh;LSTM的重复模块包含3个sigmoid和一个tanh。

 

一、LSTM的结构

LSTM的记忆单元由上下两条线构成,每条线表示向量的传递,上面的线表示隐状态中的细胞状态 C^{(t)}(cell state),类似传送带,直接在整个链上传递,只有少量的线性交互,信息在上面的流传保持不变很容易。

       

下面的线为门控结构(gate)计算,门是一种让信息选择式通过的方法,可以增加或减少细胞状态的信息,LSTM中主要有3个门结构来控制细胞状态。

1、遗忘门

决定上一时刻的细胞状态 C^{(t-1)} 有多少保留到当前时刻 C^{(t)},可以保存很久之前的信息。例如语言模型中预测下一个词时,细胞状态可能包含了当前主语的性别信息(“他”或者“她”)因此可以选出正确的代词;当遇到新的主语时,希望忘记旧的主语选出新的代词。

sigmoid层输出0到1之间的数字,表示信息可以通过门限的比例:0表示不让任何信息通过,1表示让所有信息通过。

        f^{(t)}=\sigma (W_{f}h^{(t-1)}+U_{f}x^{(t)})

       

 

2、输入门

决定当前时刻的输入 x^{(t)} 有多少保存到细胞状态 C^{(t)},可以避免当前无关紧要的内容进入记忆,分为生成临时新状态、更新旧状态两个步骤。sigmoid层决定哪些值需要更新,tanh层创建一个新的候选向量 a^{(t)},为状态更新做准备。

        i^{(t)}=\sigma (W_{i}h^{(t-1)}+U_{i}x^{(t)})

        a^{(t)}=tanh(W_{a}h^{(t-1)}+U_{a}x^{(t)})

       

由于遗忘门和输入门都会作用于细胞状态,将长期记忆 C^{(t-1)}f^{(t)} 相乘,去掉不需要的信息;再加上新的记忆 i^{(t)}*a^{(t)},得到最终更新后的细胞状态,*为Hadamard积:

        C^{(t)}=C^{(t-1)}*f^{(t)}+i^{(t)}*a^{(t)}

       

 

3、输出门

控制细胞状态 C^{(t)} 有多少成为LSTM的输出 h^{(t)}h^{(t)} 由两部分组成:第一部分由 h^{(t-1)}x^{(t)} 进行sigmoid激活得到,第二部分由细胞状态经过tanh激活得到,二者再求Hadamard乘积。

        o^{(t)}=\sigma (W_{o}h^{(t-1)}+U_{o}x^{(t)})

        h^{(t)}=o^{(t)}*tanh(C^{(t)})

       

 

二、LSTM的前向传播

Forget Gate:

        f^{(t)}=\sigma (W_{f}h^{(t-1)}+U_{f}x^{(t)})

Input Gate:

        i^{(t)}=\sigma (W_{i}h^{(t-1)}+U_{i}x^{(t)})

        a^{(t)}=tanh(W_{a}h^{(t-1)}+U_{a}x^{(t)})

Cell State:

        C^{(t)}=C^{(t-1)}*f^{(t)}+i^{(t)}*a^{(t)}

Output Gate:

        o^{(t)}=\sigma (W_{o}h^{(t-1)}+U_{o}x^{(t)})

        h^{(t)}=o^{(t)}*tanh(C^{(t)})

Final Output:

        \hat{y}^{(t)}=\sigma (Vh^{(t)})

假设x^{(t)}\in R^{n\times 1},每个细胞内有d个门结构,上面公式中的W*、U*分别为d\times n,\; d\times d维。W为总权重,I为总输入,则模型预测输出为:

        z^{(t)}=W\cdot I^{(t)}=\begin{bmatrix} \hat{a}^{(t)}\\ \hat{i}^{(t)}\\ \hat{f}^{(t)}\\ \hat{o}^{(t)} \end{bmatrix}=\begin{bmatrix} W_{a} & U_{a}\\ W_{i} & U_{i}\\ W_{f} & U_{f}\\ W_{o} & U_{o} \end{bmatrix}\cdot \begin{bmatrix} x^{(t)}\\ h^{(t-1)} \end{bmatrix}

 

三、LSTM的反向传播

类似RNN中定义δ,LSTM的前向、后向传播如下所示,为了简化表示隐藏了门的结构。

Output:

       \delta h^{(t)}=\frac{\partial L}{\partial h^{(t)}}=V^{T}(o^{(t)}-y^{(t)})

       \delta o^{(t)}=\frac{\partial L}{\partial h^{(t)}}\frac{\partial h^{(t)}}{\partial o^{(t)}}=\delta h^{(t)}*tanh(c^{(t)})

       \delta C^{(t)}=\frac{\partial L}{\partial C^{(t+1)}}\frac{\partial C^{(t+1)}}{\partial C^{(t)}}+\frac{\partial L}{\partial h^{(t)}}\frac{\partial h^{(t)}}{\partial C^{(t)}}

       =\delta C^{(t+1)}*f^{(t+1)}+\delta h^{(t)}*o^{(t)}*(1-tanh^{2}(C^{(t)}))

Cell update:

       \delta a^{(t)}=\frac{\partial L}{\partial C^{(t)}}\frac{\partial C^{(t)}}{\partial a^{(t)}}=\delta C^{(t)}*i^{(t)}

       \delta i^{(t)}=\frac{\partial L}{\partial C^{(t)}}\frac{\partial C^{(t)}}{\partial i^{(t)}}=\delta C^{(t)}*a^{(t)}

       \delta f^{(t)}=\frac{\partial L}{\partial C^{(t)}}\frac{\partial C^{(t)}}{\partial f^{(t)}}=\delta C^{(t)}*C^{(t-1)}

       \delta C^{(t-1)}=\frac{\partial L}{\partial C^{(t)}}\frac{\partial C^{(t)}}{\partial C^{(t-1)}}=\delta C^{(t)}*f^{(t)}

Input:

       \delta \hat{a}^{(t)}=\delta a^{(t)}*(1-tanh^{2}a^{(t)})

       \delta \hat{i}^{(t)}=\delta i^{(t)}*i^{(t)}*(1-i^{(t)})

       \delta \hat{f}^{(t)}=\delta f^{(t)}*f^{(t)}*(1-f^{(t)})

       \delta \hat{o}^{(t)}=\delta o^{(t)}*o^{(t)}*(1-o^{(t)})

       \delta z^{(t)}=\begin{bmatrix} \delta \hat{a}^{(t)}\\ \delta \hat{i}^{(t)}\\ \delta \hat{f}^{(t)}\\ \delta \hat{o}^{(t)} \end{bmatrix}

       \delta W=\sum_{t=1}^{T}\delta z^{(t)}\cdot [x^{(t)},h^{(t-1)}]

 

四、LSTM结构的变体

1、增加窥视孔层peephole connections

让门层也接受细胞状态的输入,增加了下图中标注的线(许多论文会加入部分的peephole而不是所有的都加)。

       f^{(t)}=\sigma (W_{f}h^{(t-1)}+W_{f{}'}C^{(t-1)}+U_{f}x^{(t)})

       i^{(t)}=\sigma (W_{i}h^{(t-1)}+W_{i{}'}C^{(t-1)}+U_{i}x^{(t)})

       o^{(t)}=\sigma (W_{o}h^{(t-1)}+W_{o{}'}C^{(t-1)}+U_{o}x^{(t)})

       

 

2、coupled遗忘门和输入门

通过耦合忘记门和输入门,不再单独考虑信息的遗忘或增加,而是一起进行考虑。我们仅在要输入信息时遗忘旧的信息,仅在要遗忘旧信息时输入新信息。

       C^{(t)}=f^{(t)}*C^{(t-1)}+(1-f^{(t)})*a^{(t)}

       

 

3、Gated Recurrent Unit(GRU)

Cho, et al. (2014)将遗忘门和输入门合并成为一个单一的更新门,同时合并了细胞状态和隐藏状态,结构比LSTM更加简单,是非常流行的LSTM变体。

       z^{(t)}=\sigma (W_{z}\cdot [h^{(t-1)},x^{(t)}])

       r^{(t)}=\sigma (W_{r}\cdot [h^{(t-1)},x^{(t)}])

       \tilde{h}^{(t)}=tanh (W\cdot [r^{(t)}*h^{(t-1)},x^{(t)}])

       h^{(t)}=(1-z^{(t)})*h^{(t-1)}+z^{(t)}*\tilde{h}^{(t)}

       

 

参考资料

http://colah.github.io/posts/2015-08-Understanding-LSTMs/

http://arunmallya.github.io/writeups/nn/lstm/index.html#/

https://www.cnblogs.com/pinard/p/6519110.html

https://www.jianshu.com/p/dcec3f07d3b5

 

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值