Attention Is All You Need(Transformer)
Ashish Vaswani 等 · arXiv 2017 · 整份书单最出名的一篇,今天所有大语言模型的地基
Ilya 为什么选它
在 Ilya 的书单里,这篇是名气最大的一篇,也是整条时间线的分水岭:在它之前,处理句子离不开循环网络——像书单前面那些工作一样,一个词一个词按顺序往前挪;在它之后,主流路线换成了 Transformer。选它的理由很直接:想理解今天的大语言模型为什么造得出来、为什么能一路做大,绕不开这篇论文立下的地基。
它的主张可以压缩成一句话——「注意力全都要」:不再需要循环结构按顺序传话,注意力本身就足以承担句子内部全部的信息交换。论文给出三大好处:训练可以全程并行;任意两个词之间直接相连,长距离依赖不再需要一步步传话;结构统一,可以像积木一样不断堆叠。这三条合在一起,解释了大模型时代的很多「为什么」。
从生活说起
想象一场十个人的圆桌会,要讨论一个方案。老式开会是主持人点名:第一个发完第二个说,每个人只能听到前面人说过的话。轮到第十个人时,前面九个人的发言他只能靠自己「记着」,越靠前的越模糊。循环网络就像这种排队发言:词按顺序进模型,越到后面,早期信息越容易在一次次传递中变淡、走样。
圆桌会换一种开法:所有人同时发言,每个人面前装一排小旋钮,可以自由调节「听每个人多少」。当讨论对象是「苹果很好吃」这句话里的「苹果」时,代表「好吃」的发言人对它最有用,旋钮就拧大一点;代表「天空」的那位没什么用,旋钮就拧小一点。没有主持人按顺序点名,所有人一齐开口,各取所需——这就是 Transformer 里注意力工作的画面,也是「注意力全都要」的生活版本:发言人人有份,听谁、听多少,由每句话自己决定。
核心思想拆解
先看它去掉了什么:循环结构(Recurrence)。老结构像接力赛,信息一棒一棒往下传,传得越远越容易走样;而且第一棒不跑完,第二棒就不能动,训练没法并行。Transformer 把接力赛改成圆桌会:整句所有词同时进模型,互相之间直接建立联系。第 1 个词和第 50 个词之间不再隔着四十九棒,而是第一次打分就拉上一根线。
再看注意力怎么打分。每个词先变成一串数字,叫词向量(Embedding),可以想成这个词的「数字名片」。打分过程是:每个词拿自己的名片去和句中其他词的名片对照,越相关分越高,然后按分数高低「取信息」——分高的多听一点,分低的少听一点。每个词最后得到的,是一份按相关度调配的「全场发言混合版」。
论文真正使用的打分方式叫缩放点积注意力(Scaled Dot-Product Attention)。名字听着吓人,关键动作只有一个:把打出来的分数除以一个与词向量长度相关的数——大约是长度的平方根(比如向量长度 64,就除以 8)。为什么要除?向量一长,打出的分数容易因为数字偏大而「过热」,注意力会过度集中在个别词上。除一下,等于把打分压回温和区间,让注意力分布得从容一些。直觉上记住一句就够:分数除一除,别让打分器上头。
三大好处串起来看。其一,训练全程并行:圆桌会同时开,不用等谁先发言,而现代硬件最擅长的恰恰是「大家一起算」;其二,任意两词直接相连:长句子里隔得很远的两个词第一次就能对上话,长距离依赖从难题变成常规操作;其三,结构统一可堆叠:整套「打分—取信息」是一块标准积木,一层不够摞两层,两层不够摞几十层——后来的大模型正是靠这个可堆叠的统一结构一路长高的。
补充一句:本站还有一篇从系统视角出发的深度解读 f01 Attention Is All You Need,偏工程与全局;本页定位是零基础教学版,两页互为补充,建议搭配阅读。
动手算一算
设某个词的向量长度是 64,除数就取 64 的平方根,也就是 8(因为 8×8=64)。假设它对句中四个词的原始打分是 12、8、24、6。不除的话,24 一家独大,注意力几乎全押在一个词上。除以 8 之后:12÷8=1.5,8÷8=1,24÷8=3,6÷8=0.75。最大的 3 和第二大的 1.5 之间只剩两倍差距,打分整体回到温和区间。
接着算取信息的占比:把四个新分数加起来,3+1.5+1+0.75=6.25。各词占比为 3÷6.25=48%,1.5÷6.25=24%,1÷6.25=16%,0.75÷6.25=12%,合计正好 100%。取信息时,就按这四个百分比去调配四个词的信息——最重要的词占近一半,其余词也都多少在场。(真实的模型在算占比前还会对分数做一次指数式的柔和处理,直觉不变:分高的占比大,且差距更明显。)整套装下来只有比大小、除法、百分比三种算术,全是小学内容。