同声传译员老张接了个棘手的活儿:外宾一开口就是长达三四十个词的长句。按老办法,老张得边听边把整句话的要点压缩到一张便利贴上,翻译时照“贴”宣科。句子一短还行,句子一长,便利贴上的字就越写越挤,写到后来,前半句的内容早就看不清了,翻出的话自然驴唇不对马嘴。2015年,一位叫 Bahdanau 的研究者看穿了这类系统的尴尬,提出一种“边译边找”的思路:译者不必把整句硬塞进一张便利贴,而是把原文的每个词都做成词卡摆在面前,翻译每一个新词时,用一支荧光笔把此刻最重要的几个词标亮——其余词卡虽然暗一些,余光依然能扫到。这支“荧光笔”就是后来引爆深度学习的注意力机制,它在原文与译文之间搭起粗细不同的连接,术语叫“软对齐”。本文就跟着老张手里的荧光笔,把 Bahdanau 注意力从头讲到尾:它为何诞生、编码器如何准备词卡、荧光笔怎样计算亮度、译文如何一个字一个字“看稿”生成,又带来了哪些提升。

岗位关联

一句话职业价值:注意力机制是 Transformer 与大模型的“老祖宗”,搞懂 Bahdanau 这支最初的荧光笔,你就拿到了读懂现代 NLP 架构的第一把钥匙。

目录
  1. 可视化演示
  2. 背景与动机:一张写满的便利贴
  3. 核心思想:扔掉便利贴,换上词卡
  4. 编码器设计:词卡要做成双面
  5. 对齐模型:一支会算亮度的荧光笔
  6. 解码器集成:三样信息齐了才落笔
  7. 性能与影响:长句翻译不再翻车
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

本节配有交互动效(进入视口后自动加载,约 3KB)。

Bahdanau加性对齐模型 编码器隐状态 h₁...h₅ 解码器隐状态 sₜ₋₁ 加性MLP学习源-目标对齐,权重归一化后加权求和得上下文向量 对齐分数 eₜᵢ = vᵀ tanh(W[sₜ₋₁; hᵢ]) 注意力权重 αₜᵢ = softmax(eₜᵢ) B...

背景与动机:一张写满的便利贴

老张最开始做同声传译,靠的是一张便利贴。对方说一句英文,他飞快地把要点记在黄纸上,翻译时照“贴”宣科。短语和短句很轻松:一句 "I love the sky",六个词,便利贴绰绰有余。可一旦遇到从句套从句的长句,便利贴就遭殃了——字越写越小、越写越乱,写到后面,贴纸顶端那几行最早的信息早就被挤得看不清。老张心里清楚:不是自己记性差,是这张纸的容量根本不够。

这种“一张便利贴传到底”的做法,正是早期神经机器翻译的标准姿势。系统由两个 RNN 组成:编码器把源句从头读一遍,把全部信息压缩成一个固定长度的向量——相当于那张便利贴;解码器从这张“便利贴”出发,一个词一个词地生成译文。这个结构有一个广为人知的名字:Seq2Seq(序列到序列)。它本身很优雅,但内置了一个隐患:无论句子多长,最终都要挤进同一个向量里。

编码器每读进一个词,就更新一次自己的记忆状态,直到句末得到最终状态 \(h_T\),模型就把这个状态当作“整句话的摘要”交给解码器。这个逐词迭代的过程,可以写成熟悉的递推式:

后来的实验揭开了残酷的事实:句子一长,这种固定向量系统的翻译质量就断崖式下滑。LSTM 缓解了梯度消失,却治不好“便签容量不够”的根本毛病。老张捂着一叠写得密密麻麻的便利贴,知道自己必须换个思路了。

ht=f(ht−1,xt)\displaystyle h_t = f(h_{t-1}, x_t)
  1. 当前步隐藏状态这是读入第 \(t\) 个源词后,模型脑子里形成的“最新记忆”,相当于便利贴上此刻的内容。hth_t
  2. 上一时刻状态浓缩了从句子开头到第 \(t-1\) 个词的全部信息。ht−1h_{t-1}
  3. 当前输入单词第 \(t\) 个源词的词向量,也就是刚听到的那个词。xtx_t
  4. 循环函数RNN 或 LSTM 细胞,把旧记忆和新词揉在一起。f(⋅)f(\cdot)
  5. 固定上下文读完整个句子后,最后一步的隐藏状态被当作整句话的摘要。c=hTc = h_T

