(The Atom of Intelligence: Deconstructing Attention)

“你看见的,只是你想看见的。” —— 心理学中的选择性注意

“注意力是意识的门户。” —— 威廉·詹姆斯

“信息的相关性,比信息本身更重要。” —— 克劳德·香农


引言:从静态坐标到动态能量场

如果说第一章的 Embedding 是给每个词发了一张静态的身份证,那么第二章的 Attention 就是让这些词在一个巨大的会议室里开始交谈

在 Transformer 出现之前,RNN(循环神经网络)像传话筒一样,一个词一个词地传递信息。

“我"传给"爱”,“爱"传给"你”。等到传到句子的末尾,开头的"我"早已模糊不清。

这不仅是效率问题,这是本体论的局限

RNN 的设计假设是:语言是时间的函数,意义在序列中累积。

但人类的认知不是这样的。

当你读到这句话时,你的眼睛不是逐字扫描,而是跳跃式地捕捉关键信息。你的大脑不是线性处理,而是并行地激活相关概念。

Attention 彻底改变了这一切。

它让句子中的每一个词,都能同时看到其他所有词,并根据它们之间的关系,动态地吸收信息。

这不是工程优化,这是认知范式的转换

这一章,我们将深入 Transformer 的心脏,解构那个著名的公式:

