IT 论文精读 · PAPER 7
Hochreiter & Schmidhuber · Neural Computation · 1997
在 ChatGPT 出现之前,你手机里「能听会译」的那些东西——语音助手、谷歌翻译、手写识别——背后多半躺着同一个 1997 年的发明:LSTM(长短期记忆网络)。这篇论文给 AI 装上了一个能记住很久以前的事的记忆装置,此后统治「按顺序处理信息」的 AI 整整二十年。
句子、语音都得按顺序一个字一个字读。当时的「记忆网络」像玩传话游戏:每读一个新字,就把之前记住的一切拿出来揉一遍、再把新字混进去。揉个十几轮,开头说了什么早就面目全非。更糟的是教也教不会:AI 学习靠「答错之后往回追责」,这股追责的声音往回传时同样一站站减弱,传不了几十步就没声了——所以它永远学不明白「结尾这个错,原因出在开头」这种远距离的账。
LSTM 的点子是:别让记忆跟着每一步被揉。给网络配一条受保护的记忆传送带:放上去的东西默认原样往前送,一步都不揉、一站都不改,走多远都还是原来那句话。
光有传送带还不行——什么都往上堆,很快就成垃圾场。所以每个记忆格子配了两道门,门卫由网络自己学出来:写门卫决定「眼前这条信息值不值得记」,读门卫决定「现在要不要把存货拿出来用」。平时两道门关着,存货安安静静原样前行;关键时刻门才打开,该记的记、该用的用。妙处还有一层:因为传送带不揉不搓,那股「往回追责」的纠错声音也能顺着它畅通地传回很久以前——远距离的账终于算得清了。
此后二十年,凡是「按顺序来」的活——听懂一句话、翻译一段文、认一行手写字——最好的系统里几乎都有 LSTM:谷歌语音搜索、谷歌翻译、Siri 都用过它。也说句诚实的:它必须一步一步按顺序算、快不起来,记性也远非无限——2017 年 Transformer 靠「所有词直接互相对视」接了它的班。
给神经网络一条不揉不搓、原样前送的「记忆传送带」,再配上自己学会开关的写门和读门——远处的信息存得住、纠错信号传得回,AI 第一次真正记住了很久以前的事,并统治序列任务二十年。
想看记忆单元的结构图、公式和「跨 1000 步」的实验? → 切到精读版
LSTM 在循环神经网络里造了一个带「门」的记忆单元:核心是一条自我连接、权重恒为 1 的「恒定误差传送带」,让记忆内容与训练时的纠错信号都能跨上千个时间步不衰减地流动;再用可学习的输入门 / 输出门决定何时写入、何时读出。它从根上治了 RNN 的梯度消失,让网络第一次学会横跨 1000 步以上的远距离依赖,此后二十年统治语音、翻译等序列任务。
作者 Sepp Hochreiter 与 Jürgen Schmidhuber,论文发表在期刊 Neural Computation(1997);对问题的诊断源自 Hochreiter 1991 年的学位论文——最早严格分析 RNN 梯度为何消失/爆炸的工作之一。它上承 1980 年代的 RNN 与反向传播,下启 seq2seq(2014)与 Bahdanau 注意力(2014)——后者三年后长成 Transformer(2017);在那之前,序列建模的王座一直是它的。
RNN 的设想很美:把历史压进隐藏状态,理论上想记多久记多久。可实践里它记性极差。原因在训练:纠错信号沿时间往回传时,每退一个时间步,都要乘一次「权重 × 激活函数斜率」。这个乘数几乎不可能恰好是 1——小于 1,信号就指数级缩小(梯度消失);大于 1,就指数级放大(梯度爆炸,训练直接发散)。乘上几十次之后,要么归零要么上天。
后果是:普通 RNN 实际只能学会相隔十来步以内的依赖。而真实任务满地都是远距离账——句首的主语决定句尾动词的形态、段落开头的人名决定结尾的「他」指谁。当时的种种补救(缩短回传、特制时间延迟结构、分层压缩序列等)要么治标、要么只对特定任务有效。这是结构病,得从结构上治。
既然病根是「每回传一步就乘一次、乘数又不是 1」,那就造一个乘数恒为 1 的通道。做法:设一个线性单元(不过激活函数、不揉不搓),给它接一条权重固定为 1 的自环——这一步的状态默认原样抄给下一步:c(t) = c(t−1) + 新写入。纠错信号顺着这条自环往回传时,每步乘的都是 1,跨一千步也不缩不爆。论文管它叫「恒定误差传送带」(constant error carousel,CEC)——这是全文真正的心脏。
你可能觉得眼熟:ResNet 的跳跃连接、Transformer 的残差连接,走的是同一条思想路线——「保持原样」不该靠学习学出来,该由结构免费提供。LSTM 是这条路线在时间维度上的先声。
裸的传送带不能用。同一个入口权重既要负责「关键时刻把信息写进去」,又要负责「无关时刻把噪声挡在外面」——两个目标互相打架(论文称输入权重冲突),出口同理:存着的内容不该在每一步都往外漏。解法是把「存什么」和「何时读写」拆成两件事,交给两扇乘法门(gate):
门不是人手调的:每扇门自己就是个小神经元,看着当前输入和上一步的状态,学会何时开、何时关,如 i(t) = σ(W·x(t) + U·h(t−1))——σ 是 sigmoid,输出天然落在 0 与 1 之间,正好当阀门。于是无关时刻两门紧闭、状态原样滑过;关键时刻门开,读写才发生。CEC 负责「守得住」,门负责「管得住」——记忆单元(memory cell)= CEC + 两扇门。
原版的状态更新写成 c(t) = c(t−1) + i(t)·g(t)——上一步状态原样保留,再加上「输入门开度 × 候选写入」;输出是 h(t) = o(t)·h(c(t)),即「输出门开度 × 压缩后的状态」。注意:1997 年的原版没有遗忘门(forget gate)——状态只加不减,在连续不断的输入流里会越积越大。Gers 等人 2000 年补上遗忘门 f,更新式变成今天的标准形态 c(t) = f(t)·c(t−1) + i(t)·g(t):网络还能学会「该翻篇时把旧账清掉」。今天大家说的 LSTM,都是这个带遗忘门的版本。
训练上,论文配了一套截断的梯度算法:在空间和时间上都是局部的,每个权重每个时间步只要 O(1) 的计算——1997 年的算力也养得起。
论文的实验全部是精心设计的人工任务——这点它自己坦白,但对照做得扎实:
诚实说:原文没有任何真实世界基准,「统治现实应用」是十几年后的事——但「跨 1000 步时滞可学」这一点,当时没有任何别的通用方法做得到。
这是一颗在「神经网络寒冬」里埋下、十年后才爆发的种子。2009 年 Graves 等用 LSTM 赢下手写识别国际竞赛;此后几年语音识别全面转向它;2014 年 seq2seq 用多层 LSTM 做出端到端机器翻译;2015 年谷歌语音搜索上线 LSTM 声学模型;2016 年谷歌翻译 GNMT 的编码器解码器都是深层 LSTM——智能手机「能听会译」的那些年,底下几乎都是它。它也因此成为历史上被引用最多的神经网络论文之一。
思想遗产有两条今天还活着:其一,门控成了通用武器——GRU 是它的精简版,highway network 把门控用到深度方向;其二,「给信息留一条乘数为 1、不衰减的通路」这一原则,在 ResNet 与 Transformer 的残差连接里延续至今。此外,Hochreiter 对梯度消失的严格分析本身,就是深度学习理论的基石文献。
① 病根:RNN 的纠错信号沿时间回传时每步乘一次「权重 × 斜率」,指数级消失或爆炸,学不会相隔十几步以上的依赖(Hochreiter 1991 的诊断)。
② 核心 idea:恒定误差传送带(CEC)——权重固定为 1 的线性自环,记忆与纠错信号沿它流动,乘数恒为 1、跨千步不衰减。
③ 第二个 idea:乘法门。输入门管写、输出门管读,解决「同一权重既要写入又要挡噪声」的冲突;门是 0–1 开度、由网络自己学。
④ 公式:原版 c(t) = c(t−1) + i·g;Gers 等 2000 年补遗忘门后成 c(t) = f·c(t−1) + i·g——今天的标准 LSTM。
⑤ 结果:人工任务上跨 1000 步时滞照样学会,BPTT/RTRL 几十步就失败;但原文没有真实世界基准。
⑥ 影响:统治序列建模二十年——手写识别、语音识别、seq2seq 翻译、谷歌语音搜索与 GNMT 全在其上。
⑦ 思想遗产:门控(GRU、highway network)与「乘数为 1 的不衰减通路」(残差连接)活到今天。
⑧ 局限:原版缺遗忘门;有效记忆有限;本质串行难并行、训练贵——2017 年被可全并行的 Transformer 接班。