核心思想:扔掉便利贴,换上词卡

老张的新方法听起来简单:既然一张便利贴记不下,那就干脆不记了。他把听到的每个词都写成一张独立的词卡,整整齐齐地贴在面前的白板上。翻译到“我”的时候,他快速扫一眼所有词卡,用荧光笔把 “I“ 标得最亮;翻到”爱“的时候,最亮的位置移到了 ”love“ 上;翻到”天空“时,他发现 ”the“ 和 ”sky“ 两张卡都值得标亮——虽然 ”sky“ 更亮,但 ”the” 也没被完全忽略。重要的是,那些没被标亮的词并没有被撕掉,它们还静静待在余光里。

把场景换回神经网络,这套动作对应一个关键转变:编码器不再只交出最后一个隐藏状态,而是把每一步的隐藏状态 \(h_1, h_2, \dots, h_T\) 全部保存下来。这些状态就像贴在白板上的所有词卡,一张都不丢。解码器生成第 \(i\) 个译文词时,不必再对着唯一一张“便利贴”苦思冥想,而是可以随时回头翻看任何一张词卡。

这个“随时翻看”的动作,学术上叫软对齐。它有两个鲜明的特点:第一,每个源词都会参与“目前该看谁”的决策,只是权重有大有小,没人会被完全抛弃;第二,权重是连续数值,所有词卡的权重加起来恰好等于 1——就像一整杯荧光粉,按照重要程度分给各张词卡,分得干干净净。因为是连续分配而不是非此即彼,所以叫“软”对齐,与之相对的“硬”对齐则只准挑一张卡。

这个转变把翻译从“背课文”变成了“看稿翻译”:字典里不再有窒息感,长句的信息不再被压扁,而是分散在一张张词卡上,随取随用。老张长舒一口气——便利贴终于可以扔了。

编码器设计:词卡要做成双面

词卡贴上了墙,老张又发现一个新麻烦:单面词卡记不住“语境”。比如英文 “I saw the bank“,这里的 ”bank“ 到底是”河岸“还是”银行“,单看这个词本身猜不出来,得看它后面跟着什么。如果词卡只有正面,写着 ”bank” 的字典释义,翻译时照样会翻错。老张的办法是把每张词卡做成双面的:正面记录从左往右读时积累的信息,背面记录从右往左读时积累的信息。

在模型里,这个“双面卡”由双向 RNN(BiRNN)实现。编码器运行两个方向的循环网络:前向 RNN 从句子开头读到结尾,得到的第 \(j\) 个隐藏状态 \(\overrightarrow{h}_j\) 只携带“左边”的语境;后向 RNN 从结尾读到开头,得到 \(\overleftarrow{h}_j\) 携带“右边”的语境。两个方向的信息最终拼接到一起,成为一张完整的双面词卡:

这样一来,每个源词都同时携带了它“前前后后”的语境信息。翻译 “bank“ 时,模型不仅看到这个词本身的卡,还能看到它左边的 ”the“ 和右边的 ”river”,河岸的意思就呼之欲出了。双面词卡,是老张的荧光笔能打得准的前提。

hj=[h→j⊤  ;  h←j⊤]⊤\displaystyle h_j = \left[ \overrightarrow{h}_j^{\top} \; ; \; \overleftarrow{h}_j^{\top} \right]^{\top}
  1. 前向隐藏状态从句子开头往右读,读到第 \(j\) 个词时形成的向量,只有“左边”信息。h→j\overrightarrow{h}_j
  2. 后向隐藏状态从句子结尾往左读,读到第 \(j\) 个词时形成的向量,只有“右边”信息。h←j\overleftarrow{h}_j
  3. 转置记号为了把两个向量首尾相连,先把列向量转成行向量。h⊤h^{\top}
  4. 拼接运算把两个向量沿着维度方向接起来,比如 8 维加 8 维得到 16 维。[a;b]\left[ a ; b \right]
  5. 完整词表示左右语境合并后的“双面词卡”。hjh_j

对齐模型:一支会算亮度的荧光笔

荧光笔不是乱画的,亮度背后有一把“打分尺子”。老张的心里养成了一个习惯:每要翻一个词,他先低头看看自己刚才译到哪了——也就是脑海里的“译词草稿” \(s_{i-1}\)——再把草稿跟白板上的每一张词卡 \(h_j\) 放到尺子上比一比,越匹配的得分越高。这个打分过程,Bahdanau 用一个小型神经网络实现,叫对齐模型:

