Learn AI · 模型硬功底(由内而外)
第 3 课 / 经典论文 P02  ·  阶段一:地基(Bahdanau, Cho & Bengio, 2014)

Neural Machine Translation by Jointly
Learning to Align and Translate:
attention 的创世记

上一课你拆了 attention 的终极形态(Transformer 的 self-attention)。这一课往回走三年—— 看 attention 第一次被发明出来时长什么样、为治哪个病而生。 读完你会发现:你每天用的 Q/K/V,第 2 课那套机器, 其实是这篇 2014 论文的直系胚胎,只是当年它还长在一台 RNN 上。
别再逼模型把整句话压进一个向量。
生成每一个译词时,回头看源句的所有词
要看谁、看多重,让模型自己当场算——这就是 attention 的第一次。

一、立靶:2014 年的翻译模型卡在「一个向量」

这篇之前的主流是 encoder–decoder(seq2seq,P03):一台 RNN(encoder)把整句源文一个词一个词读完, 把"读完后的记忆"压成一个固定长度的向量 c(业内戏称 thought vector);另一台 RNN(decoder)拿着这唯一的 c,把译文吐出来。

致命瓶颈:固定向量装不下长句

不管源句是 5 个词还是 50 个词,全都要塞进同一个固定大小的 c。 短句还行,句子一长,前面的信息被后面的覆盖、稀释——像让你读完一整页再凭一句话复述

论文最有名的实验就是这张「BLEU 随句长暴跌」曲线:固定向量模型一过 30 词,翻译质量直线跳水。 这就是要打的靶。

论文的回答(也是标题):别再用一个向量。让对齐(align)和翻译(translate)一起学。

二、抽框架:每生成一词,重算一个 context

核心改动只有一处,但改得彻底——context 向量不再是一个,而是每个输出词一个,按需重算。三步:

步骤在做什么(用「翻译时回头看原文」打比方)
① 打分 align我要译第 i 个词了,拿解码器当前状态 s 去和源句每个词的表示 hj 比一比:eij = a(si-1, hj)——这个 a 是一个小前馈网络,算"源词 j 和我现在要译的,匹配度多高"。
② 归一 softmax把一串匹配分数过 softmax → 一组加起来=1 的对齐权重 αij(attention 权重)。
③ 加权取 contextci = Σj αij · hj——用这组权重对所有源词表示加权求和。译每个词,c 都不一样

一句话:固定的 c 变成了"看着办"的 ci。译"猫"时注意力压在 source 的 cat 上,译"昨天"时压到 yesterday 上—— 对齐是模型自己学出来的,没人标注。这就是 "jointly learning to align and translate" 的字面意思。

⚡ 关键连线:这其实就是你上一课的 Q / K / V

把这套对到 Transformer 的语言上,胚胎一目了然:

Bahdanau 2014≈ Transformer 的
解码器状态 si-1(我要找什么)Query
源词表示 hj(既用来打分、又被取走)Key 和 Value(这里两者是同一个)
eij = a(s, h),小网络打分相关度分数(但 Transformer 用 点积替掉这个小网络)
αij = softmax(e)注意力权重
ci = Σ α·h加权求和的输出

区别只在三处:① 打分用小网络(additive)而非点积(dot-product); ② 这里是两条序列之间(译文看源文,叫 cross-attention),还不是自己看自己; ③ 底下还拖着一台 RNN。Transformer 做的是:换点积、加 multi-head、把 RNN 整个删掉。

论文里三个容易被略过、但很关键的细节

① 双向 encoder: 每个源词的表示 hj前向 + 后向两台 RNN 的拼接——让它既含"前文"又含"后文",是真正以词 j 为中心的整句摘要,不只是"读到 j 为止"。

② 对齐是「免费」涌现的: 那个打分网络 a 和整个翻译系统端到端一起训,没有任何人工对齐标注。对齐是优化翻译时顺带学出来的副产品——这才叫 "jointly"。

③ soft alignment(软对齐): 传统统计翻译(SMT)是硬对齐(一个源词硬配一个译词,非此即彼)。这里是软的——权重连续、可微、可一对多。正因为可微,才能塞进反向传播一起训。

二·五、换个说法:你在饭桌上当翻译(通俗版)

如果上面的 Q/K/V 还没「体感」,把整篇换成一个生活场景——朋友 A 只会英文,噼里啪啦说了一长段,你要翻给只会中文的朋友 B。

