时间回到 1997 年。辣妹组合 (Spice Girls) 正高居音乐排行榜榜首,《泰坦尼克号》即将在影院上映,而两位研究员 Sepp HochreiterJürgen Schmidhuber 发表了一篇论文,这篇论文最终将成为现代人工智能革命的基石。
这篇题为《长短期记忆》 (Long Short-Term Memory) 的论文提出了一种新型神经网络架构,能够将信息记忆极长时间。

在当时,这是一个巨大的挑战。神经网络存在记忆问题——它们是出了名的健忘。试图让一个标准循环神经网络 (RNN) 记住 100 个时间步之前发生的事情,就像读完整本书后试图回忆第一句话一样,信息几乎肯定会消失,被新数据的洪流冲刷得一干二净。

这种失忆症是将人工智能应用于文本、语音或时间序列等序列数据的重大障碍。
如果你在句子结尾就忘了开头,还怎么翻译一个句子?
如果你无法看到跨越几天的模式,又怎么预测股票价格?

长短期记忆 (LSTM) 网络就是答案。它引入了一种专门为克服这一根本限制而设计的新颖架构。
本文将深入解读这篇开创性的 1997 年论文——剖析 LSTM 旨在解决的问题、其背后的巧妙设计,以及那些证明它不仅仅是又一次渐进式改进,而是真正突破的实验。


循环神经网络的记忆衰退

要理解为什么 LSTM 如此重要,我们首先需要了解臭名昭著的梯度消失问题

循环神经网络 (RNN) 是为处理序列而设计的。与标准前馈网络不同,RNN 有一个循环结构,允许信息在时间步之间持续存在。在每个时间步 \(t\),网络接收:

  • 输入: \(x(t)\)
  • 前一隐藏状态: \(h(t-1)\)

并利用这两者产生:

  • 输出
  • 新的隐藏状态: \(h(t)\)

这个隐藏状态就是网络的“记忆”。

训练 RNN 通常使用一种名为时间反向传播 (BPTT) 的算法。
它是标准反向传播的变体: 网络在时间上被展开,形成一个由重复计算构成的长链,每个时间步的计算共享权重。最终输出的误差会通过该展开的网络反向传播,以更新权重。

问题在于:
为了更新权重,我们需要误差关于权重的梯度。这个梯度是许多乘法的链——激活函数的导数与权重相乘——跨越多个时间步。

对于一个神经元 \(j\):