有了得分还不够,荧光笔的亮度必须满足“总量恰好为 100%”这个规矩。模型用 softmax 把一串原始得分变成一组非负且和为 1 的权重:

拿到了亮度比例,最后一步就是“按亮度收菜”:把每张词卡的内容 \(h_j\) 乘上它的亮度 \(\alpha_{ij}\),再全部加起来,得到这一个译词专用的上下文向量:

至此,那支会算亮度的荧光笔就完整了:打分、归一化、加权汇总,三步走完,老张眼前的总览图就自动浮现出来。最亮的那张卡,往往就是此刻最该翻译的词。

eij=va⊤tanh⁡ ⁣(Wasi−1+Uahj)\displaystyle e_{ij} = v_a^{\top} \tanh\!\left( W_a s_{i-1} + U_a h_j \right)
  1. 动态上下文生成第 \(i\) 个译词时专用的“荧光笔汇总”。cic_i
  2. 加权求和亮度高的词卡贡献大,亮度低的贡献小,但每张卡都有份。∑j=1Tαijhj\sum_{j=1}^{T} \alpha_{ij} h_j
  3. 与固定向量对比每个译词都有自己的上下文,彼此不同。ci≠ckc_i \neq c_k

解码器集成:三样信息齐了才落笔

老张落笔写出一个译词之前,脑子里其实在同时处理三样东西:上一句刚说出口的译文词 \(y_{i-1}\)、自己当前的翻译记忆 \(s_{i-1}\)、以及荧光笔扫完所有词卡后提炼出的汇总 \(c_i\)。三个信息缺一不可——单看记忆会跑偏,只看词卡会忘掉已翻的内容,不参照译文又会断档。

解码器这步更新,把三者一起喂给一个门控循环单元(GRU),让它更新内部状态:

之后,输出层 \(g\) 把状态映射成词表上的概率分布,决定到底说出哪个词:

注意这里的 \(c_i\) 是逐词变化的:翻“爱”时看到的是以 “love“ 为主的汇总,翻”天空“时看到的是以 ”sky“ 为主、顺带 ”the“ 的汇总。每个译文词都有自己的”专属上下文“,这就是 Bahdanau 与旧方案最本质的分水岭。老张把这套流程练熟之后,译文便一个词一个词地流畅涌出,不再有那种”憋了半天才憋出一句”的卡顿感。

si=f(si−1,yi−1,ci)\displaystyle s_i = f(s_{i-1}, y_{i-1}, c_i)
p(yi∣y<i,x)=g(yi−1,si,ci)\displaystyle p(y_i \mid y_{<i}, x) = g(y_{i-1}, s_i, c_i)
  1. 状态更新函数GRU 细胞,负责融合三种输入,产出当前步的记忆状态。f(si−1,yi−1,ci)f(s_{i-1}, y_{i-1}, c_i)
  2. 上一译文词上一步已经生成的目标语言单词,比如已说出的“我”。yi−1y_{i-1}
  3. 当前上下文荧光笔按权重从源词卡里汇总出的向量。cic_i
  4. 当前状态融合了“上一步记忆 + 上一步译词 + 当前聚焦内容”后的最新状态。sis_i
  5. 输出层带 softmax 的映射函数,把状态转换为下一个词的生成概率。p(yi∣y<i,x)=g(yi−1,si,ci)p(y_i \mid y_{<i}, x) = g(y_{i-1}, s_i, c_i)

性能与影响:长句翻译不再翻车

新方法试运行了一周,老张的客户反馈最明显的一点是:长句终于不翻车了。以前句子一超过三十个词,翻译就开始颠三倒四;现在哪怕是四五十词的长难句,译文也基本维持在正常水准。更妙的是,老张根本不需要别人告诉他哪张词卡重要——他在实践中自己摸索出了打光的规律,越练越准。

论文实验确实如此。在 WMT'14 英法翻译测试集上,不使用注意力的 RNNencdec 模型 BLEU 约为 13.9,而使用 Bahdanau 注意力的 RNNsearch-50 提升到约 23.1。更关键的是性能曲线:旧模型的翻译质量随句子长度增加急剧下滑,新模型的曲线却几乎是平的——“长句退化”这个老大难问题被大大缓解。此外,训练时整个系统(编码器、解码器、对齐模型)端到端联合优化,荧光笔的打光规律完全是从平行语料里自己学出来的。训练目标是最大化正确译文的条件概率,等价于最小化交叉熵损失:

