欢迎光临 x-algo
关注算法在工业界应用
Hi, 这是一个关注大数据算法在工业界应用的网站

LSTM直观理解

了解LSTM之前可以先了解一下RNN,LSTM(Long Short-Term Memory)出现的原因是为了解决RNN对「长依赖」的句子上表现不好。这里的解决方案也很直观,就是通过合理的激活一些信息,让距离不是信息强度的决定性因素。看完本文之后可以对LSTM的三个门存在的物理意义有一个直观的理解,并且可以随手画出来其内部结构。

LSTM有很多变种,这里只介绍其中几种,本文内容翻译自此处

 

LSTM结构

RNN原始结构

 

LSTM3-SimpleRNN

LSTM结构图

LSTM3-chain

上图看起来很复杂,其实分开解释就很简单。LSTM和普通的RNN相比,多了几个门。上图中,各个节点的说明如下:

LSTM2-notation

设计理念

我们设计LSTM的目的很明确,就是要「控制信息传递」,通过控制信息的传递,实现激活long-term的信息。

那么具体如何激活呢,一种简单的方式就是通过两个矩阵的「点乘」,就是两个大小完全一致的矩阵,对应位置相乘;如果一个矩阵的数值范围是[0,1],点乘就可以看做是:0是抑制,1是激活。

cell信息为例子,cell信息的位置就是水平的那条线,如下图:

LSTM3-C-line

图中的x表示的就是「点乘」。每一个点乘,都可以看做是LSTM中的一个门,所以门的存在是为了阻止/放过信息的。接下来介绍各个门。

三个门

遗忘门是控制cell的信息传递的,可以很容易的理解,控制cell的信息可以通过上一轮的输出 \(h_{t-1}\) 和这一轮的输入 \(x_t\) 决定,激活函数为sigmoid,保证输出值为[0,1],具体如下图:

LSTM3-focus-f

 

接下来就是「输入门」,用来控制输入信息中( \(h_{t-1},x_{t}\) ),哪些信息可以加到cell中,具体位置如下图:

LSTM3-focus-i

经过两步的操作,cell的信息更新完成,整个过程可以表示为:

LSTM3-focus-C

现在我们已经拿到了合并后的cell信息,接下来需要提取出来输出信息, 这里通过引入「输出门」,决定cell中什么信息可以输出,具体逻辑如下图:

LSTM3-focus-o

 

变体

基本的LSTM结构已经介绍完了,LSTM有很多变体,其中值得一说的有,允许「三个门」看到cell信息,具体结构:

LSTM3-var-peepholes

第二个变体比较有意思,对cell信息,遗忘和保持是相对的,如果我想遗忘一些信息,那么我就是希望记住另外一部分信息,所以逻辑上可以认为:「 输入门 = 1 - 遗忘门」,如下图:

LSTM3-var-tied

还有一个2014年提出来的结构GRU(Gated Recurrent Unit),结构比较简单,这个结构将cell去掉了,使用 \(h_{t-1}\) 替代了cell的功能,具体结构为:

LSTM3-var-GRU

 

扩展

从LSTM到Seq2Seq

LSTM+CRF介绍

总结

LSTM中可以看到Attention model和ResNet的影子,

 

参考

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

未经允许不得转载:大数据算法 » LSTM直观理解

评论 抢沙发

*

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

关注大数据算法在工业界应用

本站的GitHub关于本站