5.1 一层不够,要叠多层
第四章我们讲完了单层注意力机制:一个词通过QKV,环顾四周,从其他词那里吸收信息,融合成新的上下文向量。
以“猫追老鼠”为例,“追”通过单层注意力,看到了“猫”和“老鼠”,知道了自己在追什么、被谁追。
问题来了:单层就够了?
如果句子是“猫追老鼠”,确实够了。但如果句子是:
“昨天在公园里,那个穿红衣服的小女孩追的那只白色的猫,其实是邻居家走丢的。”
这里的“追”离“小女孩”和“猫”隔着好几个短语。单层注意力虽然能一次性看到所有词,但它在一轮计算中只能完成一层“关系提取”——它能找出“追”和“小女孩”相关、“追”和“猫”相关,但它无法进一步理解:“穿红衣服的小女孩”是一个完整的被修饰的主语,“那只白色的猫”是一个完整的被修饰的宾语。
单层注意力能做到的:建立词与词之间的直接相关关系。 单层注意力做不到的:理解“词→短语→句子→意图”这些不同层级的结构。
如果把“词→短语→句子→意图”看作一座四层楼,单层注意力只能覆盖第一层——它能看到所有词,但无法完成后续的抽象。
这就好比你看一张照片:
- 单层注意力 = 你用放大镜看照片——你能看到每一个像素的细节,但你不知道这些像素组成了什么画面。
- 多层注意力 = 你退后一步,再退后一步——你看到的范围越来越大,最终看清了整张照片的内容,知道“这是在公园里拍的一只猫”。
AI也是一样。 每一层都在前一层的基础上,完成更高一层的抽象:
- 第1层:看到相邻词的搭配关系(“红色”和“衣服”挨着,“白色”和“猫”挨着)
- 第2层:看到短语结构(“穿红色衣服的小女孩”是一个完整的名词短语)
- 第3层:看到句子主干(“小女孩追的猫”是核心事件)
- 更多层:看到整句话的语义意图(这是一句描述走丢宠物的陈述句)
所以大模型不是只有一层注意力,而是几十层、甚至上百层堆叠在一起。 每一层都在前一层的基础上,把信息“抽象”到更高的层级。这就是“变换器”这个名字的由来——信息在层层传递中不断被“变换”,从孤立的词逐步变换成完整的语义。
5.2 多层堆叠的结构叫什么?—— Transformer(变换器)
上一节我们说了,单层注意力不够用,需要把几十层甚至上百层注意力堆叠在一起。每一层都在前一层的基础上,完成更高一层的抽象。
这种多层堆叠的架构,在AI领域有一个专门的名字:Transformer。
中文翻译叫“变换器”。
这个名字非常形象——每一层都在“变换”信息的表示形式。我们把“1+1等于几”这个例子,一层一层拆开看:
第1层(底层)输入:5个Token的原始向量——[“1”, “+”, “1”, “等于”, “几”],每个都是孤立的。
第1层输出:经过注意力计算后,“1”知道了自己旁边有“+”,“+”知道了自己连接着两个“1”,“等于”知道了自己前面是“1+1”。第一层完成了“词与词的局部关系”变换。
第2层输入:第1层输出的5个向量(已经带有局部关系信息)。
第2层输出:再次经过注意力计算后,“等于”现在能更清楚地看到整个“1+1”是一个整体,它不再是“等于”前面有三个孤立的词,而是“等于”前面有一个“加法表达式”。第二层完成了“词→短语”的变换。
第3层到第N层:每一层都在前一层的基础上继续变换。“几”逐渐认识到自己是在问一个“加法表达式”的结果。到某一层(比如第12层)时,整个句子的语义被浓缩到最后一个位置(“几”对应的向量)中。
最后一层输出:一个包含了完整语义的向量——“这是一个询问加法结果的数学题,答案是2”。
每一层都在做同一件事:注意力计算。但每一层面对的“输入”不同——底层面对的是孤立的词,中层面对的是短语结构,高层面对的是整句语义。
形象类比:
把Transformer的多层处理,类比成你读一段文字时,大脑逐步处理信息的过程。
你看到一句话:
“昨天在公园里,那个穿红衣服的小女孩追的那只白色的猫,其实是邻居家走丢的。”
第一遍扫读(对应底层注意力):你捕捉到了关键词——“小女孩”、“追”、“猫”、“邻居家”、“走丢”。你知道这些词存在,但还没理清它们之间的关系。
第二遍细读(对应中层注意力):你开始建立关系——“小女孩”在追“猫”,“猫”是白色的,“猫”是邻居家的。你知道谁在做什么了。
第三遍理解(对应高层注意力):你整合了所有信息——这是一个完整的事件:一个小女孩追了一只猫,那只猫是邻居家走丢的,地点是公园,时间是昨天。你理解了整句话的意图。
大脑的这三步,不是“一层只看三个词、另一层再看另外三个词”,而是:
- 第一遍:提取关键词(局部信息)
- 第二遍:建立关系(结构信息)
- 第三遍:整合语义(整体信息)
每一次“重读”,你都在前一次的基础上,完成更高一层的抽象。第一次看到的是“碎片”,第二次看到的是“关系”,第三次看到的是“含义”。
Transformer的多层注意力,干的正是同一件事——但它不是靠“重读”,而是靠“多层堆叠”。每一层都在前一层输出的基础上,再做一次“注意力计算”,从而逐步完成从“碎片”到“关系”再到“含义”的完整变换。
关键认知总结:
| 底层(1-3层) | 词与词的局部搭配 | 孤立词 → 有关系的词 |
| 中层(4-8层) | 短语结构和句法关系 | 有关系的词 → 有结构的短语 |
| 高层(9层以上) | 整句语义和意图 | 有结构的短语 → 有含义的句子 |
这就是大模型为什么需要几十层的原因:完成“词→短语→句子→意图”这一整条“变换”链,一层不够,必须层层递进。
5.3 从向量到“2”:输出的最后一公里
经过几十层Transformer的逐层变换,信息已经从最初的“1+1等于几”这5个孤立的Token,变成了最后一层输出的5个融合了上下文的向量。
现在,这5个向量中,最后一个位置(对应“几”这个Token)的向量,已经包含了整句话的完整语义信息——它知道:“前面是一个加法表达式,用户在问结果。”
问题是:这个向量是一串768个小数的列表(比如[0.12, -0.34, 0.56, …, 0.78]),它怎么变成你看到的那个“2”?
答案是:它必须经过两次“翻译”。
第一次翻译:向量 → 词汇表上的概率分布
AI的最后一层输出向量,会送入一个叫做输出层(Output Layer)的组件。输出层内部有一个输出权重矩阵,它记录了“什么样的向量对应什么样的词”。
具体来说,输出权重矩阵的每一行对应词汇表中的一个词。最后一层输出的向量,与这个矩阵中每一行做一次点积计算,得到一组原始分数(Logits)——分数越高,表示该词与当前上下文的匹配程度越高。词汇表有5万个词,就会得到5万个分数。
然后,这些分数通过Softmax归一化,变成5万个概率值,每个概率值在0到1之间,总和为1。此时,每个词都有一个概率——比如“2”的概率是0.98,“二”的概率是0.01,“3”的概率是0.001……
第二次翻译:概率分布 → 选出一个Token ID
AI根据这个概率分布,选出一个Token ID。选法有两种:
- 贪心采样:永远选概率最高的那个——也就是“2”。
- 随机采样:按概率大小随机抽签——大多数时候抽到“2”,偶尔可能抽到“二”或“3”(这就是为什么同样的问题,AI有时会给出略有差异的回答)。
温度:一个调节“随机性”的旋钮
在随机采样中,AI内部有一个叫“温度”的参数,用来控制随机性的强度。它跟物理温度没有关系,只是借用了“温度高→分子运动剧烈→随机性大”这个形象的比喻。
- 温度很低(接近0):概率高的词被极度放大,AI几乎100%选最高概率的那个词——等价于贪心采样。输出确定、严谨。
- 温度=1(默认值):严格按原始概率分布随机抽取。
- 温度很高(比如2.0):高分和低分的差距被压缩,低概率的词也有更大机会被选中。输出更多样、更“有创意”,但也更容易胡说八道。
形象类比:
你面前有三张卡片,中奖概率分别是50%、30%、20%。
- 温度很低:你几乎必定选中奖率50%的那张。
- 温度=1:你按概率抽——50%概率选第一张,30%选第二张,20%选第三张。
- 温度很高:三张被选中的概率变得接近(比如40%、33%、27%),结果更随机。
温度的作用就是:调高它,AI更“敢说”;调低它,AI更“保守”。
选出的Token ID(比如代表“2”的那个整数ID),通过解码器反向查表,变成人类可读的文字“2”。
这个“2”就是输出的第一个Token。
自回归:生成一个Token之后,继续生成下一个
AI并不是一次性生成整个回答。它每次只生成一个Token。生成“2”之后,把“2”拼回原来的输入序列,变成:
“1+1等于几 2”
然后重新进入Transformer,预测下一个Token——通常是句号或换行符。再拼回去,再预测下一个……直到预测到一个特殊的结束符为止。
这就是为什么AI能够生成整段文字——它其实是一个字一个字“续写”出来的。
一个我想到这里时自己产生的疑问:简单问题和复杂问题,用的层数一样吗?
我想到这里时,产生了一个疑问:“1+1等于几”这么简单的问题,也需要走完几十层吗?而“优化一段FFT代码”——也就是快速傅里叶变换(把信号的时域表示变换成频域表示)——这么复杂的问题,走的层数会不会更多?
这是一个非常关键的问题,它的答案取决于模型是否具备动态深度的能力。
在目前绝大多数主流大模型中,模型不会根据问题的复杂程度自动决定使用多少层。 无论你问“1+1等于几”还是“优化这段FFT代码”,你的输入Token都会完整地穿过全部几十层。每一层都对所有Token进行运算。
但学术界和工业界正在研究一种叫做**“早期退出”(Early Exit)**的机制,正是为了解决我提出的这个问题。
早期退出的核心思想是:在模型的中间层设置“分类器”,判断当前层的输出是否已经足够得出正确答案。
- 对于“1+1等于几”:可能只需要通过前面几层,模型就已经能捕捉到“这是一个简单的加法运算”,并准确输出“2”。此时模型可以提前退出,无需走完所有层,节省了计算资源,响应也更快。
- 对于“优化FFT代码”:模型需要理解算法逻辑、数据结构、性能瓶颈,这需要更高层的抽象,必须走完全程才能给出有质量的回答。
目前为什么多数模型没有普及这个机制?
因为工程上存在一些挑战:
但这是一个正在快速发展的方向。 未来一定会有更多模型采用类似机制,根据问题复杂度动态调整计算深度,让简单问题秒回、复杂问题精算。
用信息守恒认知论来拆解这一环节:
| 输入(t) | 最后一层输出的向量(包含整句语义) |
| 内因(t) | 输出层(权重矩阵 + Softmax)+ 温度参数 + 采样策略 + 解码器 |
| 输出(t) | 最终显示在屏幕上的文字“2” |
如果输出权重矩阵训练得不好(内因错),即使输入向量再准,概率分布也会偏——导致输出错误的词。如果温度设置不当(比如过高),即使概率分布正确,也可能随机抽到低概率的错误词。
只有输入对(向量准)、内因对(输出矩阵准、温度合适),输出才对。
5.4 采样器:最后的“抽签人”
在上一节我们讲到,Softmax输出了一组概率分布——比如“2”是0.98,“二”是0.01,“3”是0.001,其他词几乎为0。
问题来了:为什么AI最终选的是“2”,而不是概率稍低的“二”或“3”?
答案:采样器就是那个做最终决定的组件。
采样器不是一个物理上的“器件”,而是一个程序模块,它的工作很简单:按照概率分布随机抽取一个结果。
我们可以把采样器的内部机制拆解成三步:
第一步:生成一个随机数
采样器内部有一个随机数生成器,它会产生一个0到1之间完全随机的小数。比如这次它生成了0.73。
第二步:用概率分布做“区间映射”
前面Softmax把概率分布变成了这样:
- “2”:0.98 → 占据区间 [0, 0.98)
- “二”:0.01 → 占据区间 [0.98, 0.99)
- “3”:0.001 → 占据区间 [0.99, 0.991)
- “其他”:剩下的极小区间
第三步:落在哪个区间,就选哪个词
随机数0.73落在[0, 0.98)区间内 → 选中“2”。
绝大多数情况下,随机数都会落在“2”的巨大区间里,所以AI几乎总是输出“2”。偶尔随机数落在0.98到0.99之间,就会输出“二”。极偶尔落在0.99到0.991之间,就会输出“3”。
温度就是这个“区间分配”的调节器
当我们调整温度时,实际上是在改变这些区间的分配方式:
- 温度低:高概率的区间被拉长,“2”的区间接近[0, 0.999],几乎必定抽中它。
- 温度高:各区间长度被压缩,“2”的区间缩短到[0, 0.4],“二”的区间扩大到[0.4, 0.7],“3”的区间也有机会。
- 温度=1:保持原始概率分布。
形象类比:一个转盘游戏
你可以想象一个巨大的转盘,分成5万份,每个词占一份。份的大小就是它的概率——概率高的词占大片面积,概率低的词占一条窄缝。
- “2”占了转盘98%的面积
- “二”占了1%
- “3”占了0.1%
- 其他词加起来占了不到1%
采样器就是那个闭着眼睛转转盘的人。指针停下来指向哪里,就选中哪个词。
绝大多数时候指针会停在“2”的区域里,这就是为什么你看到的是“2”。偶尔停在“二”或“3”的区域,AI就回答成了“二”或“3”。
信息守恒认知论看采样器:
| 输入(t) | Softmax输出的概率分布(5万个概率值) |
| 内因(t) | 随机数生成器 + 温度参数 + 区间映射逻辑 |
| 输出(t) | 被选中的Token ID |
如果随机数生成器有偏差(内因错),某些词会被系统性地偏向选中。如果温度设置过高(内因错),低概率词被抽中的概率被不自然地放大。只有内因正确,采样器才能公平地按概率抽取。
一个你可能已经察觉到的关键:
这个“选词”过程,跟“向量空间最近邻”是两个完全不同的阶段。
我们前面讲的向量、夹角、相似度,是在编码阶段——模型在理解你的问题。而采样器是在解码阶段——模型在生成答案。它们是两个不同的阶段,各自独立。
理解了采样器,你就理解了AI“为什么这么回答”的最后一层物理机制。
5.5 从单一向量到输出文字 —— 最后一步的完整闭环
现在我们把第五章讲的核心内容做一次提炼。
这一章回答了一个关键问题:单层注意力不够,需要多层叠加。 而多层叠加的结构,叫做Transformer(变换器)。
在这个过程中,信息发生了连续的形态变化:
- 底层:处理词与词之间的局部关系
- 中层:处理短语结构和句法关系
- 高层:处理整句的语义和意图
每一层都在前一层的基础上,完成更高一层的抽象。这就是“变换器”这个名字的含义——信息在层层传递中不断被“变换”,从孤立的词逐步变换成完整的语义。
当最后一层输出向量后,它还不能直接显示给你看。它需要经过最后的“翻译”:
这样,从“最后一层向量”到“最终显示文字”的完整路径就走通了。
信息守恒认知论看这一整章:
第五章的整个逻辑链条,从输入到输出,每一步都在执行同一个原则:
| 注意力层(每层) | 前一层输出的向量 | 注意力计算机制 | 融合了更大范围上下文的向量 |
| 输出层 | 最后一层向量 | 输出权重矩阵 + Softmax | 概率分布 |
| 采样器 | 概率分布 | 随机数 + 温度参数 | 一个Token ID |
| 解码器 | Token ID | 解码映射表 | 文字 |
每一环都是“输入 → 内因 → 输出”的完整闭环。环环相扣,缺一不可。
如果某一层注意力计算有偏差(内因错),后续所有层的输入都是错的。如果输出权重矩阵训练不到位(内因错),概率分布就会扭曲。如果温度设置过高(内因错),采样器可能抽到错误词。
只有每一环的输入准、内因对,最终的输出才可能对。
到这里,我们已经把AI从“输入文字”到“输出文字”的全部逻辑环节走通了。
第五章术语表
| Multi-head Attention | 多头注意力 | 多组QKV同时做注意力计算,让模型从多个角度观察同一句话 |
| Transformer | 变换器 | 多层注意力堆叠的架构名称,信息在层层传递中不断被“变换” |
| Layer | 层 | Transformer中的一个注意力计算单元,每一层都输出一个新的向量表示 |
| Deep Layer | 深层/高层 | 靠近输出端的层,处理的是整句语义和意图 |
| Shallow Layer | 浅层/底层 | 靠近输入端的层,处理的是词与词的局部搭配 |
| Output Layer | 输出层 | 把最后一层的向量“翻译”成词汇表上概率分布的组件 |
| Logits | 原始分数 | 输出层计算出的、尚未归一化的匹配分数 |
| Sampling | 采样 | 按概率分布抽取一个结果的过程 |
| Temperature | 温度 | 控制采样随机性强弱的参数,值越高输出越“大胆”,值越低输出越“保守” |
| Greedy Sampling | 贪心采样 | 永远选概率最高的那个词,输出确定 |
| Random Sampling | 随机采样 | 按概率大小随机抽取,输出有随机性 |
| Decoder | 解码器 | 把Token ID反向查表变回人类可读文字的组件 |
| Autoregression | 自回归 | 每次生成一个Token,然后拼回输入继续生成下一个,直到结束 |
| Early Exit | 早期退出 | 模型在中间层判断“已经够了”,提前结束计算(前沿研究方向) |
| FFT | 快速傅里叶变换 | 一种算法,把一个信号从时域变换到频域,用于信号处理、音频分析、通信等领域 |
| Dynamic Depth | 动态深度 | 模型根据问题复杂度自动决定走多少层的机制(前沿研究方向) |


