IT 论文精读 · PAPER 9
Bahdanau, Cho & Bengio · ICLR 2015
2014 年底,Bahdanau、Cho 和 Bengio 三人给机器翻译装上了一个新器官——注意力(attention):让模型在翻译每一个词的时候,回过头去「看」原文里最相关的那几个词。你今天在 ChatGPT、大模型新闻里天天听到的 "attention",血缘上都追溯到这里——这篇就是注意力机制的出生证明。
上一篇 Seq2Seq 的翻译办法是「先读懂、再重说」:把整句英文从头到尾读一遍,压缩成一张小纸条,然后照着纸条默写出法文。短句还行;句子一长,成绩一落千丈。想想也是——一段 60 个词的话,只许你记成一张小纸条,再凭它复述出每个细节,怎么可能?可怪就怪在,人类译者从来不这么干:没有谁先把整段背下来再动笔,都是翻到哪儿、看到哪儿。
这篇论文说:别背了,让模型也「翻到哪儿看到哪儿」。翻译每个词的时候,原文就摊在桌上,随时回头看、想看哪看哪。那张小纸条的独木桥被拆掉了,换成一份永远在手边的原文。
模型每要写下一个译文词,先拿「我现在翻到哪了」这个念头,去和原文每个词逐一对眼神:给每个词打一个「相关度分」,分高的多看两眼、分低的只留点余光——目光像一盏聚光灯,有亮斑也有暗处,按这个比例把原文各处的信息调成一杯「专属参考」,再据此落笔。最妙的是:这套「该往哪看」没有人教,模型是在学翻译的过程中顺带自己学会的——训练完一看,它的目光自动落在正确的对应词上;碰到英法语序颠倒的地方,目光还会自己交叉回跳。
直接的好处是长句翻译不再崩盘,神经翻译的质量第一次追平了统治二十年的老牌统计系统。更深远的是它证明了一件事:让模型「按需回看」胜过「一次记死」。三年后 Google 那篇 Transformer 干脆宣布「注意力就是你的全部所需」,把其余零件全扔掉、只留这一招,大模型时代由此起步。也诚实说一句:这版注意力仍架在逐词吞吐的旧引擎上,每写一个词都得把原文全扫一遍,又慢又难并行——这笔账三年后才由 Transformer 结清。
别把整句压成一张小纸条再默写——让翻译模型每写一个词都回头看原文、按相关度分配目光。这道「目光」就是注意力机制的起点,今天每个大模型的心脏都在做同一件事。
想看注意力的三步公式、结构图和 BLEU 数字? → 切到精读版
这篇论文在编码器-解码器(encoder–decoder)神经翻译模型上加了一个可学习的「软对齐(soft alignment)」模块——即后来的注意力机制(attention):解码器每生成一个词,都对源句所有位置打相关度分、用 softmax 变成权重、加权求和出该词专属的上下文向量,从而拆掉「整句压进一个固定长度向量」的瓶颈。长句翻译不再退化,英法翻译首次追平统计系统 Moses;注意力机制由此诞生,三年后长成 Transformer。
第一作者 Dmitry Bahdanau 写这篇时还是在 Yoshua Bengio 蒙特利尔实验室实习的学生,与 Kyunghyun Cho、Bengio 合作,2014 年 9 月挂出 arXiv、发表于 ICLR 2015。它直接接续几个月前的 RNN Encoder–Decoder(Cho 等)与 Seq2Seq(Sutskever 等,Paper 8),往后被 Luong 注意力(2015)简化、被 Google 神经翻译系统 GNMT(2016)工业化,三年后长成 Transformer(Paper 1)。
2014 年的神经翻译模型有同一根软肋:编码器必须把整个源句——不管 5 个词还是 60 个词——压进一个固定长度的向量,解码器只凭这一个向量重建整句译文。这个向量成了独木桥:容量固定,句子越长、被迫丢掉的细节越多。Cho 等人当年实测证实:句子一变长,BLEU 急坠。
作者的判断是:问题不在网络不够大,而在「固定长度向量」这个设计本身——它要求把任意长的句子无损塞进同一个小容器,注定顾此失彼。另一边,老牌统计翻译里「对齐」(哪个译文词对应哪个原文词)靠的是独立的模块与人工特征,没法和翻译放在一起端到端地学。能不能让模型自己学会「翻到哪儿、看哪儿」?
论文的模型叫 RNNsearch。它不再让解码器全程只抱着一个向量,而是每生成一个词,都重新走一遍三步:
s₍ᵢ₋₁₎(「我现在翻到哪了」),去和源句每个位置的表示 hⱼ 算一个相关度 eᵢⱼ = a(s₍ᵢ₋₁₎, hⱼ)——白话:逐个问「原文第 j 个词跟我接下来要写的词有多相关?」。这里的 a 是一个很小的前馈神经网络(后世称为加性注意力 additive attention),「什么算相关」由它自己学。αᵢⱼ = softmax(eᵢⱼ)——把一串分数变成一组和为 1 的权重,相当于「目光在源句各处的分配比例」。cᵢ = Σⱼ αᵢⱼ·hⱼ——按比例把源句各处的信息混合成上下文向量 cᵢ,交给解码器生成第 i 个词。于是整句的负担从「一个向量记住一切」变成「每一步按需取用」:写「银行」时目光聚在 bank 附近,写句尾时目光移到句尾。
为什么这样设计?三个字:可微分。目光的分配被 softmax 做成「软」的——每个源词都分到一点权重、而不是硬选一个——整个模块就处处可导,训练的纠错信号能顺着它一路流回去。于是「往哪看」(对齐)和「怎么翻」(翻译)可以在同一个训练循环里端到端联合学习——这正是标题 jointly learning to align and translate 的含义。不需要任何人工对齐标注:对齐是学好翻译的副产品。
要回看的那些 hⱼ 也得升级。如果它只由从左往右读的 RNN 产生,就只概括「j 之前」的内容。论文改用双向 RNN(bidirectional RNN):一遍从左往右读、一遍从右往左读,把两个方向在位置 j 的隐藏状态拼接成该词的注解(annotation) hⱼ——它以第 j 个词为中心、又知道前后文,注意力取用时才「拎得起」单个词及其语境。
两个原因。一是信息不再过独木桥:60 个词的句子有 60 份注解可随时取用,「记忆容量」随句长自然增长,编码器不再被迫丢信息。二是学习信号有了捷径:以前纠错信号要从译文末端穿过整条 RNN 链才能传回源句开头,长路上层层衰减(梯度消失);现在注意力在解码器与源句任意位置之间拉了一条一步直达的短路——与 ResNet 跳跃连接(Paper 2)「给信号修高速公路」异曲同工。
基准是 WMT'14 英→法翻译。对照组 RNNencdec(固定向量的 encoder–decoder),实验组 RNNsearch(加注意力),各训「最长 30 词 / 50 词」两个版本。全测试集 BLEU:RNNencdec-50 得 17.82,RNNsearch-50 得 26.75——同样的数据、同样的 RNN 骨架,多一个注意力模块,差出近 9 个 BLEU。训练更久的 RNNsearch-50★ 达 28.45;在不含生僻词的句子上达 36.15,略超当时统治级的统计系统 Moses(35.63,且 Moses 还额外用了海量单语语料)——神经翻译首次在严肃基准上与统治二十年的统计方法平起平坐。
更能说明问题的是句长曲线:RNNencdec 的 BLEU 在句长超过 20 词后一路下坠,而 RNNsearch-50 直到 50 词以上几乎不掉(图 3)。此外,把注意力权重 αᵢⱼ 画成热图,能直接看到模型自动学出了英法词对齐——语序颠倒处(如 European Economic Area ↔ zone économique européenne)目光清晰地交叉回跳,而没有任何人教过它对齐。
它贡献了「注意力」——此后十年最重要的架构原语。Luong 等(2015)把打分简化成点积;Xu 等(2015)把它搬进图像描述(「看图」的视觉注意力);GNMT(2016)把注意力翻译系统部署进 Google 翻译;2017 年 Transformer(Paper 1)走到逻辑终点——把 RNN 整个扔掉、只留注意力,并把本文的小网络打分换成缩放点积 softmax(QKᵀ/√d)V。今天每个大模型每生成一个 token 都在做的自注意力(self-attention),机制上就是本文「打分 → softmax → 加权求和」三步的直系后代。另外,注意力热图还让神经网络第一次有了一扇随手可开的「可解释性」小窗。
n×m 次打分——这正是后来 Transformer O(n²) 注意力开销的前身。① 痛点:encoder–decoder 把整句压进一个固定长度向量,容量固定、句子越长丢得越多,长句 BLEU 急坠。
② 核心 idea:解码器每生成一个词,动态回看源句——打分 → softmax → 加权求和,得到该词专属的上下文向量。
③ 机制:eᵢⱼ = a(s₍ᵢ₋₁₎, hⱼ),α = softmax(e),cᵢ = Σ αᵢⱼ·hⱼ;打分器是个跟着一起学的小网络(加性注意力)。
④ 「软」是关键:处处可微,「往哪看」与「怎么翻」端到端联合训练,无需人工对齐标注——对齐成了翻译学好的副产品。
⑤ 配套:双向 RNN 编码器给每个源词一个带前后文的注解 hⱼ,注意力才有得可取。
⑥ 结果:WMT'14 英法 RNNsearch-50 26.75 vs 固定向量 17.82;长句几乎不退化;无生僻词子集上 36.15 超过 Moses 35.63。
⑦ 影响:注意力成为通用架构原语,经 Luong、GNMT 一路长成 Transformer 与今天所有大模型的 self-attention。
⑧ 局限:RNN 串行慢;打分开销 n×m;软对齐不是真对齐、当解释有争议;UNK 词表问题留给了 BPE。