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 凭借其灵活性和深厚的理论基础,依然是深度学习序列模型中的重要基石。