注意力就是你所需要的一切

一份对彻底改变现代AI的Transformer架构的深度解析

基于 Ashish Vaswani 等人的开创性论文 (2017)

🏷️ 分类: 技术 科学
🔖 标签: #Transformer #自注意力机制 #人工智能 #深度学习 #并行计算 #长距离依赖

旧时代的瓶颈:顺序处理的枷锁

循环神经网络 (RNN)

RNN 按顺序处理数据,当前步骤的计算依赖于上一步的结果。就像多米诺骨牌,必须一个接一个倒下。

ht-1 xt ht

❌ 难以并行计算

其固有的顺序性阻碍了在现代GPU上的大规模并行训练,导致训练时间漫长。

❌ 难以捕捉长距离依赖

信息需要逐级传递,距离越长,信息衰减越严重(梯度消失/爆炸问题)。

新范式:Transformer 架构

Transformer 摒弃了循环结构,完全依赖一种名为“自注意力”的机制来并行处理所有输入。它由两个核心部分组成:编码器和解码器。

编码器 (Encoder)

将输入序列(如一个句子)转换为一系列富含上下文信息的连续表示。

输入嵌入 + 位置编码
多头注意力
前馈网络
↓ (重复 N 次)

解码器 (Decoder)

利用编码器的输出和已生成的部分,一次一个地生成输出序列。

输出嵌入 + 位置编码
带掩码的多头注意力
编码器-解码器注意力
前馈网络
↓ (重复 N 次)

核心引擎:注意力机制

缩放点积注意力

这是 Transformer 的基本单元。它为输入序列中的每个元素计算一个“注意力分数”。可以将其理解为一个复杂的、可微分的查字典操作:
查询 (Query, Q): 当前正在处理的元素。
键 (Key, K): 序列中所有可以被关注的元素。
值 (Value, V): 与键关联的、真正携带信息的元素。

\[ \mathrm{Attention}(Q, K, V) = \mathrm{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V \]

除以 \(\sqrt{d_k}\) 是为了防止点积结果过大,导致梯度消失。

多头注意力

“三个臭皮匠,顶个诸葛亮”。多头注意力机制将 Q, K, V 投影到多个不同的、低维度的表示空间中,并行地执行注意力计算,最后再将结果拼接起来。

这使得模型能够同时关注来自不同表示子空间的信息。例如,一个头可能关注语法关系,另一个头关注语义相似性。

[head1] [head2] ... [headh] → Concat → Linear

解决顺序难题:位置编码

由于自注意力本身不处理顺序信息(“the”在句首和句末的表示一样),我们必须手动注入位置信息。Transformer 使用了正弦和余弦函数来创建独特的位置编码。

公式

\[ PE_{(pos,2i)} = \sin(pos / 10000^{2i/d_{\text{model}}}) \] \[ PE_{(pos,2i+1)} = \cos(pos / 10000^{2i/d_{\text{model}}}) \]

其中 `pos` 是位置,`i` 是维度。每个维度对应一个不同频率的正弦波,这使得模型能轻易地学习到相对位置关系。

硬实力对比:为什么是自注意力?

层类型 每层计算复杂度 顺序操作数 最大路径长度
自注意力 (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(logk(n))

结论:自注意力在并行计算(顺序操作数为常数)和学习长距离依赖(路径长度为常数)方面具有压倒性优势。

SOTA 成果:更优、更快、更高效

WMT 2014 翻译任务 BLEU 分数对比

训练成本:数量级的飞跃

Transformer (Big) 在8块P100 GPU上仅需训练 3.5天

训练成本 (FLOPs)

2.3 x 1019

这仅是当时其他顶尖模型训练成本的 一小部分 (例如 GNMT+RL: 1.4 x 1020)。

探索与发现:模型如何调优?

注意力头数越多越好吗?

实验表明,并非如此。头数从1增加到8时性能提升,但继续增加到16或32,性能开始下降或持平。这说明存在一个“甜点区”。

模型越大,效果越好

更大的模型(Transformer Big)在开发集上获得了更高的 BLEU 分数 (26.4 vs 25.8)。

正则化至关重要

Dropout 对于防止过拟合非常有帮助,是训练大型模型的关键技术。

结论:开启一个新纪元

Transformer 不仅仅是一个性能卓越的模型,它是一种全新的思维方式。通过完全依赖注意力机制,它打破了顺序处理的束缚,释放了并行计算的巨大潜力,并为处理长距离依赖问题提供了优雅的解决方案。

它成为了此后几乎所有大型语言模型(如 GPT、BERT)的基石,为我们今天所见的生成式 AI 浪潮铺平了道路。