🧠 Transformer: A Foundational Blueprint for Sequence Modeling

https://arxiv.org/html/1706.03762

摘要 (Abstract): 本文提出 Transformer 模型,一个革命性的序列转换模型。它完全摒弃了传统的循环(RNN)和卷积(CNN)层结构,仅依靠自注意力(Self-Attention)机制进行信息捕获。此设计极大地提升了模型并行训练的能力,从而实现了在机器翻译乃至更广泛序列任务(如自然语言理解)上达到领先的性能(State-of-the-Art, SOTA)。

核心思想: 通过将序列依赖建模转变为全局、平行的注意力计算,模型能够以 O(1)O(1)O(1) 的路径长度捕获远距离依赖,从而解决了RNNs固有的梯度衰减和顺序计算瓶颈。


Ⅰ. 性能与工程优势分析 (Performance and Engineering Advantage)

Transformer 最核心的优势在于其计算范式的转变:从序列依赖并行依赖

1. WMT 2014 性能指标对比 (Key Benchmark Results)

任务 (Task) 评估模型 (Model) BLEU 分数 (Score) 训练成本 (FLOPs) 关键提升 (Improvement Notes)
EN →\rightarrow DE Transformer (大型) 28.4 2.3⋅10192.3 \cdot 10^{19}2.31019 相比同类混合模型提升 > 2.0 BLEU
EN →\rightarrow FR Transformer (大型) 41.8 2.3⋅10192.3 \cdot 10^{19}2.31019 单模型达到 SOTA(新的基准点)

工程学洞察:

  1. 计算效率: Transformer 在保证模型质量的同时,极大地降低了训练所需的浮点运算次数(FLOPs),与早期的最佳模型(如 GNMT + RL Ensemble: 1.1⋅10211.1 \cdot 10^{21}1.11021 FLOPs)相比,效率提升巨大。
  2. 泛化能力: 模型成功地泛化到英语成分句法分析(Constituency Parsing)等任务,展现出卓越的鲁棒性。

Ⅱ. 深度模型架构解析 (In-Depth Model Architecture)

Transformer 维持了经典的 编码器-解码器 (Encoder-Decoder) 架构,但所有的核心组件均被注意力机制重构,消除了所有递归或顺序计算。

1. 编码器堆栈 (Encoder Stack)

  • 层数 (N): 6 层结构。
  • 每层组件 (Components →2\rightarrow 22 个):
    1. 多头自注意力机制 (Multi-Head Self-Attention): 允许序列中的任一位置(Query)同时关注输入序列中的所有其他位置(Key/Value)。
    2. 位置全连接前馈网络 (Position-wise FFN): 独立且相同的全连接网络,作用于每个位置的输出。
  • 内部结构 (Structure): 每一子层均通过残差连接 (Residual Connection) 和层归一化 (Layer Normalization) 进行稳定化处理:LayerNorm(x+Sublayer(x))\mathrm{LayerNorm}(x+\mathrm{Sublayer}(x))LayerNorm(x+Sublayer(x))
  • 维度统一性: 所有子层的输出维度均标准化为 dmodel=512d_{\text{model}}=512dmodel=512(基础模型配置)。

2. 解码器堆栈 (Decoder Stack)

  • 层数 (N): 6 层结构。
  • 每层组件 (Components →3\rightarrow 33 个):
    1. 掩码多头自注意力 (Masked Multi-Head Self-Attention): 关键点,为保持自回归特性,此层机制阻止了当前位置关注到未来的信息。
    2. 编码器-解码器注意力 (Encoder-Decoder Attention): 这是一个跨模态交互层。其 Query 来自于前一个 Decoder 层;而 KeyValue 则来自于整个 Encoder 的输出。这机制确保了解码器可以利用编码器提供的完整源上下文进行对齐。
    3. 位置全连接前馈网络 (Position-wise FFN)。

Ⅲ. 核心机制详解 (Core Mechanism Deep Dive)

1. 注意力机制 (The Attention Function)

