先回忆一下老办法的毛病
上一章末尾,我们给「打分机器」出了一道难题:
「小狗追着球跑进了花园,它浑身都湿透了,因为外面正在下雨。」
机器读到「它」的时候,必须想起几十个词之前的「小狗」。在 2017 年之前,主流的做法是让机器从左到右逐字读,读一个词,就把这个词的意思揉进一个「脑子里的小结」里,带着这个小结继续往下读。这就像一个记忆力有限的人读书:不许回头翻页,只能边读边在心里做笔记。短句子还行,文章一长,开头的内容在笔记里越揉越糊,读到结尾早就忘了开头——「它」是谁,再也对不上号。
这个毛病困扰了研究者很多年。直到 2017 年,谷歌的一篇论文提出了一个完全不同的读法,论文标题就敢叫《Attention Is All You Need》(你需要的只有注意力)。这个读法叫 Transformer,就是 ChatGPT 里那个「T」。它一出来,老办法几乎一夜之间全部被取代。它做对了什么?
注意力:每个词都抬头环顾全场
新读法的核心思想,一句话就能说完:别逐字往前拱了,让每个词都抬起头,把整句话的所有词同时扫一遍,自己决定该重点看谁。
拿「它」举例。处理「它」这个词的时候,机器会拿「它」去跟句子里的每个词都算一个「相关度」:「它」对「小狗」——相关度很高(小动物会湿透,合理);「它」对「花园」——有点相关但不多;「它」对「因为」——几乎无关。算完之后,「它」的新含义就不再是干巴巴的「某个东西」,而是「主要吸收了『小狗』的信息、附带一点『花园』的信息」的一个混合体。代词指代谁,就在这一轮「环顾全场」里解决了。
这个「每个词环顾全场、按相关度吸收别的词的信息」的机制,就叫注意力(attention)。大白话说:每个词都在问同一个问题——「为了搞懂我自己在这句话里的意思,我最该看哪几个词?」
大白话:老办法是听汇报——信息一级一级传上来,传到后面全变了样。注意力是开全员大会——每个词直接跟所有词面对面,谁跟我相关我就多听谁的,没有中间商赚差价。
「应该看谁」是怎么算出来的
再往下钻一层,还是那老三样:乘法和加法。
每个词都带着自己的「住址」(第三章说的那串坐标)。注意力机制会用这些坐标算出词与词之间的相关度——直觉上,就是两个词的坐标「对得上」的程度越高,相关度越高。然后,每个词把所有词的坐标按相关度加权揉在一起:谁跟我相关,我就多揉一点谁的信息进来。揉完得到的新坐标,就是这个词「在当前语境下」的意思。
这解释了「一词多义」是怎么被处理的。「苹果」这个词,裸住址只有一个,但在「我咬了一口苹果」里,它环顾全场后吸收了「咬」的信息,新坐标就往「水果」的方向偏;在「苹果发布了新手机」里,它吸收了「发布」「手机」的信息,新坐标就往「公司」的方向偏。词义不再是查表查出来的死东西,而是现场算出来的。
而且机器不止雇一个「环顾员」。它同时派好多路注意力并行工作:一路专攻「谁指代谁」,一路专攻「谁修饰谁」,一路专攻「动作是谁发出的」……每一路叫一个「头」。几十个「头」各看各的重点,最后把各自的发现汇总。这就是为什么句子再绕,它也能把语法、指代、语义的关系同时抓住。
这个设计为什么引爆了一切
注意力机制的胜利,不只是「解决了指代问题」这么简单,它一次性扫清了三个老障碍:
- 长距离不再是问题。第一个词和最后一万个词,在注意力看来距离一样——都是直接面对面。开头埋的伏笔,结尾照样能接上。
- 可以大规模并行。老办法必须一个词读完才能读下一个,像单线程排队;注意力是所有词同时互相打量,成千上万个计算可以铺在显卡上一起跑。这意味着可以用史无前例的规模去训练——第七章讲的「大力出奇迹」,前提就是这个。
- 架构出人意料地通用。同一套「环顾全场」的结构,不做大改动就能处理翻译、写作、代码、甚至后来连图片和蛋白质结构都用它。2017 年之后,AI 几乎所有方向的重磅进展,底层都站着这个架构。
至此,那台「打分机器」的构造就讲完了:token 变成坐标,坐标经过几十层「环顾全场+加权揉合」,最后吐出下一个词的排行榜。结构是人设计的,但里面几十亿个旋钮的具体数值,还是空的。这些旋钮怎么从一堆随机数变成满腹经纶?那是训练的事——下一章,我们去看这本史上最贵的「错题本」。