第 3 章 · 通向 Transformer 的桥梁
序列问题与注意力:为什么需要"看全局"
Transformer 是为处理序列数据而生的。这一章先讲清三个问题:为什么文本是序列?老方法(RNN)为什么不够好?"注意力"到底解决了什么?读完你就知道 Transformer 在"较什么劲"。
3.1 文本是序列数据:顺序即信息
"猫追狗"和"狗追猫"是同样的三个字,意思完全相反。文本是"有顺序的一串词",顺序本身承载信息。这种数据叫序列数据(sequence data)。你工作里的负荷曲线、光伏出力时间序列也是序列数据——只是每个"词"换成了每个时刻的数值。
今天 10:00 的光伏出力,和昨天 10:00 有关、和前 24 小时的天气序列有关——值的重要性取决于它前后出现了什么,这和"猫追狗"里顺序决定意义是同一回事。所以理解"序列模型"顺便就是理解"时序预测模型",第 7 章还会再见。
3.2 机器怎么"读"词:从字到向量
机器不认识"字",只认识数字。怎么办?把每个词变成一个向量(一串数字),例如:"猫" → [0.21, -0.85, 0.43, ...]。这一串数字是该词在"语义空间"里的坐标——意思相近的词坐标相近。
把"语义空间"想象成一张地图:每个词是地图上的一个点。"猫""狗""宠物"离得近(意思相关);"猫"和"电容器"离得远。词向量就是每个词的经纬度坐标。有了坐标,机器就能算"两个词有多近"(坐标距离),也能做算术("国王 − 男人 + 女人 ≈ 女王"——著名例子)。
这个"词→向量"的映射叫词嵌入(embedding),是第 4 章 Transformer 的入口,细节到那里再展开。
3.3 老方法 RNN:接力传话的困境
在 Transformer 之前,处理序列的主力是循环神经网络(RNN,Recurrent Neural Network)。它的思路非常朴素:从头到尾一个词一个词地读,把"看到过的内容"压进一个记忆小盒子里,传递给下一个时刻。
一群人排成一排传一句话:"张三在 3 号塔上作业时忘系安全带。"
第一个人只能告诉第二个人,第二个人再告诉第三个人……每次只传一手,信息靠记忆接力。传到第 20 个人时,前半句早就变形甚至丢了。
RNN 就是这样:处理"忘"字时,它手里的小盒子装着前面 20 个词的信息——但经过 20 次"转述",前半句的关键信息("3 号塔""安全带")已经衰减得差不多了。
每传一手就更新一次,但早期信息一路衰减
图 3-1 RNN:顺序接力 + 一个不断更新的"记忆盒子"。问题:① 长距离信息衰减(长程依赖难);② 必须串行读,慢
RNN 两大痛点,正好是 Transformer 的发力点:
- 长程依赖(long-range dependency):句子越长,前面的关键信息丢得越多。更致命的是它无法并行——读第 20 个词必须等前 19 个读完,训练速度被卡死。
- 后来有人给 RNN 加了"闸门"(LSTM、GRU),长程问题缓解但没根治,并行问题依旧。
3.4 注意力:读完整句再下结论
换个思路。人读句子时不是"接力传话"式的——读到"深"字,我们会回头扫一眼整个句子,确认它是"深井"的深、"夜深"的深、还是"深奥"的深。关键词是:每个词的意思,由它和句子中其他词的关系共同决定。
想象你在会议室里,一群人在讨论,你想理解"当前讨论的重点"。你不会平等地听每个人——谁的发言和当前主题相关,你就把注意力多分给谁。
"注意力机制"就是这个动作:处理每个词时,让模型自己算出"句子中每个词和当前词有多相关",然后按相关度加权汇总所有词的信息。相关度高的词,信息贡献大;无关的词,几乎被忽略。
这个思想一旦提出(2014 年前后,最初作为 RNN 的"辅助配件"),效果立刻惊艳:机器翻译时,"忘"这个词终于能直接"看"到 20 个词之外的"安全带",不再靠接力。之后研究者问了一个改变 AI 格局的问题:既然注意力这么好用,那干脆不要 RNN,全部用注意力行不行?——"行"。2017 年,谷歌团队发表《Attention is All You Need》(注意力就是你所需要的一切),Transformer 诞生[1]。
3.5 注意力的雏形:按相关度加权汇总
把"加权汇总"拆成三步(先看直觉版,第 4 章给 Q/K/V 的完整版):
- 算相关度:对句子里的每一对词,算一个"它俩有多相关"的分数;
- 归一化成权重:把分数们用 softmax 变成一组和为 1 的权重(哪个相关就权重大);
- 加权求和:按权重把每个词的信息混合成一个"上下文感知"的新表示。
图 3-2 注意力 = "算相关 → 归一化成权重 → 加权混合"。权重分布就是那张著名的"注意力热力图"
注意这里的本质变化:每个词的新表示不再是"自己"的信息,而是"以自己为中心、加权汇总了全场"的信息——句子里的每个词都因此"知道"了上下文。所有词同时算,天然可并行——RNN 的第二个痛点也没了。
句子"他走进银行,把现金存了进去。"处理"存"这个词时,注意力应该给"银行""现金"很高的权重。处理"银行"时,如果句子是"他在河边银行散步",注意力应该给"河边"很高的权重——同一个词,上下文不同,注意力分布就不同,词义随之不同。这就是注意力解决"一词多义"的方式。
3.6 进化路线图:从 RNN 到纯注意力
接力传话,长程弱
注意力当"外挂"补长程
"只要注意力"——RNN 被移出
Transformer 成为一切大模型底座
图 3-3 进化路线:注意力从"补丁"变成"主干"
下一篇(第 4 章)我们就把 Transformer 这台机器彻底拆开:词嵌入、位置编码、Q/K/V 自注意力、多头、残差、归一化——以及"猜下一个词"如何变成 ChatGPT。
3.7 本章小结
- 文本是序列数据,顺序即信息;负荷曲线/光伏出力也是序列数据;
- 词要先变成向量(词嵌入)机器才能处理;
- RNN 靠接力传话:长距离信息衰减 + 无法并行,两大痛点;
- 注意力 = 算相关 → 归一化 → 加权汇总,每个词直接看全场,可并行;
- Transformer 的哲学:只要注意力就够了(Attention is All You Need)。
我刚学完"RNN 的困境和注意力机制的思想",请: 1. 用"光伏出力预测"当例子,说明时序预测里为什么也有"长程依赖"问题; 2. 解释注意力机制为什么能并行而 RNN 不能; 3. 出 2 道选择题考我"注意力权重"概念,先别给答案。
自测题:配套《自测题与思考题》第 3 章 Q3.1–Q3.4。