注意力函数定义了如何使用查询 (Q\mathbf{Q}Q) 与键/值对 (K,V\mathbf{K}, \mathbf{V}K,V) 交互,输出加权聚合的信息。

A. 缩放点积注意力 (Scaled Dot-Product Attention, SPD)
Attention(Q,K,V)=softmax(QKTdk)V(1)\mathrm{Attention}(Q,K,V)=\mathrm{softmax}\left(\frac{QK^{T}}{\sqrt{d_{k}}}\right)V \quad (1)Attention(Q,K,V)=softmax(dk QKT)V(1)

  • dk\sqrt{d_k}dk 的作用: 将点积结果除以 dk\sqrt{d_k}dk (键向量维度),是为了防止点积结果过大,从而将 softmax 函数的输入值过大,造成训练梯度消失。

B. 多头注意力 (Multi-Head Attention)
它不使用单个巨大的注意力函数,而是并行地执行 hhh 个不同的注意力函数,每个头使用不同的线性投影矩阵 (WiQ,WiK,WiVW^Q_i, W^K_i, W^V_iWiQ,WiK,WiV)。
MultiHead(Q,K,V)=Concat(head1,...,headh)WO\mathrm{MultiHead}(Q,K,V) = \mathrm{Concat}(\mathrm{head}_1,...,\mathrm{head}_h)W^OMultiHead(Q,K,V)=Concat(head1,...,headh)WO
其中, headi=Attention(QWiQ,KWiK,VWiV)\text{其中, } \mathrm{head}_i = \mathrm{Attention}(QW^Q_i,KW^K_i,VW^V_i)其中headi=Attention(QWiQ,KWiK,VWiV)

  • 科学意义: 这种方法使得模型可以从不同的表示子空间(representation subspaces)中联合地捕获信息,极大地增强了模型的表征能力。

2. 位置编码 (Positional Encoding, PE)

由于 Transformer 缺乏 RNN/CNN 固有的顺序捕捉能力,必须显式地将词汇的绝对或相对位置信息注入到输入嵌入层。

建议的实现方案: 采用正弦 (Sinusoidal) 和余弦 (Cosinusoidal) 函数生成编码,其公式为:
PE(pos,2i)=sin⁡(pos100002i/dmodel)\mathrm{PE}_{(pos,2i)}=\sin\left(\frac{pos}{10000^{2i/d_{\text{model}}}}\right)PE(pos,2i)=sin(100002i/dmodelpos)
PE(pos,2i+1)=cos⁡(pos100002i/dmodel)\mathrm{PE}_{(pos,2i+1)}=\cos\left(\frac{pos}{10000^{2i/d_{\text{model}}}}\right)PE(pos,2i+1)=cos(100002i/dmodelpos)

  • 设计哲学: 选用周期性的正弦/余弦函数是基于一个关键假设:模型可以容易地从这些函数中学习出相对位置 (Relative Position) 的信息。具体来说,PEpos+k\mathrm{PE}_{pos+k}PEpos+k 可以写成 PEpos\mathrm{PE}_{pos}PEpos 的线性函数形式。

Ⅳ. 理论复杂度对比 (Complexity Analysis Table)

Transformer 通过 O(1)O(1)O(1) 的路径长度,彻底解决了顺序计算限制下的问题。

Layer Type 单层复杂度 (Complexity per Layer) 运算依赖性 (Sequential Dependency) 最大路径长度 (Maximum Path Length)
自注意力 O(n2⋅d)O(n^2 \cdot d)O(n2d) O(1)O(1)O(1) O(1)O(1)O(1)
循环网络 (RNN) O(n⋅d2)O(n \cdot d^2)O(nd2) O(n)O(n)O(n) O(n)O(n)O(n)
卷积网络 (CNN) O(k⋅n⋅d2)O(k \cdot n \cdot d^2)O(knd2) O(1)O(1)O(1) O(log⁡k(n))O(\log_k(n))O(logk(n))

结论: 极低的路径长度 O(1)O(1)O(1) 是自注意力架构能够大规模并行化的根本数学保证。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