\[ \vartheta_j(t) = f'_j(net_j(t)) \sum_i w_{ij} \ \vartheta_i(t+1) \]

其中,\(\vartheta_j(t)\) 是反向传播的误差信号。将这一过程在多个时间步 \(q\) 上串联起来,会产生一个缩放因子:

RNN 中误差梯度反向传播 q 个时间步的公式。它涉及每个时间步的权重矩阵和激活函数导数的乘积。


两种失效模式

  1. 梯度消失 (Vanishing Gradient)
    多数常见激活函数 (如 logistic sigmoid) 的导数严格小于 1 (最大值为 0.25) 。许多小于 1 的数相乘会导致梯度呈指数级衰减。仅几个时间步后,梯度就可能几乎为零,网络因此无法学习相距较远的事件间的依赖。

  2. 梯度爆炸 (Exploding Gradient)
    若权重大于 1,梯度可能呈指数级增长,导致权重更新极不稳定,网络无法学习。

简而言之,过去输入的影响要么消失,要么爆炸,使得标准 RNN 的有效记忆跨度非常短。
这让它们无法应对长时滞问题。


初次尝试: 恒定误差传送带

作者们提出: 能否让误差在反向传播中既不缩小也不放大?

在循环反向传播中,流经神经元自连接的误差信号会按以下比例缩放:

\[ f'_j(net_j(t)) \cdot w_{jj} \]

为了保持误差信号恒定,该项必须等于 1.0:

\[ f'_j(net_j(t)) \cdot w_{jj} = 1.0 \]

最简单的实现是:

  1. 使用线性激活函数 \(f_j(x) = x\),因此 \(f'_j = 1\)。
  2. 自连接权重设为 \(w_{jj} = 1.0\)。

这就构成了作者所称的恒定误差传送带 (CEC, Constant Error Carousel) ——能够无限期、无变化地传递信息的单元,梯度可以无衰减地反向传播。

但简单的 CEC 有两个致命缺陷:

  • 输入权重冲突 — 相同的输入权重必须同时存储相关输入并忽略不相关输入。
  • 输出权重冲突 — 相同的输出权重必须既能读取已存信息,又能在无关时防止其干扰网络。

解决办法是:** 用门控单元控制信息流**。


LSTM 单元: 带门控的记忆

LSTM 通过将 CEC 包裹在乘法门单元中来解决上述冲突——这些可学习的开关决定何时写入或读取单元信息。

单个 LSTM 记忆单元的架构。核心组件是恒定误差传送带 (CEC),一个自循环的线性单元。对该传送带的访问由输入门和输出门控制。

LSTM 记忆单元结构解析

1. 单元状态: CEC

LSTM 单元的核心是单元状态 \(s_{c_j}(t)\)——即 CEC。
它通过在前一状态上加入新信息来更新,从而允许梯度无衰减地反向流动:

\[ s_{c_j}(t) = s_{c_j}(t-1) + \text{新信息} \]

2. 输入门 (\(in_j\))

控制对记忆的写入。通过 sigmoid 激活函数输出介于 0 和 1 的数值:

  • 1 → 允许存储新信息
  • 0 → 阻止更新,保护已存状态

改进的状态更新公式为:

\[ s_{c_j}(t) = s_{c_j}(t-1) + y^{in_j}(t) \cdot g(net_{c_j}(t)) \]

其中,\(g\) 是压缩函数 (如缩放后的 tanh) ,\(y^{in_j}(t)\) 是学习到的门控输出。


3. 输出门 (\(out_j\))

控制从记忆的读取:

\[ y^{c_j}(t) = y^{out_j}(t) \cdot h(s_{c_j}(t)) \]

其中,\(h\) 通常为 tanh;\(y^{out_j}(t)\) 决定单元值是否影响网络其他部分。


单元块

LSTM 单元常被分组为,共享输入/输出门,以提升效率。
例如的网络拓扑:

一个 LSTM 网络示例,包含 8 个输入、4 个输出和两个大小为 2 的记忆单元块。这展示了单个记忆单元如何集成到更大的网络架构中。


LSTM 上阵实测

LSTM 的精彩之处在于,它能解决普通 RNN 完全无能为力的问题。


实验 1: 嵌入式 Reber 语法

序列学习的基准测试——根据语法生成的字符串预测下一个符号。

嵌入式 Reber 语法任务的状态转换图。为了预测最后的 ‘T’ 或 ‘P’,网络必须记住它在开头附近看到的是哪一个。

LSTM 的结果:

不同模型在嵌入式 Reber 语法任务上的比较。LSTM 是唯一能稳定解决该问题的模型,而且速度快得多。

其他算法要么步履维艰,要么彻底失败。LSTM 100% 的时间都能解决这个问题,而且速度更快。输出门至关重要——它们使网络能学习短期语法规则,同时不被更难的长期依赖干扰。


实验 2: 1000 步挑战

任务: 根据序列中的第二个符号预测最后一个符号。最小时间延迟为 1000 步,中间夹杂随机干扰符号。

这是典型的长期依赖测试——标准 RNN 无法完成。

LSTM 在任务 2c 上的性能,该任务具有不同的时间延迟和干扰符号数量。即使问题变得更难,学习时间的伸缩性也非常好。

LSTM 可靠解决了最小延迟为 1000 步的任务。即便干扰符号增多,训练时间增长也很缓慢——这是其他方法无法比拟的特性。


实验 4: 加法问题

测试: LSTM 能否存储连续、分布式数值?
输入一个数值-标记对的序列 → 在末尾输出所有被标记数值的总和。

加法问题的结果。LSTM 成功学会了在长时间间隔内存储精确实数值并求和。

LSTM 能在数百个时间步内精确保存实数值且无漂移——证明了 CEC 的稳定性。


实验 5: 乘法问题

与上述任务类似,但目标是被标记数值的乘积。这表明 LSTM 不仅能累加,还能执行非线性运算。


实验 6: 时间顺序

根据序列中 X 出现在 Y 之前还是之后进行分类,X 与 Y 之间隔着长段噪声。

时间顺序问题的结果。LSTM 能够从相距很远的事件的相对时间中提取信息。

同样,LSTM 轻松解决了该问题: 它将第一个符号存储于单元中,在第二个符号出现时更新状态。


为什么重要

这篇 LSTM 论文实现了:

  • 真正的长期记忆 — 可跨越超 1000 步延迟
  • 噪声鲁棒性
  • 支持连续和分布式表示
  • 高效、时空局域的学习
  • 宽参数容忍度 — 几乎无需大量微调

影响与传承

1997 年的《长短期记忆》论文是深度学习的一次根本性突破。
通过引入恒定误差传送带并用门控保护,Hochreiter 和 Schmidhuber 解决了训练循环网络中最持久的问题之一。

如今,LSTM (及其变体,如 GRU) 驱动着:

  • 语言翻译 (如谷歌翻译)
  • 语音识别 (如 Siri)
  • 大型语言模型中的文本生成
  • 时间序列预测

回顾:
LSTM 的故事是一个典范,展示了如何识别核心问题、从第一性原理推理、设计优雅的机制并严谨验证。
它奠定了机器理解上下文、处理语言及从长时间跨度中学习的基础——一种真正不讲道理的有效性,持续塑造着人工智能的未来。