跳转至

LSTM

LSTM即Long Short-Term Memory,长短期记忆网络,其和GRU类似,都是为了解决长期依赖问题。

不同于GRU的是,LSTM有3个门,结构更加复杂,但是大体思路是不变的.

LSTM的结构

LSTM存在3个门,分别是更新门,遗忘门和输出门,并且c这个时候不再代替a的位置,而是作为一个辅助变量存在.

首先,三个门的值都根据当前的输入和上一个激活值计算得到:

\[ \begin{aligned} \Gamma^{<t>}_u&=\sigma(W_{u}[c^{<t-1>},x^{<t>}]+b_u)\\ \Gamma^{<t>}_f&=\sigma(W_{f}[c^{<t-1>},x^{<t>}]+b_f)\\ \Gamma^{<t>}_o&=\sigma(W_{o}[c^{<t-1>},x^{<t>}]+b_o) \end{aligned} \]

候选值的计算和GRU类似,但是,其不再依赖于上一级输入的候选值,而是仅仅只依赖于当前的输入值和上一个激活值:

\[ \widetilde{c}^{<t>}=tanh(W_{c}[c^{<t-1>},x^{<t>}]+b_c) \]

然后,记忆变量c的更新就可以用更新门,遗忘门和候选值来计算:

\[ c^{<t>}=\Gamma^{<t>}_u\widetilde{c}^{<t>}+\Gamma^{<t>}_f c^{<t-1>} \]

最后,当前的激活值a就可以使用输出门和c来计算:

\[ a^{<t>}=\Gamma^{<t>}_o tanh(c^{<t>}) \]

长短期记忆机制

  1. 长期记忆
  2. 通过记忆单元 \(c^{<t>}\) 实现,它像一条传送带一样贯穿整个序列
  3. 遗忘门 \(\Gamma^{<t>}_f\) 控制历史信息的保留程度
  4. 更新门 \(\Gamma^{<t>}_u\) 控制新信息的写入程度
  5. 这种设计使得重要的历史信息可以在很长的序列中被保存

  6. 短期记忆

  7. 通过隐藏状态 \(a^{<t>}\) 实现
  8. 输出门 \(\Gamma^{<t>}_o\) 控制当前时刻需要输出的信息
  9. 主要关注当前时刻的任务相关信息

  10. 信息流控制

  11. 遗忘门:决定丢弃哪些历史信息
  12. 更新门:决定添加哪些新信息
  13. 输出门:决定输出哪些信息
  14. 这种精细的控制机制使得 LSTM 能够在长序列中有选择地记住和遗忘信息