理解LSTM

时间:2023-03-09 01:15:43
理解LSTM

本文基于Understanding-LSTMs进行概括整理,对LSTM进行一个简单的介绍

什么是LSTM

LSTM(Long Short Term Memory networks)可以解决传统RNN的长期依赖(long-term dependencies)问题。它对传统RNN的隐层进行了结构上的改进。

LSTM的内部结构

理解LSTM
这是传统的RNN的结构,内部有一个tanh层
理解LSTM
LSTM和传统RNN结构类似,然而内部结构却有所不同

理解LSTM
图中所示的水平线就是LSTM中的状态信息,可以把这个理解为记忆(memory)

下面介绍门的概念,LSTM中的门可以选择性的控制信息的流动,通常由一个sigmoid神经网络层和一个point wise(或者叫element wise)的乘法操作组成。
理解LSTM

LSTM中有三种门:

  • 遗忘门:
    理解LSTM
    可以看到这里的\(f_{t}\)由输入的\(x_t\)和\(h_{t-1}\)得到,用来控制\(C_{t-1}\)中的信息的遗忘程度。\(f_{t}\)中的每个值都是0-1中的一个数,下界0代表完全遗忘,上界1代表完全不变。

  • 输入门:
    理解LSTM
    遗忘门决定了历史状态信息的遗忘程度,那么输入门的作用就是往状态信息中添加新东西。同样,由输入的\(x_t\)和\(h_{t-1}\)得到当前的\(i_t\)用以控制新状态信息的更新程度。这里新状态信息\(\tilde{C}\)也是通过输入的\(x_t\)和\(h_{t-1}\)计算得出。

理解LSTM
那么当前新的状态信息\(C_t\)就很显然可以通过上式计算得出,通俗的说就是遗忘一些旧信息,更新一些新信息进去。

  • 输出门:
    理解LSTM
    最后就是输出门了。类似地,根据\(x_t\)和\(h_{t-1}\)得出\(o_{t}\)用以控制哪些信息需要作为输出。

概括一下:

  • 状态信息\(C_t\)的依赖于遗忘门\(f_t\)和输入门\(i_t\)
  • 遗忘门\(f_t\)和输入门\(i_t\)依赖于输入参数中的\(h_{t-1}\)
  • 而当前隐层输出\(h_t\)依赖于\(C_t\)

LSTM的一些变种

增加peephole connections

Gers & Schmidhuber (2000)提出的增加peephole connections
理解LSTM
图中所示,在所有的门之前都与状态线相连,使得状态信息对门的输出值产生影响。但一些论文里只是在部门门前加上这样的连接,而不是所有的门

耦合遗忘门和输入门

理解LSTM
这一种变体是将遗忘门和输入门耦合在一起,简单来说就是遗忘多少就更新多少新状态,没有遗忘就不更新状态,全部遗忘那就新状态全部更新进去。

GRU

这是目前比较流行的LSTM变种,不仅将遗忘门和输入门统一为更新们,而且将h和c也给合并了。可参考Cho, et al. (2014)
理解LSTM

参考

Understanding-LSTMs