办法你在干什么对应论文里的什么
旧办法
固定向量 seq2seq
闭着眼听完,凭脑子一团印象复述。一句话还行;A 一口气说 50 个词,你脑里只剩一团模糊总印象,开头讲啥早被后面冲掉 → 翻得稀碎。 整句压成一个 c;那张「30 词后 BLEU 暴跌」曲线,就是这团印象装不下长句。
新办法
attention(本篇)
原文摊在桌上,边翻边用手指点回去。翻「猫」点 cat,翻「昨天」划到句尾 yesterday——每翻一个词,眼睛都回原文重扫一遍。 保留每个源词 hj每个输出词重算 context ci;手指点哪、点多重 = 权重 α。
两个细节,用「手指」就讲透了

软对齐 = 手指虚按。 翻「了」这种时态词,原文里根本没有对应词,手指就在 ateyesterday 之间悬着、各按一点(动作 + 过去)。一对多、按个大概——这就是软对齐,和老式翻译「一个词硬配一个词」的根本区别。

jointly = 手指落点没人教。 没有任何手册告诉你「翻猫时点 cat」。你是在「把整桌翻顺」这唯一目标下,自己练着练着手指就准了——对齐是优化翻译时顺带涌现的副产品,没人标注。

为什么你「没体感」?

因为你从没受过这个病的苦——你开始用 LLM 时,attention 早已是默认的空气。真正贴你主业的体感:写长 prompt / 做 RAG 时那句焦虑「模型到底看没看我塞进去的后半段?」——病根就是 2014 年这个「固定向量装不下长句」。 attention 的回答是:别让它凭一团印象答,让它每生成一个字,都把你的上下文回头重扫一遍。

三、动手玩:看一个译词「对齐」到源句的哪个词

英译中,词序会调换(yesterday 跑到中间)。点不同的中文译词,看它的注意力 α 落在哪个英文源词上—— 对角线在词序调换处会拐弯,这正是 soft alignment 的价值(示意权重)。

源句(EN):I · ate · an · apple · yesterday
译句(ZH),点一个词看它对齐到哪: 

四、对照表:固定向量 → 注意力 → Transformer

维度seq2seq 固定向量
(2014 之前)
Bahdanau attention
(本篇, 2014)
Transformer
(P01, 2017)
context整句压成1 个 c每个输出词重算 ci每个 token、每层都重算
打分方式小前馈网络(additive缩放点积(scaled dot-product
attention 类型cross(译文 ← 源文)self + cross + multi-head
底座RNNRNN(双向)无 RNN,纯 attention
长句表现30 词后暴跌长句不掉链子受限于 O(n²) 成本,不受信息瓶颈

五、映射到你的项目

你工作里的东西其实就是这篇论文的什么
你每天用的 self-attention就是这篇的直系后代:把"译文看源文"改成"序列看自己"、把小网络打分换成点积,就成了 P01。
attention 热力图 / 可解释性软对齐第一次让"模型在看哪"可被画出来。你 debug agent"它到底参考了上下文哪段"时,看的就是这套权重的后代。
RAG 为什么要切块、不能把长文塞进一个 embedding正是固定向量瓶颈在检索端的回响:一个 dense 向量压不下一篇长文档。RAG 回答"答得碎/有拼接感",很多就栽在这。
encoder–decoder / cross-attention多模态、检索增强生成里"用一条序列去引导另一条"的结构,源头就在这篇的"译文 query 源文"。

六、检索练习(关掉上文,凭记忆答)

1. Bahdanau attention 主要来治 seq2seq 的什么病?
2. 把本篇对到 Transformer,解码器状态 s 和源词表示 h 分别像什么?
3. 论文标题里的「jointly(一起学)」指的是?
本课主源

读原典:Bahdanau, Cho & Bengio — Neural Machine Translation by Jointly Learning to Align and Translate (arXiv:1409.0473)—— 重点读第 3 节(模型)和图 3(那张对齐热力图,本课互动的原型)。

建立直觉可配:Jay Alammar — Visualizing A Neural Machine Translation Model

想接着读「它前一步」——固定向量的 seq2seq 本体,就是下一档的 P03 (Sutskever 2014)

我是你的老师,随时提问。 比如:「additive attention 和 dot-product 谁更好、为什么 Transformer 选了点积?」 「双向 encoder 的前后向到底怎么拼?」「软对齐和统计翻译的硬对齐差在哪、为什么软的才能反向传播?」——别带着模糊往下走。

参考:
Bahdanau, Cho & Bengio, Neural Machine Translation by Jointly Learning to Align and Translate, ICLR 2015;Alammar, Visualizing A Neural Machine Translation Model.