← 返回题目列表

Seq2Seq 中为什么需要 Attention?

高频 中等 第 7 / 25 题 更新于 2026/09/20
RNNLSTMGRU序列建模
学习 AI 实战项目

简化版

Seq2Seq Attention 在每个解码步根据当前 decoder state 对 encoder 各位置打分、softmax 得权重并加权上下文,缓解把整段输入压成单一向量的瓶颈。Mask 必须排除输入 padding。

详细版

  • Bahdanau 使用加性打分,Luong 常用点积/双线性。

  • 权重在源序列位置归一化。

  • 每步上下文随 decoder state 改变。

  • 注意力权重可辅助对齐分析,但不自动等于因果解释。

  • 标准 attention 每解码步扫描全部源位置,成本 O(TS)。

完整版教学

一、Attention 让 decoder 按需回看源序列

无 attention 的 encoder 要把所有信息塞进最终 state,长序列容易遗忘。

Attention 保留整条 encoder 输出,让 decoder 每一步动态选择相关位置。

对齐是软的:上下文为所有位置加权和,梯度可端到端传播;若 padding 未 mask,无效位置也会分走概率。

二、底层机制与公式

e_ti=v^T tanh(W_s s_(t-1)+W_h h_i)
a_t=softmax(e_t+pad_mask)
c_t=sum_i a_ti*h_i

三、带数字的推演

源序列 3 个有效位置打分 [2,1,0],softmax 约 [0.665,0.245,0.090];若第 3 位是 PAD,应先设 -inf,剩余权重重归一为约 [0.731,0.269,0]。

四、方案对比

方案/对象核心特点代价或边界
无 Attention状态小、快长序列瓶颈
加性 Attention表达灵活额外投影成本
点积 Attention矩阵计算高效维度/尺度敏感

五、执行流程

encoder 输出 h_1:S -> decoder state s -> 打分 e_t1:S -> mask
-> softmax a -> 加权 c -> 预测 token -> 更新 decoder state

六、边界条件与工程代价

长源序列每步全扫描会增加延迟,可用局部/单调 attention 或缓存投影。

可视化权重只能说明模型内部加权,不证明某输入 token 对输出有因果贡献;需遮挡等忠实度验证。

记忆钩子:Attention 的四步是“打分、mask、softmax、加权和”。

七、常见误区与追问

  • 误区:Attention 只使用权重最大的位置。 它通常是全部位置的加权和。

  • 追问:为什么先 mask 再 softmax? 让无效位置不进入归一化分母。

  • 误区:权重图就是可靠解释。 注意力分布不等于因果贡献。

  • 追问:Bahdanau 与 Luong 区别? 典型是加性与点积/双线性打分。

  • 追问:复杂度为什么是 O(TS)? T 个解码步各扫描 S 个源位置。

八、加强记忆

Attention 的四步是“打分、mask、softmax、加权和”。

它把单向量瓶颈变成逐步查阅整段 encoder 记忆。