这段工作的影响远不止翻译本身。研究者把学到的注意力权重画成热力图,发现它竟然呈现出类似“词对齐”的对角线结构——模型可解释性第一次变得如此直观。之后,Luong 提出了更简洁的注意力变体,Transformer 则把它推向极致(自注意力)。老张的荧光笔,就这样点亮了整个深度学习时代。

L=−∑i=1Nlog⁡p(yi∣y<i,x)\displaystyle \mathcal{L} = -\sum_{i=1}^{N} \log p(y_i \mid y_{<i}, x)
  1. 总体损失整句译文好坏的总度量,数值越小越好。L\mathcal{L}
  2. 对数概率模型给正确词 \(y_i\) 的概率越大,取对数后的值越接近零。log⁡p(yi∣y<i,x)\log p(y_i \mid y_{<i}, x)
  3. 负号把“概率大”翻转成“损失小”。−log⁡p(yi∣y<i,x)-\log p(y_i \mid y_{<i}, x)
  4. 累加把每个目标词上的损失都加起来,得到整句的总损失。∑i=1N\sum_{i=1}^{N}

AI 应用场景

机器翻译产品的长句质量优化

阶段:模型推理与部署

解决的问题:传统 Seq2Seq 把整句压缩成固定向量,遇到长句和复杂从句时信息丢失严重,译文词序混乱。引入 Bahdanau 注意力后,系统能在生成每个目标词时动态回顾源句的任意位置,长句翻译质量显著改善。

具体案例:某出海 SaaS 公司的客服工单翻译系统,早期用固定向量 Seq2Seq,客户发来 50 词以上的英文投诉信时翻译常出现“张冠李戴”。升级为带 Bahdanau 注意力的模型后,长句 BLEU 提升约 9 个点,客服人员转人工的比例下降了 30%。

语音识别中的音字对齐

阶段:特征序列建模

解决的问题:语音识别要把上百帧声学特征映射到十几个汉字上,帧与字之间天然长度不同且没有预先对齐。注意力机制可以从“翻译中的词对齐”平移为“音频帧与文字的对齐”,让解码器在生成每个字时,自己决定重点听哪几帧声音。

具体案例:智能会议纪要工具在嘈杂录音场景下,用注意力热力图定位出“关键说话人”的音频片段,再结合文本转写结果,自动生成带时间戳的会议摘要,准确率比无注意力方案提升了 22%。

文档摘要中的关键句定位

阶段:序列到序列生成

解决的问题:生成式摘要要把长文档压成三五句话,模型不知道该“重点看哪里”。注意力机制让模型在写摘要的每个词时,都回头去原文里寻找最相关的内容,摘要因此更聚焦。

具体案例:某财经资讯平台用带注意力的 Seq2Seq 模型生成上市公司研报摘要,模型在写“营收增长”时,注意力会集中在原文的财务数据段落上,生成的摘要被编辑评为“可直发”的比例从 40% 升到 68%。

Python 演示

