一篇论文定义一个时代:Transformer 与注意力机制全解析
GPT、Claude、Gemini、BERT……这些名字你一定不陌生。但你知道吗?它们全都建立在同一篇论文之上——Google 在 2017 年发表的 "Attention Is All You Need"。
这篇论文提出了 Transformer 架构,彻底改变了自然语言处理乃至整个 AI 领域的发展方向。今天我们就来一层一层地拆解它,看看这个"改变世界的架构"到底是怎么工作的。
1. 从一个问题开始:计算机怎么理解一句话?
在 Transformer 出现之前,主流的做法是用一种叫做 RNN(循环神经网络) 的模型来处理文字。
RNN 的工作方式很像我们人类阅读——从左到右,一个词一个词地读。每读到一个新词,就把它的信息和之前积累的"记忆"合并在一起:
"我" → 记住 → "喜欢" → 记住更多 → "吃" → 继续记 → "苹果" → 最终理解整句话
听起来很合理,但实际用起来有两个大问题:
问题一:太慢了
因为必须一个一个按顺序处理,读完第一个词才能读第二个,读完第二个才能读第三个。就像排队买奶茶,前面的人不买完,后面的人只能干等着。
现在的 GPU(Graphics Processing Unit,图形处理器)最大的优势就是"同时做很多事情"(并行计算),但 RNN 的这种串行方式完全发挥不了 GPU 的能力。
问题二:记不住远处的内容
当句子很短的时候,RNN 表现还不错。但句子一旦变长,前面的内容就会被后面的信息逐渐"冲淡"。
打个比方:你让一个人听一段 10 分钟的演讲,然后问他开头第一句说了什么——大概率记不清了。RNN 面临的就是这个问题,学术上叫**"长距离依赖问题"**。
虽然后来出现了 LSTM(Long Short-Term Memory,长短期记忆网络)、GRU(Gated Recurrent Unit,门控循环单元)等改进版本,一定程度上缓解了记忆问题,但串行处理的根本瓶颈始终没有突破。
Google 团队就在想:处理语言,真的需要"按顺序读"吗?
2. Transformer 的核心思想:不要按顺序读,直接全部看完
Transformer 的思路很大胆:干脆不要一个词一个词地读了,直接把整句话一次性摆在面前,让每个词去"看"其他所有的词。
就像考试的时候,RNN 是"听老师念一遍题目",而 Transformer 是"直接拿到整张试卷"——你可以来回翻看,自由对比任意两道题之间的关系。
这个"让每个词去看其他所有词"的机制,就叫做 Self-Attention(自注意力)。
论文标题 "Attention Is All You Need"(你只需要注意力)说的就是这个意思——不需要 RNN 的按序处理,不需要 CNN(Convolutional Neural Network,卷积神经网络)的局部扫描,只用注意力机制就够了。这在当时是相当大胆的宣言。
3. Self-Attention:到底怎么"看"?
光说"每个词看其他所有词"还是太抽象了。具体是怎么实现的呢?
3.1 一个生活中的例子
假设你在刷朋友圈。你看到了很多条动态,但你不会每条都仔细看——你会根据自己当前的兴趣,去判断哪些内容跟你有关,然后重点关注那些内容。
- 你刚失恋 → 你会特别注意朋友发的感情相关的内容
- 你刚升职 → 你会更关注事业相关的内容
- 你在减肥 → 美食帖你可能直接划过,健身帖你会多看两眼
Self-Attention 做的事情本质上一模一样:每个词根据自己的"身份",去判断其他词跟自己的关系有多密切,然后重点关注相关度高的词。
3.2 三个关键角色:Q、K、V
为了实现这个过程,论文设计了一个巧妙的机制,给每个词分配了三个角色:
- Query(查询)—— "我在找什么?"
- Key(标签)—— "我是关于什么的?"
- Value(内容)—— "我的具体信息是什么?"
继续用朋友圈的例子:
- 你的兴趣就是 Query —— 你在找什么样的内容?
- 每条动态的标题/话题标签就是 Key —— 这条动态是关于什么的?
- 动态的正文内容就是 Value —— 实际有什么信息?
计算过程是这样的:
- 你拿着自己的兴趣(Query),去和每条动态的标签(Key)做匹配
- 匹配程度越高,你给它的关注度就越大
- 最终你获得的信息,是所有动态内容(Value)按关注度加权混合的结果
在 Transformer 里,每个词的原始向量会通过三组不同的变换,分别产生这个词的 Q、K、V。然后每个词拿着自己的 Q 去和所有词的 K 做匹配,根据匹配分数来加权汇总所有词的 V。
论文用一个公式概括了整个过程:
如果你看到公式就头疼,别担心,翻译成大白话就是:
- :计算"我的兴趣"和"每条动态标签"的匹配程度
- :做个缩放,避免分数差距太极端(不然模型只看一条,完全忽略其他)
- :把分数转成比例(所有比例加起来等于 100%)
- :按比例提取每条动态的实际内容
一句话总结:每个词根据与其他词的相关度,有侧重地提取信息。
3.3 一个实际的例子
来看这句话:
"小明把苹果递给了小红,因为她很饿。"
当模型处理到"她"这个词的时候:
- "她"的 Query 表达的是:"我是一个代词,我指代的是谁?"
- "小明"的 Key 说:"我是一个男性人名"
- "小红"的 Key 说:"我是一个女性人名"
- "苹果"的 Key 说:"我是一个水果"
匹配结果:"她" 和 "小红" 的相关度最高(因为性别匹配),所以模型会重点关注"小红"的信息,从而正确理解"她"指的是小红。
这就是 Self-Attention 的威力——不管两个词离多远,只要它们相关,就能直接建立联系。
4. Multi-Head Attention:从多个角度看问题
但是有一个问题——一组 Q、K、V 只能捕捉一种关系。
还是那句话:"小明把苹果递给了小红,因为她很饿。"
这句话里其实有多种关系同时存在:
- 谁指代谁:"她" → "小红"
- 谁做了什么:"小明" → "递给"
- 因果关系:"饿" → "递苹果"的原因
一个注意力头可能学会了捕捉代词指代关系,但可能忽略了因果关系。
怎么办?多搞几组,同时从不同角度观察!
这就是 Multi-Head Attention(多头注意力)。论文中用了 8 个头,每个头有独立的 Q、K、V,各自学习不同类型的关系。最后把 8 个头的结果合并起来。
打个比方:看一部电影,一个人关注剧情,一个人关注演技,一个人关注配乐,一个人关注画面构图。每个人看到的东西不同,但把观点汇总起来,就能对这部电影有一个全面的理解。
5. Transformer 的完整架构:把积木拼起来
理解了注意力机制之后,来看 Transformer 的完整结构。论文设计的是一个 Encoder-Decoder(编码器-解码器) 架构,最初就是为了做机器翻译:
- Encoder(编码器):负责理解输入——读懂英文句子
- Decoder(解码器):负责生成输出——输出中文翻译
5.1 Encoder:理解输入
Encoder 做的事情是把输入文本转化为一组"深度理解后的特征向量"。
每一层 Encoder 包含两个核心模块:
- Multi-Head Self-Attention:让每个词看到句子中所有其他词(就是前面讲的)
- 前馈神经网络(FFN,Feed-Forward Network):对每个词的信息做进一步加工处理。这里的"前馈"是指数据只往前流动、不回头,区别于 RNN 那种会把输出再反馈回来的"循环"结构
这两个模块都加了一个重要的设计——残差连接。简单说就是:每个模块的输出 = 模块处理结果 + 原始输入。
为什么要这样?想象你在给一张照片做美化滤镜。如果滤镜效果太猛,原图可能面目全非。残差连接就像是"保留原图,只叠加修改的部分",确保信息不会在层层处理中丢失。
除了残差连接,每个模块之后还有一步 Layer Normalization(层归一化)。这个操作也不复杂——你可以把它理解为"统一度量衡"。模型内部流动的数字,经过多次计算后可能有的变得特别大、有的特别小,差距悬殊。Layer Norm 就是把这些数字重新拉回到一个统一的范围内,让模型的训练过程更加稳定,不容易"跑偏"。
论文堆叠了 6 层 Encoder,每一层都在前一层的基础上加深理解——就像反复精读一篇文章,每读一遍理解都更深一层。
5.2 Decoder:生成输出
Decoder 的结构和 Encoder 类似,但多了一个关键组件,总共三个模块:
-
Masked Self-Attention(带掩码的自注意力):在生成翻译时,模型是一个词一个词输出的。生成第 3 个词的时候,只能看到已经生成的前 2 个词,不能"偷看"后面还没生成的内容。就像写作文的时候,你只能基于已经写出来的内容继续往下写。
-
Cross-Attention(交叉注意力):这是连接 Encoder 和 Decoder 的桥梁。Decoder 拿着自己的 Query("我接下来该生成什么词?")去查看 Encoder 的输出("原文说了什么?"),从而生成准确的翻译。
-
前馈神经网络(FFN):同 Encoder。
同样堆叠 6 层。
5.3 位置编码:告诉模型词的顺序
Self-Attention 有一个天然的缺陷——它是"全局观察"的,不区分词的顺序。
"我爱你"和"你爱我"——这两句话用的词完全一样,如果模型不知道词的顺序,就会认为它们是同一个意思。
所以 Transformer 在输入的时候,会给每个词的向量加上一个位置编码(Positional Encoding),告诉模型"这个词在第几个位置"。
论文使用了基于正弦和余弦函数的编码方式。你可以理解为:给每个位置生成一个独特的"身份证号",模型看到这个编号就知道对应的词在句子中的位置。
这个设计有一个优点:它不仅编码了绝对位置(第 1 个、第 5 个),还能让模型推算出相对位置关系(它们之间隔了 4 个位置)。
补充说明:如果你看过上一篇关于多模态大模型的文章,会发现 ViT(Vision Transformer)的位置编码就是从这里借鉴的——只不过从一维的文本位置扩展到了二维的图片位置。
6. 为什么 Transformer 改变了一切?
2017 年之前,NLP(Natural Language Processing,自然语言处理)领域尝试了很多架构。为什么偏偏 Transformer 成为了最终赢家?
6.1 速度:并行计算的优势
RNN 处理一个 100 词的句子要 100 步,1000 词要 1000 步。Transformer 不管句子多长,一步就能计算所有词之间的关系。
在 GPU 上,这意味着训练速度可以快几十倍甚至几百倍。正是这种效率优势,让后来训练几千亿参数的大模型成为可能。
6.2 记忆:没有遗忘问题
在 Self-Attention 里,第 1 个词和第 1000 个词的"距离"是一样的——它们可以直接互相关注。不存在 RNN 中"信息在传递过程中逐渐衰减"的问题。
6.3 可扩展:想变大就变大
Transformer 的结构高度规整——就像乐高积木一样。想让模型更强大?
- 堆更多层
- 加更多注意力头
- 扩大向量维度
这种简洁的设计让"规模化"变得非常容易。后来的研究也证明了,Transformer 几乎是越大越强——这就是所谓的 Scaling Law(规模定律)。
6.4 通用:不只是处理文字
Transformer 最初是为机器翻译设计的,但很快人们发现它几乎可以处理任何序列数据:
- 文本:GPT、Claude、BERT(这些都是 Transformer 的变体)
- 图像:Vision Transformer(ViT)——把图片切成小块当作"词"来处理
- 音频:Whisper——把语音当作序列来处理
- 视频:把视频帧序列化后用 Transformer 处理
- 蛋白质结构:AlphaFold 2 也用了 Transformer
一个架构统一了几乎所有的 AI 任务,这在深度学习的历史上是前所未有的。
7. 从 Transformer 到大模型时代
最后,让我们看看这篇论文是如何催生出整个大模型时代的:
- 2017:Google 发表 "Attention Is All You Need",提出 Transformer
- 2018:Google 推出 BERT(Bidirectional Encoder Representations from Transformers)——只用 Encoder 部分
- 2018:OpenAI 推出 GPT-1(Generative Pre-trained Transformer)——只用 Decoder 部分
- 2020:Google 将 Transformer 搬到视觉领域,推出 ViT
- 2020:OpenAI 推出 GPT-3(1750 亿参数),展示了大模型的涌现能力
- 2022:ChatGPT 发布,大模型走入大众视野
- 2023-至今:GPT-4、Claude、Gemini 等多模态大模型百花齐放
这里有一个有趣的分叉——原版 Transformer 有 Encoder 和 Decoder 两部分,但后来的模型发现不一定两个都要:
BERT 只保留了 Encoder。 它的思路是:我不需要生成文字,我只需要深度理解文字就行。就像一个阅读理解高手——你给它一段话,它能精准地回答问题、判断情感、提取关键信息,但它不擅长自己写文章。BERT 的特别之处是它可以同时看到一句话的前后文(双向理解),所以对语义的理解非常深。
GPT 只保留了 Decoder。 它的思路正好反过来:我专注于一个词一个词地往下生成。就像一个写作高手——你给它一个开头,它能接着往下写出流畅的文章。GPT 只能从左往右看(单向),但正是这种"预测下一个词"的训练方式,让它在规模变大后展现出了惊人的通用能力——也就是后来的 ChatGPT。
简单记:BERT 擅长"读",GPT 擅长"写"。而今天的大模型(如 Claude、GPT-4)基本都走了 GPT 的路线——因为"能写"往往意味着"也能读",生成式的路线被证明更有潜力。
可以说,一篇论文,八个作者,定义了一个时代。
总结
回顾一下 Transformer 的核心脉络:
- 问题:RNN 太慢、记忆力差,无法处理长文本
- 解法:用 Self-Attention 替代按序处理——让每个词直接看到所有其他词
- 关键设计:Q-K-V 机制计算词与词的相关度,Multi-Head 从多角度捕捉关系
- 架构:Encoder 理解输入 + Decoder 生成输出,辅以位置编码和残差连接
- 影响:并行计算 + 无遗忘 + 可扩展 → 催生了整个大模型时代
下次当你和 ChatGPT 或 Claude 对话的时候,可以想一下:在你输入的每一句话里,每个词都在和其他所有词"对视",无数个注意力头在同时工作,从不同角度理解你的意思。这一切的起点,就是 2017 年那篇只有 15 页的论文。