深入理解LSTM神经网络

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/menc15/article/details/71271566

本文内容及图片主要参考:Understanding LSTM Networks

LSTM核心思想

LSTM最早由 Hochreiter & Schmidhuber 在1997年提出,设计初衷是希望能够解决神经网络中的长期依赖问题,让记住长期信息成为神经网络的默认行为,而不是需要很大力气才能学会。

LSTM记忆单元

LSTM-RNN展开图

图例

下面是对LSTM单元内各部分的理解:

LSTM的关键是单元状态(cell state),即图中LSTM单元上方从左贯穿到右的水平线,它像是传送带一样,将信息从上一个单元传递到下一个单元,和其他部分只有很少的线性的相互作用。
这里写图片描述

LSTM通过“门”(gate)来控制丢弃或者增加信息,从而实现遗忘或记忆的功能。“门”是一种使信息选择性通过的结构,由一个sigmoid函数和一个点乘操作组成。sigmoid函数的输出值在[0,1]区间,0代表完全丢弃,1代表完全通过。一个LSTM单元有三个这样的门,分别是遗忘门(forget gate)、输入门(input gate)、输出门(output gate)

门(gate)

  • 遗忘门(forget gate):遗忘门是以上一单元的输出ht1和本单元的输入xt为输入的sigmoid函数,为Ct1中的每一项产生一个在[0,1]内的值,来控制上一单元状态被遗忘的程度。
    遗忘门(forget gate)
  • 输入门(input gate):输入门和一个tanh函数配合控制有哪些新信息被加入。tanh函数产生一个新的候选向量Ct~,输入门为Ct~中的每一项产生一个在[0,1]内的值,控制新信息被加入的多少。至此,我们已经有了遗忘门的输出ft,用来控制上一单元被遗忘的程度,也有了输入门的输出it,用来控制新信息被加入的多少,我们就可以更新本记忆单元的单元状态了,
    Ct=ftCt1+itCt~

    输入门(input gate)
  • 输出门(output gate):输出门用来控制当前的单元状态有多少被过滤掉。先将单元状态激活,输出门为其中每一项产生一个在[0,1]内的值,控制单元状态被过滤的程度。
    这里写图片描述

LSTM变种

上面描述的LSTM是一种标准版本,并不是所有LSTM都和上面描述的一模一样。事实上,似乎每篇论文用到的LSTM都有一点细微的不同。

一种比较流行的LSTM变种如下图所示,最早由Gers & Schmidhuber在2000年提出。这种方法增加了“peephole connections”,即每个门都可以“窥探”到单元状态。这里,遗忘门和输入门是与上一单元状态建立连接,而输出门是与当前单元状态建立连接。
这里写图片描述

有一个变种取消了输入门,将新信息加入的多少与旧状态保留的多少设为互补的两个值(和为1),即:只有当需要加入新信息时,我们才会去遗忘;只有当需要遗忘时,我们才会加入新信息。
这里写图片描述

另外一个值得关注的变种看起来很好玩,叫做Gated Recurrent Unit(GRU),最早由Cho, et al.在2014年提出。这种方法将遗忘门和输入门连入了一个“更新门”(update gate),同时也合并了隐藏状态ht和单元状态Ct,最终的结果比标准LSTM简单一些。

当然,变种有很多,是列不过来的。有人专门比较总结过LSTM的变种,并比较了其效果,结果显示这些变种表现差不多,具体参见Greff, et al. (2015)Jozefowicz, et al. (2015)

阅读更多
换一批

没有更多推荐了,返回首页