深入理解LSTM

网络结构

 

  各符号含义:

   
  每个黄色框代表一个前馈网络层(理解LSTM很重要的一步);
  粉色圆圈表示点操作(逐点相乘、逐点相加);
  单箭头表示数据流向(即正向传播);
  箭头合并表示向量的合并(concat)操作;
  箭头分叉表示向量的拷贝操作。

分步骤理解

  第一步就是决定细胞状态需要丢弃哪些信息。这部分操作是通过一个称为忘记门的sigmoid单元来处理的。
  下一步是决定给细胞状态添加哪些新的信息。
  更新细胞核信息。 
  更新完细胞状态后来判断输出细胞的哪些状态特征。

   

  上面这些都是老生常谈的东西了,很多帖子介绍到这一步就开始介绍LSTM的各种变形了,此刻的你对LSTM真的没什么疑问了吗?例如 LSTM是怎么解决RNN中梯度消失问题的?

深入了解LSTM

class BasicLSTMCell(LayerRNNCell):
  def __init__(self,
               num_units,
               forget_bias=1.0,
               state_is_tuple=True,
               activation=None,
               reuse=None,
               name=None,
               dtype=None,
               **kwargs):
View Code

  先来看下tensorflow 中 BasicLSTMCell 的 "__init__" 方法。可以看出,核心参数是num_units,理解这个参数是理解LSTM的关键。

   

  从上图可以看到中间的 cell 里面有四个黄色小框,每一个小黄框代表一个前馈网络层,就是像下图中的经典神经网络,num_units就是这个层的隐藏神经元个数!

  三个门控单元的激活函数是sigmoid,另一个激活函数为tanh。

  未完待续……

  

  

 

 

 

 

 

 

posted @ 2021-02-23 19:18  一介珷玞  阅读(311)  评论(0)    收藏  举报