什么是注意力机制?它解决了传统 Seq2Seq 的什么瓶颈?

📅 2026/7/31 4:27:09
什么是注意力机制?它解决了传统 Seq2Seq 的什么瓶颈?
注意力机制Attention Mechanism核心定义注意力机制是一种让模型在处理序列时动态地为输入的不同部分分配不同权重的机制。它不是将整个输入序列压缩成一个固定向量而是让模型在每一步输出时都能回看输入序列的所有位置聚焦于与当前输出最相关的部分。基本计算过程以最常用的加性注意力Bahdanau Attention为例1. 计算对齐分数: e_t,i score(s_{t-1}, h_i) - s_{t-1}: 上一时刻的解码器隐状态 - h_i: 编码器第 i 时刻的隐状态 2. 归一化为权重: α_t,i softmax(e_t,i) 3. 加权求和生成上下文向量: c_t Σ α_t,i · h_i 4. 解码器使用 c_t 和 s_{t-1} 共同生成当前输出其中score可以是加性v^T · tanh(W_s · s W_h · h)Bahdanau点积s^T · hLuong缩放点积s^T · h / √d_kTransformer 使用解决的 Seq2Seq 瓶颈传统 Seq2Seq如基础 Encoder-Decoder LSTM/GRU有一个根本性缺陷瓶颈固定长度上下文向量信息瓶颈传统 Seq2Seq: 输入序列 → [Encoder] → 单个固定向量 c → [Decoder] → 输出序列 ↑ 所有信息必须压缩到这里这带来三个严重问题问题说明信息丢失长序列的早期信息在压缩到固定向量时被冲刷掉编码器最终隐状态偏向序列末尾内容长距离依赖衰减序列越长首尾之间的依赖关系越难保留梯度消失/信息衰减加剧无法对齐模型无法知道生成当前输出词时应关注输入的哪个位置缺乏词对词的对应能力注意力如何解决带注意力的 Seq2Seq: 输入序列 → [Encoder] → 全部隐状态 h_1, h_2, ..., h_n ↓ 每步解码时动态加权: c_t Σ α_t,i · h_i ← 只聚焦相关部分 ↓ [Decoder] → 输出序列关键改进保留全部中间状态编码器不再只输出最后一个隐状态而是保留所有时间步的隐状态{h_1, ..., h_n}动态聚焦解码器在每一步都计算一个上下文向量c_t根据当前需要自动关注输入的不同位置软对齐注意力权重α提供了可解释的软对齐矩阵直观展示输入输出之间的对应关系直观类比传统 Seq2Seq → 让人读完一整本书后只凭脑中一个总结回答所有问题 注意力机制 → 回答每个问题时都可以翻回书中找到最相关的段落来参考演进路线Bahdanau Attention (2014) → 解决 RNN Seq2Seq 的信息瓶颈 ↓ Luong Attention (2015) → 简化打分函数改进对齐方式 ↓ Self-Attention (2017) → Transformer 抛弃 RNN序列内部自注意力 ↓ Multi-Head Attention → 多个子空间并行关注不同模式一句话总结注意力机制通过让解码器在每一步动态访问编码器的全部隐状态打破了传统 Seq2Seq 将整个输入序列压缩为单一固定向量的信息瓶颈显著提升了长序列建模能力和可解释性并最终演化为 Transformer 的核心组件。