python37 行
import torchimport torch.nn as nnimport torch.nn.functional as F  class BahdanauAttention(nn.Module):    """Bahdanau 对齐模型: e_ij = va^T tanh(Wa h_j + Ua s_{i-1})"""    def __init__(self, enc_dim, dec_dim):        super().__init__()        self.Wa = nn.Linear(enc_dim, dec_dim)        self.Ua = nn.Linear(dec_dim, dec_dim)        self.va = nn.Linear(dec_dim, 1)     def forward(self, query, keys):        # query: (B, 1, dec_dim) 解码器上一步隐藏态 s_{i-1}        # keys:  (B, T, enc_dim) 编码器全部源词隐藏态 h_1..h_T        e = self.va(torch.tanh(self.Wa(keys) + self.Ua(query)))  # (B, T, 1)        alpha = F.softmax(e.squeeze(-1), dim=-1)                 # (B, T)        context = (alpha.unsqueeze(-1) * keys).sum(dim=1)        # (B, enc_dim)        return context, alpha  def main():    torch.manual_seed(42)    batch, T = 1, 4    enc_dim = dec_dim = 8    keys = torch.randn(batch, T, enc_dim)      # 编码器输出的 4 张词卡    query = torch.randn(batch, 1, dec_dim)     # 解码器草稿 s_{i-1}    attn = BahdanauAttention(enc_dim, dec_dim)    context, alpha = attn(query, keys)    print("注意力权重 alpha:", [round(x, 3) for x in alpha[0].tolist()])    print("权重之和:", round(alpha.sum().item(), 3))    print("上下文向量维度:", tuple(context.shape))  if __name__ == "__main__":    main()
目的:用 PyTorch 实现 Bahdanau 论文中的对齐模型,输入编码器隐藏状态和解码器草稿,输出注意力权重与加权上下文向量。
  1. self.va = nn.Linear(dec_dim, 1)打分向量 \(v_a\),把融合后的特征压成一个标量得分。
  2. e = self.va(torch.tanh(self.Wa(keys) + self.Ua(query)))一次完成 \(W_a h_j + U_a s_{i-1}\)、tanh 激活和标量打分。
  3. alpha = F.softmax(e.squeeze(-1), dim=-1)沿着源词维度做 softmax,让权重总和为 1。
  4. context = (alpha.unsqueeze(-1) * keys).sum(dim=1)按权重对词卡加权求和,得到动态上下文。
  5. query = torch.randn(batch, 1, dec_dim)模拟解码器上一步隐藏状态 \(s_{i-1}\)。
  6. print("权重之和:", round(alpha.sum().item(), 3))验证 softmax 性质,输出应接近 1。

常见误区

误区注意力机制就是在原文里找出最相关的那一个词,然后只按这个词翻译,其他词都忽略。可视化里最亮的那条线,就代表模型“正在看”的唯一词语。

正解Bahdanau 是软对齐:所有源词的隐藏状态都会参与加权求和,只是权重有大有小,权重总和恒为 1。译“天空”时,模型对 “sky“ 给了 60% 的亮度、对 ”the“ 给了 32%,两者一起构成了”天空“这个词的语义。没有哪个源词会被完全”撕掉”。

为何常见:注意力热力图上通常有一条特别亮的对角线,视觉冲击太强,让人误以为模型每步只挑一个词。

误区上下文向量 c 就是编码器把整句压缩后的那个最终向量,和没有注意力的 Seq2Seq 没区别,只是换了个叫法。

正解Bahdanau 的上下文向量 \(c_i\) 是源句所有隐藏状态的加权平均,并且每翻译一个目标词都会重新计算一次。固定向量方案只有一份“整句摘要”;注意力方案则给每个译词配一份“专属摘要”,两者本质不同。

为何常见:旧版 Seq2Seq 里确实把最后状态叫作上下文向量,术语被沿用后容易产生混淆。

误区注意力权重就是拿译文词和源词算个余弦相似度或点积,再做归一化,整个过程没有额外参数。

正解点积注意力是后来的简化版本。Bahdanau 原始方案包含一个可学习的对齐模型,参数 \(W_a, U_a, v_a\) 随整个网络端到端联合训练。荧光笔怎么打光,不是人为设计出来的,而是模型从大量平行语料里自己总结出来的。

为何常见:很多人先接触了后来的点积注意力(Luong / Transformer),再用新学到的概念去理解 Bahdanau,就产生了“相似度匹配”的误读。

误区Bahdanau 提出的注意力是专门为翻译设计的,离开翻译任务就没有用武之地。

正解注意力是一个通用的序列建模组件,核心是“在不定长的候选集合中,动态分配注意力份额”。它很快被推广到语音识别(音频帧与文字对齐)、文本摘要(定位关键句)、图像描述(图片区域与单词对齐)等众多任务,最终演化为 Transformer 的自注意力。

为何常见:Bahdanau 的论文标题和研究动机都围绕翻译展开,读者容易把“应用场景”误当成“机制本身的适用范围”。

面试题

Q1. Bahdanau 注意力要解决的核心问题是什么?

单选题 · easy

  • A.训练速度过慢难以落地
  • B.固定长度向量的信息瓶颈← 正确答案
  • C.词表过大导致显存溢出
  • D.循环神经网络梯度消失

答案:B。Bahdanau 针对的是 Seq2Seq 把整句压成固定长度上下文向量导致的长句信息丢失问题。梯度消失由 LSTM/GRU 缓解,词表和训练速度并不是本文出发点。

Q2. 注意力权重 \(\alpha_{ij}\) 是如何得到的?

单选题 · easy

  • A.将所有注意力分数直接相加
  • B.对得分做 softmax 归一化← 正确答案
  • C.直接取所有源词中的最大得分
  • D.从源词中随机挑选一个词

