深入理解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):
先来看下tensorflow 中 BasicLSTMCell 的 "__init__" 方法。可以看出,核心参数是num_units,理解这个参数是理解LSTM的关键。

从上图可以看到中间的 cell 里面有四个黄色小框,每一个小黄框代表一个前馈网络层,就是像下图中的经典神经网络,num_units就是这个层的隐藏神经元个数!
三个门控单元的激活函数是sigmoid,另一个激活函数为tanh。
未完待续……


浙公网安备 33010602011771号