【读论文】Attention Is All You Need

Attention Is All You Need

作者与单位

作者主要来自 Google Brain 和 Google Research, 还有多伦多大学
这几位后面基本都成为了深度学习, 大模型领域的领军人物

摘要

  • 本文针对序列转换, 现有模型大多依赖于: RNN, CNN, Encoder-Decoder 等结构, 一些更好的模型会用注意力机制链接 Encoder 和 Decoder
  • 本文提出一种新的架构: Transformer, 其只保留了 Attention 机制
  • 实验证明, Transformer 效果好, 且容易并行, 训练时间更短, 在翻译任务上取得了非常好的成绩

引言

主流模型与局限

  • 一些 RNN 网络, 比如 LSTM 和 GRU, 被认为是序列建模最优解
  • RNN 按时序逐步计算, 导致计算只能串行, 计算效率很低

Attention 机制的现状

  • 注意力机制可以很好的建模长距离依赖, 不收序列位置的限制
  • 当前 Attention 只是被作为 RNN 的辅助, 而不是替代

提出 Transformer

  • 本文完全摒弃 RNN, 只采用 Attention 机制对于输入输出的全局依赖进行建模
  • Transformer 架构支持高并行, 训练速度很快

背景

改进思路 : 用 RNN 替代 CNN

  • 对于 RNN 的一些弊端, 有人通过 CNN 来改进和解决
    • 这样一来, 可以并行计算
    • 但是仍然在建模长距离依赖时存在结构限制

自注意力机制发展现状

  • 自注意力: 序列内部不同位置相互关注, 构建序列的新表示
  • 自注意力机制表现不错

Transformer 突破点

  • 第一个完全基于自注意力的序列转换模型

模型架构

../../source/Pasted image 20250703143355.png

Encoder - Decoder 框架

  • 现有最主流的序列模型都采用这种框架
    • Encoder 把输入序列转换成连续表示
    • Decoder 基于 z 和之前的输出(自回归), 逐步生成输出序列
  • Transformer 整体结构:
    • Encoder : 堆叠多层自注意力+前馈网络
    • Decoder : 堆叠多层 Masked 自注意力 + Attention + 前馈网络

Encoder - Decoder 堆叠结构

Encoder

  • 包含 6 个相同的层
  • 每层包含:
    • 多头自注意力
    • 前馈神经网络
    • 残差连接
    • 层归一化
  • 所有子层, Embedding 的输出维度一致 : d_model = 512

Decoder

  • 包含 6 个相同的层
  • 每层包含:
    • 掩码自注意力 : Mask 是为了防止看到未来信息
    • 输入序列的注意力
    • 前馈神经网络

Attention 机制

给定一个 Query(查询),在一组 Key-Value(键-值)对 中,计算每个 Value 的加权平均

点乘注意力

$$ Attention(Q,K,V)=softmax(\frac{QK^T}{\sqrt{d_k}}​)V $$
  • Q:查询矩阵(Query)
  • K:键矩阵(Key)
  • V:值矩阵(Value)
  • d_k:Key 的维度
$\sqrt{d_K}$
  • 防止维度太大时,点积结果过大,导致 softmax 梯度消失

多头注意力

  • 单个注意力容易平均掉所有信息,多头可以并行关注不同的子空间信息
  • 计算:
    • 每个头把 QKV 线性映射到低维空间
    • 各自计算 Attention
    • 拼接所有头的结果
    • 映射回原维度
  • 其中,参数:
    • 头数: head = 8
    • 每个头的维度: d_k = d_v = 64

注意力应用场景:

  1. Encoder Self-Attention:输入序列内部互相关注
  2. Encoder-Decoder Attention:解码时关注整个输入序列
  3. Decoder Self-Attention:生成当前词时,关注已经生成的词,必须 Mask 未来

前馈网络

$$ FFN(x)=max(0,xW_{1}​+b_1​)W_2​+b_2​ $$
  • 输入输出维度: 512
  • 中间层维度: 128
  • 每个位置单独应用(point-wise), 全序列并行

Embedding 和 Softmax

  • 输入输出序列用 Embedding 转换成 512 维向量
  • Decoder 输出经过 线性层 + Softmax 预测词概率
  • 输入、输出 Embedding、Softmax 权重共享

位置编码

  • Attention 机制无法包含位置信息, 需要额外引入
  • 使用正弦-余弦位置编码