答案:B。对齐得分 \(e_{ij}\) 先经指数函数转为正数,再除以所有源词得分之和,得到总和为 1 的权重。相加或取最大都不满足概率分布性质,随机挑选更是违背确定性训练。

Q3. 以下哪些属于 Bahdanau 注意力的组成部分?

多选题 · mid

  • A.可学习的对齐打分函数← 正确答案
  • B.softmax 权重归一化← 正确答案
  • C.对源词隐藏态加权求和← 正确答案
  • D.固定长度上下文向量

答案:ABC。对齐打分、softmax 归一化、加权求和上下文是三段式主流程。固定长度上下文向量恰恰是 Bahdanau 想摆脱的旧设计。

Q4. 上下文向量 \(c_i\) 的正确计算方式是?

单选题 · mid

  • A.编码器末位隐藏状态 \(h_T\)
  • B.源词向量的加权求和 \(c_i\)← 正确答案
  • C.所有源词隐藏态的最大值
  • D.对 \(h_T\) 做 tanh 激活

答案:B。\(c_i = \sum_j \alpha_{ij} h_j\),即按注意力权重对每个源词隐藏态加权求和。它是逐词动态变化的,而非固定取最后一位。

Q5. Bahdanau 的编码器为什么采用双向 RNN?

单选题 · mid

  • A.加快模型收敛速度
  • B.词表示同时包含左右语境← 正确答案
  • C.有效减少模型参数量
  • D.完全避免梯度消失问题

答案:B。前向隐藏态携带左边语境,后向携带右边语境,拼接后每个源词都能“看到前后文”。这和收敛速度、参数量无关,也不能根治梯度消失。

Q6. 关于软对齐的特征,下列说法正确的是?

多选题 · mid

  • A.权重系数连续且非负← 正确答案
  • B.每个源词都参与加权← 正确答案
  • C.所有权重之和恰好为 1← 正确答案
  • D.每一步只看权重最大的词

答案:ABC。软对齐的所有权重非负、和为 1,且没有任何源词被彻底排除。只挑最大词的方案属于硬对齐,不是 Bahdanau 的做法。

Q7. 对齐模型的参数是如何学习出来的?

单选题 · hard

  • A.单独预训练后再接入模型
  • B.依赖人工词对齐标注数据
  • C.与主网络端到端联合训练← 正确答案
  • D.使用强化学习策略优化

答案:C。对齐模型 \(W_a, U_a, v_a\) 与编码器、解码器一起通过反向传播联合优化,不需要人工对齐标注。它的打光规律完全从平行语料中自动涌现。

Q8. 解码器生成第 \(i\) 个词时,GRU 的输入包含哪些?

单选题 · hard

  • A.上一目标词、隐状态与上下文← 正确答案
  • B.仅当前步的解码器隐状态
  • C.下一源词与上一目标词的向量
  • D.源词向量与注意力权重的积

答案:A。GRU 更新公式为 \(s_i = f(s_{i-1}, y_{i-1}, c_i)\),三个输入分别是上一隐藏态、上一目标词和当前上下文向量。后面的源词对解码当前词是不可见的。

Q9. 关于 Bahdanau 注意力相比无注意力 Seq2Seq 的说法,正确的是?

多选题 · hard

  • A.长句的翻译质量显著提升← 正确答案
  • B.摆脱固定长度上下文向量← 正确答案
  • C.计算量高于无注意力模型← 正确答案
  • D.编码器无法处理变长序列

答案:ABC。注意力缓解了长句信息瓶颈,BLEU 显著提升,上下文变为逐词动态计算;代价是每一步都要对所有源词打分,计算量更大。Seq2Seq 本身就能处理变长序列,并非注意力的功劳。

Q10. 对齐得分 \(e_{ij}\) 的含义是什么?

单选题 · easy

  • A.第 j 源词与第 i 译词的关联得分← 正确答案
  • B.第 i 源词与第 j 译词的关联得分
  • C.第 i 译词生成的归一化概率
  • D.第 j 源词在词表中的嵌入编码

答案:A。下标 \(i\) 对应译文位置(解码步),\(j\) 对应源词位置。\(e_{ij}\) 评估“第 \(j\) 个源词对生成第 \(i\) 个译词有多大帮助”,它还不是最终概率,需要经过 softmax 归一化。