文章

10 长短期记忆网络(LSTM)

10 长短期记忆网络(LSTM)

1. LSTM 的核心思想

  LSTM 是由 Sepp Hochreiter 和 Jurgen Schmidhuber 提出的一种改进型 RNN 单元,旨在解决传统 RNN 中的梯度消失问题,从而能够学习序列中非常长期的依赖关系。它通过引入“门控机制”来控制信息的流动,比 GRU 更加强大和通用。

2. LSTM 的主要公式与结构

  LSTM 的核心在于对记忆细胞(Cell State, $c$ 的更新方式。与 GRU 不同,LSTM 拥有三个门,分别控制信息的遗忘、输入和输出。

2.1 门的计算

  所有门都基于当前输入 $x^{\langle t \rangle}$ 和上一时刻的隐藏状态 $a^{\langle t-1 \rangle}$ 计算得出(注:标准版本中不直接使用 $c^{\langle t-1 \rangle}$,除非使用“窥视孔连接”):

  • 更新门(Input Gate, $\Gamma_u$ $i_t$ :决定有多少新信息被写入记忆细胞。

    \[\Gamma_u = \sigma(W_u [a^{\langle t-1 \rangle}, x^{\langle t \rangle}] + b_u)\]
  • 遗忘门(Forget Gate, $\Gamma_f$ :决定保留多少旧的记忆细胞状态。这是 LSTM 的关键创新,允许模型主动“遗忘”无关信息。

    \[\Gamma_f = \sigma(W_f [a^{\langle t-1 \rangle}, x^{\langle t \rangle}] + b_f)\]
  • 输出门(Output Gate, $\Gamma_o$ :决定当前记忆细胞状态有多少被输出到隐藏状态。

    \[\Gamma_o = \sigma(W_o [a^{\langle t-1 \rangle}, x^{\langle t \rangle}] + b_o)\]

2.2 候选记忆细胞值

  计算新的候选值 $\tilde{c}^{\langle t \rangle}$,通常使用 $\tanh$ 激活函数:

\[\tilde{c}^{\langle t \rangle} = \tanh(W_c [a^{\langle t-1 \rangle}, x^{\langle t \rangle}] + b_c)\]

2.3 记忆细胞状态更新 ($c^{\langle t \rangle}$)

  这是 LSTM 最核心的公式。它结合了遗忘门(保留旧值)和更新门(添加新值):

\[c^{\langle t \rangle} = \Gamma_f * c^{\langle t-1 \rangle} + \Gamma_u * \tilde{c}^{\langle t \rangle}\]
  • 注意:这里使用了元素对应乘积($*$)。$\Gamma_f$ 控制旧状态 $c^{\langle t-1 \rangle}$ 的保留比例,$\Gamma_u$ 控制新候选值 $\tilde{c}^{\langle t \rangle}$ 的加入比例。这与 GRU 中直接用 $(1-\Gamma_u)$ 不同,LSTM 将“遗忘”和“更新”解耦为两个独立的门。

2.4 隐藏状态输出 ($a^{\langle t \rangle}$)

  最终输出的隐藏状态由输出门控制:

\[a^{\langle t \rangle} = \Gamma_o * \tanh(c^{\langle t \rangle})\]

3. 关键特性解析

  • 长期依赖能力:只要遗忘门 $\Gamma_f$ 设置为接近 1,更新门 $\Gamma_u$ 设置为接近 0,记忆细胞 $c$ 的值就可以几乎无损地沿着时间轴传递($c^{\langle t \rangle} \approx c^{\langle t-1 \rangle}$)。这使得 LSTM 非常适合捕捉长距离依赖。
  • 窥视孔连接(Peephole Connection)

    • 在标准 LSTM 中,门控值仅取决于 $a^{\langle t-1 \rangle}$ 和 $x^{\langle t \rangle}$。
    • 在变体中,门控值也可以直接“偷窥”上一时刻的记忆细胞状态 $c^{\langle t-1 \rangle}$。
    • 这种连接通常是一对一的(即 $c$ 的第 $k$ 个元素只影响门的第 $k$ 个元素),增加了模型的灵活性。

4. LSTM 与 GRU 的对比

特性GRU (Gated Recurrent Unit)LSTM (Long Short-Term Memory)
门的数量2 个:更新门 ($\Gamma_u$)、重置门 ($\Gamma_r$)3 个:更新门 ($\Gamma_u$)、遗忘门 ($\Gamma_f$)、输出门 ($\Gamma_o$)
记忆状态隐藏状态 $a$ 和记忆内容合二为一有独立的记忆细胞 $c$ 和隐藏状态 $a$
复杂度结构简单,参数较少结构复杂,参数较多
计算效率运行更快,更容易构建大规模网络计算开销稍大
灵活性较简单,是 LSTM 的有效简化版更强大、更灵活,能处理更复杂的依赖关系
历史地位较新(2014年提出),源于对 LSTM 的简化较早(1997年提出),是长期的默认选择

5. 如何选择?

  笔记中指出没有统一的准则,但提供了以下建议:

  • LSTM:历史上更优先的选择,功能更强大,适用于各种复杂任务。如果你必须选一个且不确定,LSTM 通常是安全的默认尝试。
  • GRU:近年来获得大量支持。由于其简单性计算高效性,在需要构建超大网络或计算资源受限时,GRU 往往表现优异且效果与 LSTM 相当。

  总结:LSTM 通过引入独立的遗忘门输出门,以及分离的记忆细胞,实现了对信息流更精细的控制,使其成为处理长序列数据的强大工具。尽管 GRU 因其简洁高效而日益流行,LSTM 凭借其灵活性和深厚的理论基础,依然是深度学习序列模型中的重要基石。

本文由作者按照 CC BY 4.0 进行授权