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