IT 论文精读 · PAPER 1
Vaswani 等 · Google · NeurIPS 2017
2017 年,Google 一队人提出了一个叫 Transformer 的新「大脑结构」。你今天听说的 ChatGPT、各种 AI 聊天和绘画,几乎全都长在这个结构上——这篇论文就是它的出生证明。
读这句话:「小猫没过马路,因为它太累了。」你一眼就知道「它」指小猫、不是马路——因为读到「它」的时候,你会回头扫一眼整句话,判断谁跟「它」最相关。
Transformer 干的就是这件事:让句子里每个词,都回头扫一眼全句、自己决定该重点看谁。这个「按相关度分配注意力」的动作,就叫注意力(attention)——论文标题说「注意力就是你需要的全部」,正是这个意思。
在它之前,机器读句子像排队传话:一个词一个词地读,前面的信息一站站往后传。句子一长,前头说了啥就传糊了、传丢了;而且必须一个接一个,快不起来。
Transformer 把「排队传话」换成了开会:所有词一次性摆上桌,每个词同时看向所有词、一步就能跟最远的词对上话。于是两个好处:① 快(大家并行地看,不用排队)、② 记性好(再远的词也一步够到,不会传丢)。
每个词身上挂着两张小标签:一张写「我在找什么」(比如「它」在找前面出现过的一个名词),一张写「我是什么」(比如「小猫」是个动物名词)。一个词就拿自己那张「我在找什么」,去跟全句每个词的「我是什么」逐一比一下——越对得上,就越多地听那个词的。「它」的「找名词」对上了「小猫」的「是名词」,于是它重点听小猫。整件事就是这么朴素的「按匹配度分配注意力」,没有玄机。
而且它不止用一种眼光看:同时用好几套标签、从好几个角度看(一套盯语法、一套盯谁指代谁、一套盯语气……),最后再合起来——这叫多头。另外,因为所有词是「一次性摆上桌」的、天生没了先后,模型还会给每个词发一个「座位号」,好知道谁在前谁在后。
代价也有:词一多,两两之间都得互相看一眼,计算量涨得很快,所以特别长的文本它会吃力——这正是后来一堆改进想解决的问题。
因为又快又记得住,人们发现只要把这个结构堆得更大、喂更多数据,它就越来越聪明——于是有了 BERT、GPT,一路长成今天会聊天、会写代码、会画画的大模型。可以说,今天几乎每个厉害的 AI,心脏里都是这篇论文的这套「开会」机制。
让句子里每个词都回头扫一眼全句、自己决定重点听谁——用这个「注意力」动作,取代老式的「排队传话」,于是 AI 读得又快、又记得住远处的关系。这套结构后来长成了几乎所有大模型。
想深入到机制、公式和示意图? → 切到精读版
这篇论文提出了 Transformer:一个彻底丢掉循环(RNN)和卷积(CNN)、只靠「注意力」一种机制处理序列的架构。它让模型一次看到整句话、并行算出每个词该关注谁,于是既训得快、又能一步抓住相距很远的词之间的关系。这个 2017 年为机器翻译而生的架构,后来成了 BERT、GPT 乃至今天几乎所有大模型的共同地基。
八位作者来自 Google,论文发在 2017 年的 NeurIPS。在它之前,序列建模的王者是循环神经网络(RNN)尤其是 LSTM,通常再配上 2014 年 Bahdanau 等人引入的注意力(attention)作为附加组件。这篇论文的胆识,是把注意力从「配角」提成「唯一主角」——标题本身就是宣言。当时「去掉循环结构」远非显而易见:RNN 主导序列建模已近三十年。
RNN 有两个死结。一是不能并行:它必须一个词一个词地算,第 t 个词的状态依赖第 t-1 个,像多米诺骨牌顺次推倒,句子越长越慢,喂不满 GPU 的并行算力。二是长距离依赖抓不住:一句话里「它」指代几十个词之前的哪个名词,这份信息要沿时间步一格格传过去,路径太长,梯度容易消失(训练时反向传回来的、用来调整模型的信号越传越弱、几乎归零,于是学不动远处的关系),远处的关联被稀释。
其实注意力 2014 年就有了,但那时只是挂在 RNN 骨架上的附加件,主干还是循环网络,顺序枷锁没解开。这篇论文反过来想:既然真正干活的是注意力,能不能把 RNN 整个扔掉、只留注意力?目标是一个既能像 CNN 那样并行、又能让任意两词「一步直连」的架构。
做法是:每个词生成三个向量——查询(Query)、键(Key)、值(Value)。可以想象成:Query 是「我想找什么」,Key 是「我是什么、能被谁找到」,Value 是「找到我之后我能提供的信息」。这三个向量是用三个可学习的矩阵,把同一个词向量投影出来的三副面孔。
一个词更新自己时,拿自己的 Query 去和全句每个词的 Key 打分(点积,越像分越高),把分数过一个 softmax 归一成加起来为 1 的权重,再拿权重去对所有词的 Value 加权求和。式子就是那句著名的 Attention(Q,K,V)=softmax(QKᵀ/√dₖ)V——白话说:每个词按相关度,把全句其他词的信息汇总到自己身上,而且任意两词只隔一次矩阵运算、天然并行。
那个不起眼的 √dₖ(除以键维度的平方根)不能省:维度高时点积数值会很大,把 softmax 推进「几乎全 1 或全 0」的饱和区,那里梯度接近零、训不动。除以 √dₖ 是把数值方差拉回正常,让训练稳定——小细节,却是能不能训起来的关键。
为什么它真能抓住语义?经典例子:「The animal didn't cross the street because it was too tired」——「it」指动物还是马路?自注意力让「it」的 Query 去和全句打分,结果给「animal」高权重、给「street」低——模型于是学会:更新「it」时主要从「animal」取信息。把原因改成「too wide(太宽)」,同一套机制会让「it」自动改指「street」。这种「一个词动态决定该听谁的」正是它的威力。
作者不做一次注意力,而是做 8 次(多头 multi-head):把 Q/K/V 投影到 8 组更低维的子空间,各自独立算注意力,再拼接。因为单个「头」只能学一种关注模式(比如盯语法邻接),而语言里有指代、句法、语义等多种关系——多头让模型在不同子空间同时关注不同类型的关系。论文可视化发现这些头真的自发分了工:有的连动词和宾语,有的把代词连回它指代的名词。
纯注意力有个副作用:它对词序无感(它是对一个集合加权求和,打乱输入结果只是跟着换位,分不清「狗咬人」和「人咬狗」)。解法是位置编码(positional encoding):用一组不同频率的正弦/余弦函数给每个位置造一个向量,直接加到词向量上——好比每个位置戴上一串独特的「波形条码」,词向量里从此既有「我是什么词」,也有「我在第几位」。用三角函数还有个好处:相对位置能被线性地表示,方便学「相隔 k 个词」这种关系。
Transformer 是经典的编码器–解码器。编码器把 6 个相同的层摞起来,每层 = 多头自注意力 + 前馈网络;解码器也 6 层,每层多一个「编码器–解码器注意力」(生成译文时回头关注源句),且它的自注意力带掩码(masked)——生成第 t 个词时把「未来位置」的分数压成负无穷,softmax 后权重为零,保证逐词生成时不偷看答案。摞 6 层是为了逐层抽象:底层处理词与词的表层邻接,越往上越能拼出短语、句法乃至语义结构。
还有两个不起眼却缺不得的配件。每个子层外都套一层残差连接(residual)+ 层归一化(layer norm):残差把输入直接加到输出上(接 ResNet 思想),给梯度一条捷径,几十层也能稳训。每层还有个前馈网络(FFN)对每个位置独立做非线性加工——注意力在词之间搬运信息,FFN 在每个词内部深加工。顺带一提:Transformer 大部分参数其实躺在 FFN 里,所以「注意力就是全部」这话,别忘了装知识的大仓库是 FFN。
在 WMT 2014 英译德上,大模型拿到 28.4 BLEU(BLEU 是翻译质量分,越高越好),刷新当时最好成绩、比含集成的前最强还高 2 个 BLEU 以上;英译法 41.8 BLEU,单模型新高。更惊人的是成本:大模型只在 8 张 P100 GPU 上训了 3.5 天,远低于当时动辄数周的顶尖模型。省从哪来?正是甩掉了顺序依赖——整句一次并行算,GPU 喂满,墙上时钟大降。更好 + 更快 + 更省一起拿到,是它被全领域迅速接受的直接原因。
这是一次范式转变。后来的大模型把这套编码器–解码器拆成三个家族各自发扬:只用编码器的(BERT 一系)擅长理解,用双向注意力读懂整句;只用解码器的(GPT 一系)擅长生成,带掩码一个词一个词往下写;编码器–解码器都要的(T5、翻译)擅长「输入一段、输出一段」。「预训练一个大模型、再微调或提示」的整个时代由此开始。
更深一层是可并行 → 可规模化:甩掉顺序枷锁后,把模型和数据堆到千亿级才在工程上可行,铺就了规模化之路。它还带来一种惊人的统一——只要能把东西切成一串「token」(词、图像块、音频片段、氨基酸、一步棋),就能塞进同一个 Transformer;从前各领域各有专用架构,如今被一个通用序列模型大面积收编。今天几乎每个前沿 AI 系统的心脏,都是这块积木。
① 一句话:丢掉 RNN 和卷积、只用注意力,既能并行训练、又能让任意两词一步直连。
② 痛点:RNN 顺序计算不能并行,长距离依赖沿时间步传递、容易丢。
③ 机制:每词生成 Q/K/V,softmax(QKᵀ/√dₖ)V 按相关度把全句信息汇总到自己身上;√dₖ 防止 softmax 饱和、稳住训练。
④ 多头 = 在多个子空间同时关注不同关系;位置编码把词序注入;解码器自注意力加掩码防偷看未来。
⑤ 注意力搬运信息、FFN 深加工信息;残差 + 层归一化让几十层稳训。
⑥ 结果:英译德 28.4 BLEU 刷新 SOTA,8 卡 3.5 天训完,更好更快更省。
⑦ 影响:BERT/GPT 全建在它上面;可并行带来可规模化;「万物 token 化」统一了各领域——当代 AI 的共同地基。
⑧ 局限:O(n²) 长序列吃紧、位置编码是权宜、数据饥渴、标题夸张——前馈/残差/归一化/位置编码一个都不能少。