§ 7.1 · Sub-chapter

Attention 注意力篇

Attention Mechanism

2017 年那篇改变世界的论文,标题就叫《Attention is All You Need》——你只需要注意力,别的都可以不要。这句话听起来像玄学,但它背后是一个非常朴素的直觉:读一句话时,我们的眼睛并不是均匀地扫过每一个字,而是会本能地"跳回去"关注某几个关键的词。Transformer 把这个动作变成了数学。

生活场景
👀 你读句子时眼睛在做什么

请慢慢读下面这句话,感受一下自己的视线:"那只在门口打盹了整整一下午的橘猫,追着一只不小心从窗台上滚下来的蓝色小球跑,最后它抓到了。"
读到""这个字的时候,你的眼睛会不由自主地跳回去看——"它"到底指谁?是猫,还是球?
这一次"跳回去,看一眼前文,再回来"的动作,就是注意力。它极其自然,你甚至没意识到自己在做。
Transformer 做的事,就是让机器也学会这个"跳回去看一眼"的能力——而且是同时看全句话所有的其他词

先说清楚:Attention 到底解决了什么问题

要理解 Attention 为什么震撼,得先看看它之前的世界——那个由 RNN(循环神经网络)统治的时代。RNN 是 2017 年之前处理文本、语音这种"序列数据"的绝对主力。它的思路很直觉:一个词一个词地读,读完一个就把"上下文记忆"更新一下,再读下一个。就像你一边听老师讲课,一边在脑子里滚动地记笔记。

这个思路听起来没毛病,但一到实战就暴露出两个致命缺点——正是这两个缺点,把整个自然语言处理领域逼到了墙角,才有了 2017 年的那次革命。

RNN 的致命缺点一 · 必须"一个一个来"

RNN 的核心是"下一步依赖上一步"——要算第 100 个词的表示,必须先把前面 99 个词依次算完。这就像流水线上的工人:第二个人必须等第一个人做完才能开工,第三个必须等第二个……
在 GPU 时代,这是灾难。GPU 有上万个核心,本来可以"一次算一千个词",但 RNN 的顺序结构强行把它们锁在单车道上,只能一个接一个走。训练一个大模型的时间被拉长十倍、百倍。你花一个月能训练完的 Transformer,用 RNN 得跑一年——这已经不是慢一点的问题,而是"根本没法做"的问题。

Analogy · 传声筒游戏

RNN 就像小时候玩的"传声筒"游戏——一个人对下一个人耳语一句话,一路传到最后一个人。
只要队伍够长,传到最后的话基本就变形了:"下午三点在图书馆碰面" 最后可能变成 "下午想吃冰淇淋"
RNN 处理长句子时也是这样——句首的信息传到句尾,早就被中间几十步"稀释"得七零八落了。

RNN 的致命缺点二 · 长距离依赖差

第二个问题更本质。想象一句话:"我小时候在东北长大,那里的冬天冷得能把水龙头冻住,我最想念的就是妈妈煮的那锅热腾腾的酸菜白肉——所以每次冬天回家,我都会特意去菜市场买一颗最大的酸菜"
句尾的"酸菜",其实是被句子中间提过的"酸菜白肉"锚定的。这两个词之间隔了 40 多个字。RNN 处理时,"酸菜白肉"的信息要一路传到句尾——中间经过几十次矩阵乘法、几十次激活函数——信息早就被稀释、扭曲、遗忘了。这就是所谓的"长距离依赖问题"。

后来人们发明了 LSTM、GRU 这些"带记忆闸门"的改良版,能缓解一部分,但没有从根本上解决——只要还是"顺序传递"这套逻辑,信息就注定会随距离衰减。这个瓶颈卡了整个 NLP 领域十几年。

Attention 的核心思想 · 直接跳到源头

2017 年 Transformer 的作者们做了一件极其大胆的事:干脆不要"顺序传递"了。既然信息在传递中会衰减,那就让每个词直接访问句子里所有其他词,不再经过中间人。

具体怎么做?简单说三步:

这样一来,处理"它"这个词时,句子里的"猫"如果得了 0.7 分、"球"得了 0.2 分、其他词共 0.1 分——那"它"的新表示里,70% 是"猫"的信息、20% 是"球"的信息。这就是"跳回去看一眼"在数学上的实现。而且更妙的是——这个"跳"是模型学出来的,不用人教它"'它'应该看'猫'",训练几百万句话后,它自己就学会了。

Analogy · 会议里的举手投票