$$ PE(pos,2i)=cos(\frac{pos}{10000^{2i/d_{model}​}}) $$
$$ PE(pos,2i+1)=cos(\frac{pos}{10000^{2i/d_{model}​}}) $$
  •  每个维度对应一个不同频率的正弦波,支持模型自动学习相对位置

为何用自注意力机制

为何比较

本段比较三种模型: Self-Attention, RNN, CNN
比较这三种模型在序列建模时的表现差异

比较维度

  1. 计算复杂度: 每层的理论运算量
  2. 并行能力: 最少多少步完成运算
  3. 长距离依赖路径: 网络中两个远距离词之间的最短信息路径长度
    其中, 这是序列任务中的难点

比较结果

Layer Type Complexity per Layer Sequential Operations Maximum Path Length
Self-Attention O(n² · d) O(1) O(1)
Recurrent O(n · d²) O(n) O(n)
Convolutional O(k · n · d²) O(1) O(logₖn)
Restricted Self-Attention O(r · n · d) O(1) O(n/r)

字母解释:

  • n:序列长度
  • d:向量维度
  • k:卷积核宽度
  • r:Self-Attention 限制的窗口大小

结果解读:

  • 自注意力机制的路径最短, 学习长依赖最简单
  • 自注意力机制完全并行, 训练速度快
  • 复杂度不算很低, 但是对于短句, 计算开销很低
  • 此外, 自注意力机制具有可解释性:
    • 注意力矩阵权重可以直观展现模型更关注哪些词, 有助于解释模型决策路径

训练

训练数据与批处理

  • 使用WMT2014 英德数据集
  • 使用 BPE 子词划分方法
  • 按句子长度相近分批(减少 padding, 提升计算效率)

硬件配置与训练计划

  • 使用 8 张 P100
  • 总训练时长 12 小时(Base 模型)
  • 训练速度比其他模型快了很多很多

优化器设计

  • 使用 Adam 优化器: beta1=0.9, beta2=0.98, epsilon = 10^-9
  • 学习率使用分段动态调整策略:
    • 前期: 使用warmup : warmup_steps = 4000
    • 后期: 按照 $1/\sqrt{step_{num}}$ 逐步衰减

正则化手段

  1. Dropout: 0.1
    1. 对每个子层和所有 embedding 都使用 dropout
  2. label smoothing:0.1
    1. 让模型对预测不那么自信, 分布更平滑
    2. 降低过拟合

结果

机器翻译

超越当时所有的集成模型

消融实验

变化项 BLEU(基准 25.8) 影响分析
单头 Attention 24.9 明显变差
过多头数(32头) 25.4 超过 8 头后效果不再提升
较小的 key size 25.1 影响兼容性评分,效果下降
较大隐藏层(4096) 26.2 增大模型提升效果
不使用 Dropout 24.6 严重过拟合,效果下降
不使用 Label Smoothing 25.3 小幅度变差
学习型位置编码 25.7 与正弦位置编码几乎等价
  • 头数:8 个头最优,太少信息不足,太多会稀释注意力
  • key size 不能太小,兼容性匹配复杂,key 必须高维
  • Dropout 很重要,防止过拟合
  • Label Smoothing 有正向帮助,但不是决定性因素
  • 正弦位置编码和可学习位置编码效果差不多(后来 BERT 用的就是可学习型)

句法分析任务

表现非常接近 SOTA, 且参数几乎没有调整
说明泛化和迁移能力非常强

结论

Transformer 主要贡献

第一个完全基于 Attention 的序列建模模型

  • Transformer 完全去除了 RNN 和 CNN
  • 核心结构是 多头自注意力(Multi-Head Self-Attention)
  • 去掉序列对齐
  • 全面用 Attention 替代序列建模基础
  • 并行性高,训练效率极高
  • 单模型超越集成模型,训练成本更低

未来计划

  1. 拓展到 非文本任务,包括:
    • 图像
    • 音频
    • 视频
  2. 研究 局部/限制性 Attention,以适配更大输入(例如长序列或高维图像)
    1. Vision Transformer(ViT)
    2. Longformer、BigBird、Sparse Attention
    3. Multimodal Transformer(如 CLIP、BLIP)
  3. 减少生成时的序列依赖(提高解码效率)
    1. Non-Autoregressive Translation(非自回归翻译)
    2. BERT-like Masked Language Models
    3. Parallel Decoding 的研究起点
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计