$$ \text{Attention}(Q, K, V) = \text{Softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V $$

这个公式,是智能的原子。

它简单到可以用一行代码实现。

它复杂到足以支撑人类语言的无限表达。

让我们开始这场解构之旅。


2.1 信息的路由协议:从"传话"到"广播"

What:两种信息传递模式

在计算机网络中,信息的传递有两种模式:

模式类比代表架构特点
单播 (Unicast)打电话,点对点RNN/LSTM信息沿时间轴流动
广播 (Broadcast)开会,所有人听Transformer/Attention信息全局可见

2.1.1 RNN 的序列瓶颈

Why:为什么 RNN 有根本局限

RNN 的设计基于一个假设:语言是时间的函数。

RNN 处理流程:

"我" → [RNN 单元] → 隐藏状态 h₁
"爱" → [RNN 单元] → 隐藏状态 h₂
"你" → [RNN 单元] → 隐藏状态 h₃
输出

问题

  1. 信息衰减:当处理到"你"时,“我"的信息已经经过了两次压缩,变得模糊
  2. 无法并行:必须等前一个词处理完,才能处理后一个词
  3. 长距离依赖困难:相隔很远的词,关系难以捕捉

数学解释

RNN 的隐藏状态更新公式:

$$ h_t = f(W \cdot [h_{t-1}, x_t] + b) $$

其中 $h_{t-1}$ 是前一时刻的隐藏状态,$x_t$ 是当前输入。

这意味着:

  • $h_t$ 依赖于 $h_{t-1}$
  • $h_{t-1}$ 依赖于 $h_{t-2}$
  • 形成链式依赖

梯度消失问题

在反向传播时,梯度需要沿着这条链传递:

$$ \frac{\partial \text{Loss}}{\partial h_1} = \frac{\partial \text{Loss}}{\partial h_t} \cdot \frac{\partial h_t}{\partial h_{t-1}} \cdot \frac{\partial h_{t-1}}{\partial h_{t-2}} \cdots \frac{\partial h_2}{\partial h_1} $$

如果每个 $\frac{\partial h_i}{\partial h_{i-1}} < 1$(通常如此),那么连乘结果会指数级衰减。

结果:RNN 很难学习超过 10-20 个时间步的依赖关系。

2.1.2 Attention 的全局视野

Why:为什么全局视野更符合智能本质

Attention 的设计基于一个不同的假设:语言是关系的函数。

Attention 处理流程:

"我" ←→ "爱" ←→ "你"
  ↖_______↙
    全连接

优势

  1. 信息直达:任何两个词之间都有直接连接
  2. 可以并行:所有词同时处理
  3. 长距离依赖容易:距离不影响注意力权重计算

技术细节:注意力权重的计算

对于句子中的每个词 $i$,它对所有词 $j$ 的注意力权重:

$$ \alpha_{ij} = \frac{\exp(\text{score}(h_i, h_j))}{\sum_{k=1}^{n} \exp(\text{score}(h_i, h_k))} $$

其中 $\text{score}(h_i, h_j)$ 是词 $i$ 和词 $j$ 的相似度函数。

关键洞察

  • RNN:信息传递距离 = 时间步数
  • Attention:信息传递距离 = 1(所有词直接相连)

这是图论视角下的根本差异:

  • RNN = 链式图(路径长度 = n)
  • Attention = 完全图(路径长度 = 1)

2.1.3 全局视野的必要性:指代消解案例

What:指代消解问题

想象你在翻译这句话:

“The animal didn’t cross the street because it was too tired.” (那只动物没有穿过街道,因为它太累了。)

为了正确翻译 it(它),你必须知道它指代的是 animal(动物)还是 street(街道)。

  • 如果是 animal,翻译成"它”(动物)。
  • 如果是 street,翻译成"它"(物体)。

RNN 的困境

当处理到 it 时,前面的 animalstreet 的信息都已经经过了层层压缩,变得模糊。

隐藏状态 $h_{it}$ 中,animalstreet 的信息混在一起,难以分离。

Attention 的解决方案

it 可以直接"看"到 animalstreet 的原始向量。

它会发现:

  • ittired(累)的关系很紧密。
  • tiredanimal(动物会累)的关系很紧密。
  • tiredstreet(街道不会累)的关系很疏远。

于是,it 会把注意力集中在 animal 上,忽略 street

注意力权重可视化

句子:"The animal didn't cross the street because it was too tired."

it 的注意力分布:
┌─────────────────────────────────────────────────────────────────┐
│  词          │  注意力权重  │  说明                            │
├─────────────────────────────────────────────────────────────────┤
│  it          │  0.05        │  自身                            │
│  animal      │  0.65        │  主要指代对象 ✓                  │
│  street      │  0.05        │  次要候选                        │
│  tired       │  0.15        │  语义关联(累→动物)              │
│  because     │  0.05        │  因果连接词                      │
│  其他词      │  0.05        │  忽略                            │
└─────────────────────────────────────────────────────────────────┘

这就是 Self-Attention(自注意力)的本质:词与词之间的动态路由(Dynamic Routing)。

工程启示:Attention 在 Agent Infra 中的应用

在 Agent Infra 设计中,Attention 的思想可以推广到:

应用场景Attention 思想实现方式
Memory 检索当前查询与历史记忆的注意力向量相似度计算
工具调用当前任务与可用工具的注意力功能匹配度计算
多 Agent 协作Agent 之间的注意力通信权重动态分配
上下文管理重要信息的注意力加权关键信息优先保留

2.2 三位一体:Q、K、V 的数学必然

What:Q、K、V 的定义

这是本章最核心、也是最精彩的部分。

为什么 Transformer 的作者要引入 Query (Q)Key (K)Value (V) 三个向量?为什么不是两个?

这并非工程上的巧合,而是信息交互逻辑在数学上的最小完备映射

向量角色物理含义数学形状
Query (Q)主动查询者“我在找什么”(seq_len, d_k)
Key (K)被动被查询者“我有什么特征”(seq_len, d_k)
Value (V)内容提供者“我实际传递什么”(seq_len, d_v)

2.2.1 角色扮演游戏:图书馆隐喻

Why:为什么需要三个角色

让我们回到图书馆的例子。

想象你是一个词,你正在寻找与你相关的信息。在这个过程中,你同时扮演了三个角色:

1. 查询者 (Query):当你作为主动方去搜寻信息时,你发出的信号。

  • 比如 it 发出的 Q 信号是:“谁是那个累了的东西?”
  • Q 向量包含"查询意图"

2. 被查询者 (Key):当你作为被动方被别人搜寻时,你展示的特征。

  • 比如 animal 展示的 K 特征是:“我是名词,我有生命,我会动。”
  • 比如 street 展示的 K 特征是:“我是名词,我是地点,我不会动。”
  • K 向量包含"被匹配特征"

3. 内容提供者 (Value):当你被选中后,你实际传递给对方的信息。

  • 比如 animal 传递的 V 信息是:“动物(语义向量)"。
  • V 向量包含"实际内容”

技术细节:Q、K、V 的计算

$$ Q = X \cdot W_Q $$ $$ K = X \cdot W_K $$ $$ V = X \cdot W_V $$

其中:

  • $X$ 是输入矩阵 (seq_len, d_model)
  • $W_Q, W_K, W_V$ 是可学习的投影矩阵
  • $Q, K$ 的形状是 (seq_len, d_k)
  • $V$ 的形状是 (seq_len, d_v)

关键洞察

  • $W_Q, W_K, W_V$ 是不同的矩阵,所以 $Q, K, V$ 是不同的向量
  • 即使输入 $X$ 相同,输出 $Q, K, V$ 也不同
  • 这三个矩阵在训练中独立优化

2.2.2 为什么 Q 和 K 必须分离?(非对称性)

Why:语言关系的非对称性

如果 $Q = K$,意味着"我关注你"等于"你关注我"。

即:$A \cdot B = B \cdot A$。

这在数学上是对称矩阵。

但在语言中,关系往往是非对称的。

示例 1:主谓关系

  • “我” 关注 “苹果”(因为我要吃它)。
  • “苹果” 不需要关注 “我”(它只是个物体)。

示例 2:修饰关系

  • “红色的” 修饰 “苹果”
  • “苹果” 不被 “红色的” 修饰。

示例 3:指代关系

  • “it” 指代 “animal”
  • “animal” 不被 “it” 指代。

数学解释

如果 $Q = K$,那么注意力矩阵 $A = \text{Softmax}(QK^T)$ 是对称的。

$$ A_{ij} = A_{ji} $$

这意味着词 $i$ 对词 $j$ 的注意力,等于词 $j$ 对词 $i$ 的注意力。

但这不符合语言的实际。

Q 和 K 的分离,是为了打破对称性,建立有向的关注。

哲学思考:有向图与语言的方向性

语言是有方向的。

“我爱你” ≠ “你爱我”。

“猫追老鼠” ≠ “老鼠追猫”。

这种方向性,在数学上表现为有向图(Directed Graph)

Attention 机制中,$QK^T$ 计算的是有向相似度:

$$ \text{score}(i, j) = Q_i \cdot K_j \neq Q_j \cdot K_i = \text{score}(j, i) $$

这捕捉了语言的方向性。

思想实验:如果 Q=K 会怎样?

假设我们强制 $Q = K$,会发生什么?

  1. 注意力矩阵变成对称的
  2. 模型无法区分"主动关注"和"被动被关注"
  3. 指代消解能力下降
  4. 语法关系建模能力下降

实验验证:有研究尝试过 $Q=K$ 的变体,性能显著下降。

2.2.3 为什么 K 和 V 必须分离?(寻址与内容的解耦)

Why:索引与数据的分离

这是更深一层的逻辑。

  • Key (K)索引,是用来匹配的。
  • Value (V)数据,是用来提取的。

类比 1:键值对数据库

想象一个键值对数据库(Key-Value Store):

  • Key: user_id_12345
  • Value: {name: "Alice", age: 25, balance: 1000}

当你查询 user_id_12345 时,你并不想得到 user_id_12345 这个字符串本身(那是 Key),你想得到的是后面的详细信息(Value)。

类比 2:图书馆索引系统

  • Key: 书的分类号(如"TP312")
  • Value: 书的内容

你通过分类号找到书,但你要读的是书的内容,不是分类号本身。

在语言模型中

  • it 可能会通过匹配 animal 的词性(Key)找到它。
  • it 真正需要的是 animal 的语义(Value),以便更新自己的含义。

数学表达

$$ \text{Attention}(Q, K, V) = \text{Softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V $$

物理含义分解

步骤公式物理含义
1. 匹配度计算$QK^T$查询与索引的相似度
2. 归一化$\text{Softmax}(\cdot)$转换为概率分布(和为 1)
3. 加权求和$\cdot V$根据概率加权提取内容

结论

Attention 本质上是一个可微分的、软性的字典查询系统。

技术细节:硬注意力 vs 软注意力

类型公式特点可导性
硬注意力$\text{Argmax}(QK^T) \cdot V$只选一个最匹配的不可导
软注意力$\text{Softmax}(QK^T) \cdot V$加权多个候选可导

为什么用软注意力?

  • 可导:支持反向传播
  • 平滑:梯度不会消失
  • 鲁棒:不依赖单一匹配

2.2.4 为什么是三个,不是五个?(最小完备集)

Philosophy:数学的最小完备性

从我们之前的深入讨论中,有一个关键洞察:

Q、K、V 是注意力机制的最小完备集。

为什么不能更少?

  • 只有 Q:无法匹配,没有索引
  • 只有 Q、K:可以匹配,但无法分离"索引"和"内容"
  • 只有 Q、V:可以查询和获取,但无法精确匹配

为什么不能更多?

  • Q、K、V、U、W:U 和 W 可以被 Q、K、V 的线性组合表示
  • 增加参数,但不增加表达能力
  • 数学上冗余

线性代数解释

注意力机制需要表达的信息交互模式:

  1. 查询意图(Q)
  2. 匹配特征(K)
  3. 内容传递(V)

这三个是线性独立的,无法互相表示。

第四个向量可以被前三个的线性组合表示:

$$ U = a \cdot Q + b \cdot K + c \cdot V $$

所以,三个是最小完备集

类比

  • 3 维空间只需要 3 个基向量
  • 注意力机制只需要 3 个角色向量
  • 第 4 个是冗余的

工程启示:Q/K/V 投影矩阵的设计

在实际工程中,Q/K/V 投影矩阵的设计有以下考虑:

设计选择说明影响
共享投影$W_Q = W_K$减少参数,但损失表达能力
独立投影$W_Q \neq W_K \neq W_V$标准做法,表达能力最强
分组投影多头分组共享折中方案,如 GQA
低秩投影MLA 等压缩技术减少显存,保持表达能力

2025-2026 新技术:MLA 的 Q/K/V 压缩

DeepSeek 的 MLA(Multi-Head Latent Attention)技术:

  • 将 K/V 低秩压缩到潜在空间
  • 只缓存压缩版,运行时重构
  • KV Cache 减少 93.3%
  • 但 Q 保持完整,保证查询能力

这验证了 Q/K/V 分离的必要性——即使压缩,也要保持 Q 的完整性。


2.3 缩放点积 (Scaled Dot-Product):那个 $\sqrt{d_k}$ 是什么?

What:缩放因子的作用

在公式中,有一个不起眼的项:除以 $\sqrt{d_k}$。

$$ \frac{QK^T}{\sqrt{d_k}} $$

其中 $d_k$ 是向量的维度(比如 64 或 128)。

为什么要除以这个数?

这涉及到了高维空间中的概率分布问题。

2.3.1 点积爆炸的数学原理

Why:高维空间中的方差增长

当两个向量的维度很高时(比如 $d_k = 512$),它们的点积(Dot Product)结果会变得非常大。

数学推导

假设 Q 和 K 的每个元素都服从均值为 0、方差为 1 的正态分布:

$$ Q_i, K_i \sim \mathcal{N}(0, 1) $$

那么点积 $Q \cdot K = \sum_{i=1}^{d_k} Q_i K_i$ 的方差:

$$ \text{Var}(Q \cdot K) = \sum_{i=1}^{d_k} \text{Var}(Q_i K_i) = d_k \cdot \text{Var}(Q_i K_i) = d_k $$

关键洞察

  • 点积的方差 = 维度 $d_k$
  • 点积的标准差 = $\sqrt{d_k}$

这意味着:

  • $d_k = 64$ 时,标准差 = 8
  • $d_k = 128$ 时,标准差 = 11.3
  • $d_k = 512$ 时,标准差 = 22.6

点积结果可能在 -20 到 +20 之间波动(2 倍标准差范围)。

2.3.2 Softmax 的饱和区

Why:为什么大数值会导致问题

Softmax 函数对数值非常敏感。

$$ \text{Softmax}(x_i) = \frac{\exp(x_i)}{\sum_j \exp(x_j)} $$

数值示例

输入Softmax 输出说明
[1, 2, 3][0.09, 0.24, 0.67]平滑分布
[10, 20, 30][0.00, 0.00, 1.00]极度尖锐
[100, 200, 300][0.00, 0.00, 1.00]完全 One-Hot

问题

如果输入的数值差异很大(比如一个 10,一个 100),Softmax 会输出一个极度尖锐的分布(One-Hot 形式)。

  • 最大的那个值对应的概率接近 1。
  • 其他所有值对应的概率接近 0。

这会导致梯度消失(Gradient Vanishing)。

数学解释

Softmax 的导数:

$$ \frac{\partial \text{Softmax}(x_i)}{\partial x_j} = \text{Softmax}(x_i) \cdot (\delta_{ij} - \text{Softmax}(x_j)) $$

当 Softmax 输出接近 0 或 1 时,导数接近 0。

结果:在反向传播时,梯度无法流过 Softmax,模型学不到任何东西。

2.3.3 缩放的作用:方差归一化

Why:为什么除以$\sqrt{d_k}$有效

除以 $\sqrt{d_k}$,就是为了把点积的结果重新拉回到均值为 0、方差为 1 的范围内。

数学验证

$$ \text{Var}\left(\frac{Q \cdot K}{\sqrt{d_k}}\right) = \frac{\text{Var}(Q \cdot K)}{d_k} = \frac{d_k}{d_k} = 1 $$

效果

  • 缩放前:方差 = $d_k$,标准差 = $\sqrt{d_k}$
  • 缩放后:方差 = 1,标准差 = 1

这样,Softmax 的输入就不会太大也不会太小,它的输出分布会更加平滑

好处

  1. 模型会有机会去关注多个相关的词,而不是只盯着最强的那一个
  2. 梯度也能顺畅地流过 Softmax,更新参数
  3. 训练稳定性显著提高

这个 $\sqrt{d_k}$,是连接几何空间(点积)与概率空间(Softmax)的桥梁,也是保证训练稳定性的关键。

工程启示:为什么这个"小细节"至关重要

在工程实践中,这个缩放因子经常被忽视,但它的影响巨大。

配置训练稳定性收敛速度最终性能
有缩放 ($\sqrt{d_k}$)
无缩放
错误缩放 ($d_k$)极低极慢极差

调试技巧

如果训练不稳定,检查:

  1. 是否有缩放因子
  2. 缩放因子是否正确($\sqrt{d_k}$,不是 $d_k$)
  3. Softmax 输入的范围(应该在 -5 到 +5 之间)

2.3.4 温度参数的类比

Philosophy:缩放因子与温度的关系

缩放因子 $\sqrt{d_k}$ 与温度参数 $T$ 有相似的数学形式:

$$ \text{Softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right) \quad \text{vs} \quad \text{Softmax}\left(\frac{QK^T}{T}\right) $$

  • $\sqrt{d_k}$ 是"训练时的温度"
  • $T$ 是"推理时的温度"
  • 两者都控制概率分布的"尖锐程度"

思想实验:如果$\sqrt{d_k}$是可学习的?

假设我们把 $\sqrt{d_k}$ 替换为可学习参数 $\alpha$:

$$ \text{Softmax}(\alpha \cdot QK^T) $$

会发生什么?

  1. 模型可以自动学习"注意力温度"
  2. 不同层可以有不同的温度
  3. 可能提升性能,但增加训练难度

实际研究:有论文尝试过可学习缩放因子,效果提升有限,但增加了训练复杂性。所以标准做法仍用固定的 $\sqrt{d_k}$。

2.3.5 不忘初心:残差连接的智慧

(True to Original Intention: The Wisdom of Residual Connections)

“不忘初心,方得始终。” —— 《华严经》

“深度不是替换,是累积。” —— 本书核心论点

“梯度需要高速公路。” —— 工程实践洞察


What:被忽视的基石

在结束 Attention 的机制讲解之前,我们需要解决一个工程上的巨大隐患。

想象一下,如果我们的模型有 96 层(像 GPT-3 那样)。

如果每一层都把输入向量 $x$ 彻底打碎、重组、变换成一个新的向量 $y$,那么经过 96 次折腾后,最初的那个词向量(比如"苹果")的信息恐怕早已面目全非。

这就像"传话游戏"(Chinese Whispers):第一层传给第二层,第二层传给第三层……传到最后,信息往往会严重失真。

更糟糕的是梯度消失问题。

在反向传播时,梯度(误差信号)需要从第 96 层一路传回第 1 层。如果中间全是复杂的矩阵乘法,梯度会因为连乘效应变得越来越小,直到消失(Vanishing Gradient)。模型将无法训练。

为了解决这个问题,Transformer 引入了一个简单得令人发指,却又天才般的设计:残差连接(Residual Connection)


Why:为什么需要残差连接

残差连接是 Transformer 能够"深"的基石,与 Attention 的"广"形成互补。

A. 只是做加法

What:残差连接的数学形式

它的公式简单到只有一行:

$$ \text{Output} = \text{Input} + \text{SubLayer}(\text{Input}) $$

或者写成:

$$ y = x + f(x) $$

其中 $f(x)$ 可以是 Attention 层或 FFN 层。

请注意那个 加号 (+)。

这意味着,SubLayer 计算出来的东西,并不是替代原始输入,而是叠加在原始输入之上。

符号含义物理图像
$x$ (Input)原始的信息流“苹果"的词向量
$f(x)$ (SubLayer)这一层计算出的"增量信息”上下文关系、语法信息等
$+$将增量信息"涂抹"在原始信息上累积而非替换

关键洞察

Attention 层不是"修改"原始信息,而是在**“做加法”**。

输入 $x$ 经过 Attention 后,输出是 $x + \text{Attention}(x)$。

这意味着,原始的词向量(比如"苹果")的信息是保留的,每一层只是往上面涂抹一点新的颜色(上下文信息)。

B. 信息的高速公路 (The Residual Stream)

What:残差流的概念

这彻底改变了信息的流动方式。

在 Transformer 内部,存在一条贯穿始末的信息高速公路,我们称之为 残差流(Residual Stream)

┌─────────────────────────────────────────────────────────────────┐
│                    残差流可视化                                  │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  输入 x ("苹果")                                                 │
│    ↓                                                            │
│  ┌─────────────────────────────────────────────────────────┐   │
│  │  残差流 (Residual Stream) - 信息高速公路                 │   │
│  │  ┌─────────────────────────────────────────────────┐    │   │
│  │  │  第 1 层:+ 语法信息                               │    │   │
│  │  │  第 2 层:+ 指代信息                               │    │   │
│  │  │  第 3 层:+ 情感信息                               │    │   │
│  │  │  ...                                            │    │   │
│  │  │  第 96 层:+ 逻辑推理信息                          │    │   │
│  │  └─────────────────────────────────────────────────┘    │   │
│  │         ↑                                                │   │
│  │         原始 x 始终存在,没有被替换                        │   │
│  └─────────────────────────────────────────────────────────┘   │
│    ↓                                                            │
│  输出 ("那个被咬了一口的、红色的、代表科技公司的苹果")           │
│                                                                 │
│  关键:                                                         │
│  • 词向量 x 就像坐在一条传送带上                                │
│  • 每一层 Attention 往传送带上放一个包裹(增量信息)              │
│  • 原始的 x 始终存在,只是被不断丰富和修饰                       │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

词向量 $x$ 就像坐在一条传送带上。

  • 第 1 层 Attention:往传送带上放了一个包裹(语法信息)。
  • 第 2 层 Attention:往传送带上放了一个包裹(指代信息)。
  • 第 3 层 Attention:往传送带上放了一个包裹(情感信息)。
  • 第 96 层 Attention:往传送带上放了一个包裹(逻辑推理)。

在这个过程中,原始的 $x$ 始终存在,它没有被破坏,只是被不断地丰富修饰

“苹果"这个词,从一开始的"水果”,变成了"那个被咬了一口的、红色的、代表科技公司的苹果"。

技术细节:Pre-Norm vs Post-Norm

架构公式训练稳定性收敛速度代表模型
Post-Norm$\text{LayerNorm}(x + f(x))$较低较慢原始 Transformer
Pre-Norm$x + f(\text{LayerNorm}(x))$较高较快LLaMA/Qwen/GPT

2025-2026 趋势:Pre-Norm 成为标准,训练更稳定。

C. 梯度的直通车

Why:解决梯度消失问题

在数学上,这也解决了梯度消失的问题。

当我们对 $y = x + f(x)$ 求导时:

$$ \frac{\partial y}{\partial x} = 1 + \frac{\partial f}{\partial x} $$

那个 1 非常关键。

它意味着,梯度可以无损地通过这个"+“号,像坐直通车一样,瞬间从第 96 层传回第 1 层,而不需要经过那些复杂的 $f(x)$ 变换。

对比:有残差 vs 无残差

场景梯度传播公式梯度行为可训练深度
无残差$\frac{\partial y}{\partial x} = \frac{\partial f}{\partial x}$连乘效应,指数衰减< 20 层
有残差$\frac{\partial y}{\partial x} = 1 + \frac{\partial f}{\partial x}$至少有 1,不会消失> 100 层

关键洞察

  • 无残差:梯度需要经过每一层的变换,连乘后趋近于 0
  • 有残差:梯度有一条"捷径”,可以直接传回浅层
  • 这使得训练 100 层 + 的深层网络成为可能

工程启示:残差连接的变体

变体公式优点适用场景
标准残差$x + f(x)$简单有效标准 Transformer
缩放残差$x + \alpha \cdot f(x)$控制增量大小训练不稳定时
门控残差$x + g(x) \cdot f(x)$动态控制信息流高级架构设计
密集连接$\text{Concat}(x, f(x))$信息保留更完整计算成本较高

How:工程实践中的残差连接

D. 为什么 Pre-Norm 更好

How:LayerNorm 的位置选择

在原始 Transformer 论文中,残差连接和 LayerNorm 的顺序是:

$$ \text{Post-Norm: } \text{LayerNorm}(x + f(x)) $$

但后来的研究发现,Pre-Norm 更稳定:

$$ \text{Pre-Norm: } x + f(\text{LayerNorm}(x)) $$

关键区别

特性Post-NormPre-Norm
LayerNorm 位置残差连接之后残差连接之前
梯度稳定性较低(深层易消失)较高(梯度直通)
收敛速度较慢较快
代表模型原始 TransformerLLaMA/Qwen/GPT

为什么 Pre-Norm 更好?

  • LayerNorm 在 $f(x)$ 之前,确保输入到 $f(x)$ 的分布稳定
  • 残差连接的"1"可以更有效地传递梯度
  • 深层网络训练更稳定
E. 残差连接的可视化分析

How:如何观察残差流

研究人员通过可视化残差流,发现了一些有趣的现象:

┌─────────────────────────────────────────────────────────────────┐
│              残差流中的信息累积可视化                            │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  层数    │  保留的原始信息  │  新增的上下文信息  │  总信息量    │
│  ─────────────────────────────────────────────────────────────  │
│  第 1 层   │  100%            │  5%               │  105%        │
│  第 10 层  │  100%            │  30%              │  130%        │
│  第 50 层  │  100%            │  60%              │  160%        │
│  第 96 层  │  100%            │  90%              │  190%        │
│                                                                 │
│  关键:                                                         │
│  • 原始信息始终 100% 保留(通过残差连接)                        │
│  • 上下文信息逐层累积                                           │
│  • 总信息量不断增加,但原始信息不丢失                           │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

研究发现(2024-2026)

发现说明引用
浅层保留更多词法信息原始词向量在浅层影响更大Tenney et al. 2019
深层保留更多语义信息上下文信息在深层累积更多Rogers et al. 2020
残差流可解释性增强通过分析残差流可理解模型决策Elhage et al. 2021

Philosophy:残差连接的哲学启示

F. 不忘初心,层层递进

Philosophy:深度学习的智慧

残差连接告诉我们,深层网络的智慧不在于"改头换面",而在于**“不忘初心,层层递进”**。

理念残差连接人生/学习
核心原则保留原始信息保持初心
成长方式增量累积循序渐进
信息流动高速公路直通不忘本源
深度可能100 层 + 可训练持续深入学习

类比

  • 学习:不是抛弃旧知识,而是在旧知识基础上添加新知识
  • 成长:不是变成另一个人,而是在原有基础上不断完善
  • 文化传承:不是完全颠覆,而是在传统基础上创新

这正是"不忘初心,方得始终"的数学表达。

G. 深度与广度的平衡

Philosophy:为什么需要深度

有了残差连接,我们可以训练非常深的网络(100 层+)。

但深度不是目的,是手段。

深度作用类比
浅层(1-32 层)词法、语法信息基础技能
中层(33-64 层)语义、指代信息专业能力
深层(65-96 层+)逻辑、推理信息战略思维

关键洞察

  • 深度允许信息的多层次处理
  • 每一层提取不同抽象级别的信息
  • 残差连接确保浅层信息不被丢失

工程启示:层数选择策略

模型规模推荐层数理由
小模型 (<1B)12-24 层参数效率优先
中模型 (1B-10B)24-48 层平衡性能与成本
大模型 (10B-100B)48-96 层表达能力优先
超大模型 (>100B)96-120 层最大化深度优势

本节总结

核心概念关键洞察工程启示
残差连接$y = x + f(x)$,做加法而非替换必须使用,不可省略
残差流信息高速公路,原始信息始终保留可分析残差流理解模型
梯度直通$\frac{\partial y}{\partial x} = 1 + \frac{\partial f}{\partial x}$深层网络可训练的关键
Pre-NormLayerNorm 在残差之前训练更稳定,收敛更快
哲学启示不忘初心,层层递进深度是手段,不是目的

逻辑链条

Attention 计算稳定 → 信息流动畅通 → 概率归一化 → 采样生成
     ↓                    ↓              ↓            ↓
  缩放点积            残差连接        Softmax      温度参数

2.4 Softmax:概率的归一化

What:Softmax 的数学形式

在 Attention 公式中,Softmax 是关键组件:

$$ \text{Softmax}(x_i) = \frac{\exp(x_i)}{\sum_j \exp(x_j)} $$

物理含义:将任意实数向量转换为概率分布(所有元素和为 1)。

2.4.1 为什么叫"Soft"max?

Why:与 Argmax 的对比

函数公式输出可导性
Argmax$\text{Argmax}(x)$One-Hot 向量不可导
Softmax$\text{Softmax}(x)$概率分布可导

示例

输入:[2.0, 1.0, 0.1]

Argmax 输出:[0, 1, 0]  # 只有最大值位置是 1
Softmax 输出:[0.659, 0.242, 0.099]  # 平滑的概率分布

关键区分

  • Argmax 是"硬"选择,不可导,无法反向传播
  • Softmax 是"软"选择,可导,支持梯度流动

为什么需要可导?

因为训练需要反向传播。

如果 Attention 用 Argmax,梯度无法流过,模型无法学习。

2.4.2 温度参数的控制

How:Temperature 的作用

$$ \text{Softmax}(x_i, T) = \frac{\exp(x_i/T)}{\sum_j \exp(x_j/T)} $$

温度 T输出分布适用场景
T = 0.2极度尖锐,接近 Argmax事实问答,代码生成
T = 0.7适中,平衡多样性对话,一般生成
T = 1.0标准 Softmax基准
T = 1.5平滑,多样性高创意写作,诗歌

工程启示:推理时的温度调优

在 Agent Infra 设计中,温度参数的选择影响生成质量:

应用场景推荐温度理由
事实问答0.2-0.5追求准确性
对话助手0.7-0.9平衡多样性与连贯性
创意写作1.0-1.5追求多样性
代码生成0.2-0.5追求准确性

2.5 位置编码:无序中的有序

What:为什么需要位置编码

Transformer 没有 RNN 的"顺序处理"机制,Self-Attention 是并行计算,天然无序。

问题:“我爱中国"和"中国爱我"的 Attention 计算结果一样!

因为 Attention 只关心词与词的关系,不关心顺序。

解决方案:给每个位置添加"位置信号”,让模型知道每个词的相对/绝对位置。

2.5.1 位置编码的演进

How:不同位置编码方案对比

方案年份公式优点缺点
正弦/余弦2017$PE_{(pos,2i)} = \sin(pos/10000^{2i/d})$可外推,固定表达能力有限
可学习2018$PE = \text{Embedding}(pos)$简单有效不可外推
RoPE2021旋转位置编码相对位置建模好实现复杂
ALiBi2021线性偏置无需位置编码长序列性能下降

2025-2026 趋势

  • Qwen3.5:RoPE 变体
  • LLaMA 3:RoPE 扩展
  • 新模型:混合位置编码

2.5.2 位置编码的添加方式

How:为什么是"加"不是"拼接"

$$ \text{Input} = \text{Token Embedding} + \text{Position Embedding} $$

为什么是"加"?

  • 保持维度不变
  • 位置信息"调制"语义信息
  • 类似信号处理中的"载波调制"

如果是"拼接"?

  • 维度翻倍
  • 需要额外投影
  • 增加参数

工程启示:位置编码在长上下文中的挑战

上下文长度位置编码挑战解决方案
< 4K无问题标准位置编码
4K-32K外推问题RoPE 扩展
32K-128K位置编码饱和ALiBi 混合
> 128K位置信息稀释分层位置编码

2.6 思想实验:注意力的本质

思想实验 1:注意力是"理解"吗?

Attention 让词与词之间建立联系。

但这等于"理解"吗?

强 AI 观点:如果行为上无法区分,就是理解。

弱 AI 观点:这只是权重计算,不是真正的语义理解。

本书的立场:功能主义——“理解"的定义应该是功能性的。

如果 Attention 能让模型正确指代消解、正确翻译、正确推理,那么我们可以说它"理解"了。

思想实验 2:注意力权重的可解释性

Attention 权重矩阵是可视化的。

句子:"The animal didn't cross the street because it was too tired."

注意力热力图:
         │  The  │ animal │ street │  it  │ tired │
─────────┼───────┼────────┼────────┼──────┼───────┤
  The    │  0.1  │  0.2   │  0.1   │ 0.1  │  0.1  │
  animal │  0.1  │  0.3   │  0.1   │ 0.4  │  0.2  │
  it     │  0.05 │  0.65  │  0.05  │ 0.05 │  0.15 │

我们能从热力图中"看懂"模型的理解吗?

乐观观点:可以,注意力权重反映了语义关系。

悲观观点:不可以,注意力权重与模型行为不一定对应。

研究发现:注意力权重与模型行为的相关性约 60-70%,不是完全对应。

思想实验 3:如果 Attention 是全连接的?

Attention 让所有词两两相连。

计算复杂度是 $O(n^2)$。

如果序列长度是 100 万,注意力矩阵是 1 万亿个元素。

问题:这在物理上可行吗?

答案:需要稀疏注意力、线性注意力等优化技术。

2025-2026 趋势:注意力稀疏化是研究热点。


2.7 本章总结

核心概念关键洞察工程启示
RNN vs Attention序列 vs 全局,链式图 vs 完全图长序列优先 Attention
Q/K/V 分离最小完备集,非对称性,寻址与内容解耦不要共享 Q/K/V 投影
缩放因子$\sqrt{d_k}$方差归一化,防止 Softmax 饱和必须正确实现
Softmax可导的"软"选择,温度控制推理时调优温度
位置编码无序中的有序,相对位置建模长上下文用 RoPE 扩展

2.8 下一章预告

在第二章中,我们解构了 Attention 的原子结构。

我们看到了 Q、K、V 的数学必然性。

我们理解了缩放因子的关键作用。

但还有一个问题没有解决:

单个 Attention 头,能同时处理语法、语义、情感、指代等多种关系吗?

人类的语言是多维的。

一句话可能同时包含:

  • 语法结构(主谓宾)
  • 语义关系(同义、反义)
  • 指代关系(代词→名词)
  • 情感色彩(褒义、贬义)

仅仅用一个 Attention 头,能同时捕捉这么多维度的信息吗?

答案是否定的。

正如人类有两只眼睛、两只耳朵一样,模型也需要多视角的观察能力。

这就是下一章的主角——多头注意力(Multi-Head Attention)

我们将探讨:

  • 为什么需要多个头?
  • 不同头是否学习不同的特征?
  • 头之间是隔离的还是重叠的?
  • 这是预设的还是涌现的?

让我们继续这场旅程。

从智能的原子,走向多维视角的涌现。


(第二章完)