附代码 LSTM 详解及 LSTM 解决时间序列预测问题( 二 )


总的来说 , RNN无法处理长期依赖的问题是由于梯度消失的现象所导致的 , 这会使得远距离的信息无法有效传递 。为了解决这个问题 , 改进的RNN模型引入了门控机制 , 可以控制信息的流动和遗忘 , 从而使得RNN可以处理长期依赖关系 。
(3) RNN与LSTM的对比
长短时记忆网络(Long Short-Term  , LSTM)是一种改进的循环神经网络(RNN)模型 , 通过引入门控机制来解决RNN无法处理长期依赖关系的问题 。LSTM模型由和于1997年提出 , 目前已被广泛应用于自然语言处理、语音识别、图像处理等领域 。
所有RNN都具有一种重复神经网络模块的链式的形式 。在标准的RNN中 , 这个重复的模块只有一个非常简单的结构 , 例如一个tanh层 。
激活函数 Tanh 作用在于帮助调节流经网络的值 , 使得数值始终限制在 -1 和 1 之间 。
LSTM同样是这样的结构 , 但是重复的模块拥有一个不同的结构 。具体来说 , RNN是重复单一的神经网络层 , LSTM中的重复模块则包含四个交互的层 , 三个 和一个tanh层 , 并以一种非常特殊的方式进行交互 。
上图中 , σ表示的 激活函数与 tanh 函数类似 , 不同之处在于是把值压缩到 0 ~ 1 之间而不是 -1 ~ 1 之间 。这样的设置有助于更新或忘记信息:
相当于要么是1则记住 , 要么是0则忘掉 , 所以还是这个原则:因记忆能力有限 , 记住重要的 , 忘记无关紧要的 。
对于图中使用的各种元素的图标中 , 每一条黑线传输着一整个向量 , 从一个节点的输出到其他节点的输入 。粉色的圈代表的操作 , 诸如向量的和 , 而黄色的矩阵就是学习到的神经网络层 。合在一起的线表示向量的连接 , 分开的线表示内容被复制 , 然后分发到不同的位置 。
(4) LSTM的核心思想
LSTM的核心思想是引入门控机制来解决RNN无法处理长期依赖关系的问题 。
门是一种选择性地让信息通过的方法 。它们由神经网络层和点乘运算组成 。层输出0到1之间的数字 , 描述每个组件应该通过的数量 。值0表示“不让任何东西通过” , 而值1表示“让所有东西通过” 。
在传统的RNN中 , 信息会在时间步之间传递 , 但是往往会出现梯度消失或爆炸的问题 , 导致RNN无法处理长期依赖关系 。例如 , 在生成文字序列时 , 上一个字符的信息可能需要在多个时间步中传递才能影响到后续的字符 , 而RNN可能会忘记这些信息 。
为了解决这个问题 , LSTM引入了三个门控单元:输入门、遗忘门和输出门 。这些门控单元可以控制信息的流动和遗忘 , 从而有效地解决了梯度消失的问题 。具体来说:
(5) LSTM工作流程 a. 忘记门
当新的输入进入LSTM网络时 , 忘记门会决定哪些信息应该被遗忘或保留 。
忘记门通过一个函数来决定哪些信息需要被遗忘 。在每个时间步 t t t , 忘记门的计算公式如下:
f t = σ ( W f [ x t , h t ? 1 ] + b f ) f_t = \sigma(W_f[x_t, h_{t-1}] + b_f) ft?=σ(Wf?[xt?,ht?1?]+bf?)
其中 ,  W f W_f Wf?是忘记门的权重矩阵 ,  b f b_f bf?是偏置项 ,  x t x_t xt?是当前时间步的输入 ,  h t ? 1 h_{t-1} ht?1?是上一时间步的隐藏状态 。σ \sigma σ是函数 , 将输入值映射到0到1之间的概率值 。
忘记门的输出 f t f_t ft?是一个0到1之间的值 , 表示应该遗忘多少过去的信息 。当 f t f_t ft?接近1时 , 过去的信息会被完全保留;当 f t f_t ft?接近0时 , 过去的信息会被完全遗忘 。