Unstanding LSTM

1.RNNs

  我们可以把RNNs看成一个普通网络做多次复制后叠加在一起组合起来,每一个网络都会把输出传递到下一个网络中。

  把RNNs按时间步上展开,就得到了下图;

  

   从RNNs链状结构可以容易理解到他是和序列信息相关的。

2.长时期依赖存在的问题

  随着相关信息和预测信息的间隔增大,RNNs很难把他们关联起来了。

  但是,LSTMs能解决这个问题

3. LSTM网络

  Long Short Term Memory networks(长短期记忆网络)通常叫为LSTMS。LSTMs被设计用于避免前面提到的长时期依赖,他们的本质就是能够记住很长时期的信息。

  RNNs都是由完全相同的结构复制而成的,在普通的RNNs中,这个模块非常简单,比如仅是单一的tanh层。

  

   LSTMs也有类似的结构,不过重复模块部分不是一个简单的tanh层,而是4个特殊层。

   

   先定义用到的符号:

  

3.1 LSTMs的核心思想

  LSTMs最关键地方在于cell,即绿色部分的状态和结构图上横穿的水平线

  

  cell状态像是一条传送带,向量从cell上传过,只做了少量的线性运算,信息很容易穿过cell而不做改变(实现了长时期的记忆保留)

  LSTMs通过门(gates)的结构来实现增加或者删除信息。

  门可以实现选择性地让信息通过,通过一个sigmod神经层和一个逐点相乘的操作来实现。

  

   sigmod层输出的值为0到1,表示对应信息应该被通过的权重,0表示不让通过,1表示让所有信息通过。

  每个LSTM由3个门结构,来实现保护和控制cell状态,分别是遗忘门forget gate layer、传入门input gate layer、输出门output gate layer。

3.2逐步理解LSTM

  3.2.1遗忘门

    LSTM第一步是要决定丢弃哪些信息,这通过一个叫做forget gate layer的sigmod层实现。

    

   一个根据所有上下文信息来预测下一个词的语言模型,每个cell状态都应该保存当前主语的性别(保留信息),接下来才能正确使用代词,当我们又开始描述一个新主语的时候,就用改把上文中的主语性别给忘了才对(忘记信息)

  3.2.2传入门

  LSTM下一步是要决定哪些新信息要加入到cell 状态中来。包括两个部分,1.一个叫input gate layer的sigmod层决定哪些值更新。2.一个tanh层创建一个向量,就是备选的用来更新的内容Ct  

  

   在我们的语言模型中,我门把新的主语的性别信息加入cell状态中,替换老的状态信息。

  有了上述结构,就能够更新cell状态了Ct-1 to  Ct

  

  3.2.3输出门

  最后我们要来决定输出什么值,这个输出值是依赖于cell的状态Ct,还要经过一个过滤处理。

  首先,我门使用一个sigmoid层决定Ct中哪部分信息被输出,然后把Ct通过一个tanh层(把数值都归到-1到1),把tanh层的输出和sigmoid层计算出来的权重相乘,得到最后的输出结果。

  在语言模型中,模型刚刚接触了一个代词,接下来可能要输出一个动词,这个输出可能和代词的信息息息相关了,比如动词应该采用单数形式还是复数形式,所以我们要把刚学到的和代词相关的信息加入到cell状态中,才能进行正确的预测。

  

  

猜你喜欢

转载自www.cnblogs.com/wengyuyuan/p/11795819.html