第 10 节 / 共 12 节

第八章:Attention Is All You Need 论文真正说了什么

通俗版

绝大多数人对这篇 2017 年论文的印象就是"哦,Attention 嘛"。但读完前面七章再来看,会发现有三件事和你以为的不一样。

第一:它是一篇翻译论文

任务是英译德、英译法,刷翻译排行榜。原始架构是完整的"双塔结构"——左边 Encoder 读懂原文,右边 Decoder 吐出译文。现在你用的 ChatGPT 是把右塔(Decoder)单独拿出来用的,是"半台车",不是论文里的完整结构。

第二:论文里有三种 Attention,不是一种

  • Encoder 内部的 Self-Attention:双向的,每个词能看前后文
  • Decoder 内部的 Masked Self-Attention:带 Causal Mask,只能看已生成的词,不能偷看后面
  • Cross-Attention(交叉注意力):Decoder 扭头去看 Encoder 的输出

Cross-Attention 是翻译能工作的关键,但前面几章完全没提。它的工作方式是:Decoder 生成每个词时,把当前的生成状态作为 Q,把 Encoder 的输出作为 K 和 V,做一次注意力计算,查询"我现在要生成的这个词,应该关注原文的哪些部分"。

用翻译"我爱北京天安门"为例:Encoder 读完整句中文输出 5 个向量,Decoder 已经生成了"I love",现在要生成第三个词。Cross-Attention 让当前状态(Q)和原文 5 个词的 K 向量计算相似度,发现"天安门"这个词分数最高,于是从"天安门"对应的 V 向量里吸收信息,生成"Tiananmen"。每生成一个词,都重新做一次这个查询。

第三:最大卖点是"快",不是"准"

论文标题"Attention Is All You Need"的潜台词是"把 RNN/LSTM 全扔了"。RNN 必须串行处理(第一个词处理完才能处理第二个),没法并行;Transformer 所有词同时处理,可以充分利用 GPU 并行计算能力。训练时间从"几周"变成"8 张 GPU 跑 3.5 天",还顺手把翻译质量刷到了当年 SOTA。它能掀翻整个领域,靠的是并行——Attention 是拿来实现并行的工具。

BERT / GPT / T5 的分家

原始双塔拆开之后,走了三条路:

  • 只留 Encoder(BERT):双向 Self-Attention,每个词能看前后文。擅长"理解"——读一段话,做分类、问答、实体识别。
  • 只留 Decoder(GPT/LLaMA):有 Causal Mask,只能看前面的词。擅长"生成"——给一个开头,续写下去。
  • 保留双塔(T5/BART):Encoder 读原文,Decoder 生成目标文本,中间通过 Cross-Attention 连接。擅长"转换"——翻译、摘要、改写。

这不是谁更先进,是任务决定架构。Causal Mask 的有无从根本上决定了模型"能看到什么信息",进而影响了它学到的表示类型。

为什么 Causal Mask 这个细节会决定能力边界?

Encoder(没有 Mask,双向):处理"苹果"这个词时,它既能看到左边的"发布",也能看到右边的"手机"。上下文是完整的,所以 Encoder 的向量表示质量更高——它知道"苹果"在这里是科技公司,不是水果。高质量的表示适合做分类、问答这类"需要完整理解"的任务。但 Encoder 没有"续写"能力,因为它不是设计来逐步生成的。

Decoder(有 Causal Mask,单向):处理"苹果"时只能看到左边,不知道右边是"手机"还是"好吃"。信息是残缺的,但这个残缺是刻意的——正是这个限制,逼着模型学会"在只知道前文的情况下预测下一个词",也就是生成能力。反过来,正因为在训练时每个词都只看到残缺的上下文,它的向量表示不如 Encoder 完整。

所以这两类模型的能力差距,本质上是训练时"能看到多少信息"的差距,不是架构大小的差距。


进阶版

残差连接(Residual Connection)

原始 Transformer 完全没提 Residual Connection 的重要性,但它是 Transformer 能堆叠到上百层的关键。

每一层的输出是 output = input + f(input) 而不是 output = f(input)。

关键在于:如果 f(input) 趋近于 0(这一层没学到东西),output 就等于 input,信号原封不动流过去。梯度也可以无衰减地流回去——通过加法,梯度不会被乘法截断,这使得 100 层的网络也能稳定训练。

类比 iOS 里的 CALayer 叠加:如果某一层的 alpha=0(什么都不渲染),下面的内容直接透出来。残差连接就是给每一层加了一条"透明通道",让信号即使在这一层没有学到任何东西的情况下,也能原封不动地传到下一层。

Layer Norm 通常在残差之后,把每一层的输出归一化到相似的数值范围,防止不同层之间的数值分布差异过大导致训练不稳定。两者配合,是 Transformer 能堆叠到上百层的工程基础。

Masked Decoder Self-Attention 的实现细节

Causal Mask 在实现上是一个上三角矩阵,diagonal 以下是 0,以上是 -∞。在计算 softmax 之前,把注意力分数矩阵和这个 mask 相加,未来位置的分数变成 -∞,softmax 之后趋近于 0,等效于当前 token 对未来 token 的注意力权重为零。

这个实现的优势是:虽然逻辑上每个 token 只能看左边,但矩阵乘法在硬件上依然批量并行完成,mask 只是在分数层面把不合法的位置屏蔽,不影响并行计算效率——这是训练时 Transformer 比 RNN 快得多的根本原因。


读完继续 用互动实验验证上面的内容
09 · 互动实验 Transformer 架构

观察结构组成、可见范围和适合任务如何一起变化。

100%