把一句话想成一场会议,每个词是一个与会者。当"它"这个人举手发言时,他环顾四周问:"你们谁跟我有关?"
"猫"举手:"我有关,权重 0.7";"球"举手:"我有关,权重 0.2";其他人手举得很低。
"它"最后的观点,就是把所有举手的人的意见按举手高度加权综合起来。
Attention 就是这场会议——每个词都能同时问全场所有人的意见,一步到位,绝不传声筒。

Attention vs Self-Attention · 别搞混

你听过两个词:AttentionSelf-Attention——它们不完全是一回事,但今天大家常常混着用,需要一次说清。

名字Query 来自Key/Value 来自典型场景
普通 AttentionA 句B 句翻译:中文(Q)看英文(K/V)
Self-Attention同一句 A同一句 A理解:句子内部词与词的关系
Cross-AttentionDecoder 当前词Encoder 输出Encoder-Decoder 中的桥梁

Transformer 里真正撑起大梁的,是 Self-Attention(自注意力)——一句话内部,每个词都对其他每个词做 Attention。这是它最核心的创新。Attention 概念其实 2014 年就有了,但真正把它推到"只用它就够了"这种极端的,是 2017 年的 Transformer。

Attention 带来的三个改变

一个直观的例子 · 消解歧义

"The animal didn't cross the street because it was too tired."——这里的 it 指谁?
英语母语者一看便知:"it"指 animal(因为疲倦不过街)。
但如果把句子改成:"The animal didn't cross the street because it was too wide."——it 就变成了 street(因为街太宽)。
同一个"it",指代不同——判断依据是句尾的"tired"还是"wide"。Transformer 在处理"it"时,通过 Self-Attention 会同时看向"animal"、"street"、"tired/wide"这几个词,并根据学到的模式给它们打分。这就是"注意力"最直观的用途——让语言里那些微妙的、需要跨越距离才能理解的东西,被机器捕捉到。

为什么"Attention is All You Need"

论文标题这句话,其实是在挑衅——挑衅当时所有主流方案。作者的意思是:不需要 RNN,不需要 CNN,不需要复杂结构,光靠 Attention 一件武器,就能把整个序列建模的活儿全干了
这话在 2017 年是极其大胆的宣言。但接下来五年发生的事情证明了它——BERT 用 Encoder 堆叠出了 SOTA,GPT 用 Decoder 堆叠出了 ChatGPT,Vision Transformer 甚至把图像也变成了"一串词"来处理。Attention 真的就是全部所需

从"读一句话"到"读一整本书"

Attention 的威力,在句子级别就已经很明显了;但真正把它推到极致的,是长上下文时代——如今 GPT-4、Claude、Gemini、Kimi、DeepSeek 都在拼谁能塞下更长的输入:8K、32K、128K、200K、100 万 Token。
这些让人眼花的数字背后,是同一件事:Attention 让每个词都能一步跳到任何位置。你把一整本《红楼梦》喂给模型,它读到第 80 回"贾母去世"这四个字时,可以直接一步跳回第 3 回去看贾母第一次出场的描写——中间隔了几十万字,都不掉信息。这在 RNN 时代是完全不可能的事:几十步的传声筒里,早就把贾母忘光了。

当然,长上下文也带来新的问题——Attention 的计算量是序列长度的平方(O(n²))。1000 个词要算 100 万次匹配、10 万个词要算 100 亿次——所以后来又衍生出稀疏 Attention、Flash Attention、滑动窗口 Attention 等等一大批优化技术。但底层的思想没变:让每个位置都能任意跳跃

Attention 是通用的——不止用在语言上

你可能以为 Attention 只是为文字设计的,其实它已经彻底征服了 AI 的其他领域:

"Attention is All You Need"这句话在 2017 年是宣言,如今回头看更像是预言——这一个机制,重塑了整个 AI 的技术栈。

Recap · 收束

Attention 之所以是革命,是因为它一次解决了 RNN 的两个死结:顺序处理慢长距离依赖差。它的核心思想只有一句话——让每个词都能同时看到句子里所有其他词,并动态决定关注谁。这个机制不仅统治了自然语言,也悄悄征服了视觉、语音、生物、视频等所有序列建模场景。
下一篇,我们把这个"看谁、看多重"的动作,翻译成三个字母:Q、K、V——图书馆查资料的比喻会让你一辈子记住这个公式。

☰ 主页
Xue Hai Wu Ya · § 7.1 · Attention