前面已经聊过 embedding、attention、softmax、交叉熵、LoRA、SVD 这类基础骨架。
这篇不重复那些。
如果把大模型想成一台很大的“模式机器”,基础知识回答的是:
token 怎么变成向量,向量之间怎么互相看,模型怎么给下一个词打分。
但更有意思的问题其实在后面:
能力为什么会突然出现?
知识到底存在权重里、激活里,还是上下文里?
为什么改一个方向,模型的风格或行为会变?
为什么越大不一定越容易过拟合?
为什么模型不更新权重,也能看几个例子后临时跟上任务?
这些问题都有数学味,而且不是为了炫技。它们在问同一件事:
大模型到底在什么空间里组织能力?
下面是一张进阶地图。读完不需要立刻会推导,但你应该能知道:每个话题在研究什么,它为什么有趣,和你已经理解的 SVD、向量空间、概率有什么关系。
flowchart TD
A[大模型的数学问题] --> B[训练动力学]
A --> C[权重和激活空间]
A --> D[表示几何]
A --> E[对齐与部署]
B --> B1[Grokking]
B --> B2[Double Descent]
B --> B3[Loss Landscape]
B --> B4[Hessian Spectrum]
B --> B5[muP 缩放]
C --> C1[Task Arithmetic]
C --> C2[Activation Steering]
C --> C3[Logit Lens / Tuned Lens]
C --> C4[Causal Tracing]
D --> D1[Anisotropy]
D --> D2[Rank Collapse]
D --> D3[Attention as Memory]
D --> D4[ICL as Bayesian Inference]
E --> E1[DPO / KL]
E --> E2[MoE Routing]
E --> E3[Quantization]
先给一个总览
| 话题 | 它在问什么 | 数学味 | 人话版 |
|---|---|---|---|
| Grokking | 为什么模型先死记硬背,后来突然真懂了 | 泛化、相变、训练动力学 | 学了很久像没懂,某一刻突然开窍 |
| Double Descent | 为什么模型更大后,反而可能更不容易过拟合 | 偏差方差、插值、统计学习 | 不是“模型越大越危险”那么简单 |
| Loss Landscape | 训练是在怎样的地形里找低点 | 高维几何、优化 | 梯度下降不是走平地,而是在山谷里找路 |
| Hessian Spectrum | 损失函数周围哪些方向陡,哪些方向平 | 二阶导、特征值谱 | 有些方向一碰就坏,有些方向怎么动都差不多 |
| µP | 小模型调好的超参,怎么迁移到大模型 | 极限、尺度律、参数化 | 让小实验更像大模型的缩小版 |
| Task Arithmetic | 为什么“微调后的权重差”可以做加减法 | 权重向量、线性组合 | 能力像方向,可以相加、相减、合并 |
| Activation Steering | 为什么加一点激活向量就能改变模型行为 | 激活空间、方向控制 | 不改模型,只在中途轻轻推一把 |
| Logit Lens / Tuned Lens | 每一层中间状态已经“想说什么” | 线性投影、表征解码 | 看模型每一层脑子里冒出的答案 |
| Causal Tracing | 知识在哪一层、哪几个位置发挥作用 | 因果干预、路径分析 | 不是看相关,而是动手验证“这里是不是关键” |
| Anisotropy | 向量空间为什么会挤在少数方向里 | 高维几何、主成分 | 不是所有方向都一样有用 |
| Rank Collapse | token 表示为什么可能越来越像 | 矩阵秩、奇异值 | 信息维度被压扁,句子内部差异变少 |
| Attention as Memory | attention 是否像一种可检索记忆 | 联想记忆、能量函数 | 给一个线索,模型从记忆里捞出相关模式 |
| ICL as Bayesian Inference | 上下文学习是否像临时做贝叶斯 | 贝叶斯、隐变量、线性回归 | 不改权重,而是在猜当前题型 |
| DPO / KL | 为什么偏好对齐可以写成优化公式 | 概率比、KL 约束 | 让模型更偏向好答案,但别彻底跑偏 |
| MoE Routing | 为什么专家模型需要负载均衡 | 稀疏选择、路由、约束优化 | 每个 token 找专家,但不能让一个专家被挤爆 |
| Quantization | 为什么低精度还能跑,哪里会崩 | 近似、误差、异常值 | 把数字压小,尽量不伤模型能力 |
下面逐个拆开。
1. Grokking:模型为什么会突然开窍
Grokking 最早在小型算法任务里被系统观察到:模型训练一段时间后,训练集已经几乎全对,但测试集仍然很差;继续训练很久以后,测试集准确率突然上升。
这件事很反直觉。我们通常以为:
训练集会了,测试集不会,那就是过拟合。继续训练只会更过拟合。
但 Grokking 说明,有些时候模型前期像是在背答案,后期才慢慢找到更简单、更可泛化的规则。
数学上,它和几个概念有关:
- 训练动力学:同一个损失函数下,模型先走到哪种解,后走到哪种解。
- 隐式正则化:梯度下降不只是降低损失,也会偏好某些“更简单”的解。
- 相变:指标不是平滑变好,而是到某个阶段突然变好。
人话说:
模型一开始用笨办法把题背下来,后来在参数空间里绕了很久,终于找到了更短的规律。
它有趣的地方在于,Grokking 把“理解”变成了可以观察的训练过程:同样是答对,背下来和真的找到规律,在测试集上表现完全不同。
参考入口:Grokking: Generalization Beyond Overfitting on Small Algorithmic Datasets。
2. Double Descent:更大的模型为什么可能更好
传统机器学习里有个经典直觉:
模型太小会欠拟合,模型太大会过拟合。
所以误差曲线应该像 U 形:先下降,后上升。
但深度学习里经常出现另一种曲线:模型变大到某个临界点时,测试误差先变坏;继续变大,测试误差又下降。这就是 Double Descent。
它像是两段故事:
- 小模型阶段:模型能力不够,错误多。
- 临界阶段:模型刚好能把训练集硬插值进去,可能学到很别扭的解。
- 超大模型阶段:可选解太多,优化过程反而能找到更平滑、更泛化的解。
数学味在于它挑战了旧的“复杂度越高越危险”的图像。
对大模型来说,这个话题很重要,因为 LLM 本质上就是超参数量模型。我们不能只用小模型时代的过拟合直觉理解它。
人话版:
大模型不是因为“记性大”才强,而是因为可选路径太多,训练有机会找到更顺的那条路。
参考入口:Deep Double Descent。
3. Loss Landscape:训练不是找最低点,而是在高维地形里找路
Loss Landscape 是损失函数形成的地形。
如果模型只有两个参数,我们可以画一张山地图:横轴是参数 1,纵轴是参数 2,高度是 loss。训练就是沿着坡往低处走。
但大模型不是两个参数,而是几十亿、几千亿参数。它的地形是超高维的。
这里最有意思的地方不是“有没有最低点”,而是:
- 很多低点可能连成一大片平谷。
- 两个看似不同的模型,可能在参数空间里通过低损失路径相连。
- 平坦区域往往和泛化有关,但“平坦”本身也依赖坐标尺度。
人话版:
训练不是找到一个神秘宝箱,而是在一个巨大地形里走进一片还不错的低海拔区域。
这个视角能解释为什么不同随机种子、不同训练路径,最后都可能得到可用模型。
参考入口:Visualizing the Loss Landscape of Neural Nets。
4. Hessian Spectrum:哪些方向一碰就坏,哪些方向随便动
Hessian 是损失函数的二阶导矩阵。它告诉我们,在当前参数附近,往不同方向动一点,loss 会怎么弯。
你可以把它理解成训练地形附近的“硬度报告”:
- 大特征值方向:很陡,参数一动,loss 变化很大。
- 小特征值方向:很平,参数动一点,loss 变化不明显。
- 特征值谱:不是看一个方向,而是看所有方向的硬度分布。
这和 SVD 很像。SVD 看的是矩阵在不同方向上的拉伸强度;Hessian 谱看的是 loss 在不同方向上的弯曲强度。
大模型的参数空间里,很多方向可能非常平。这意味着:
模型能力不是平均分布在所有参数方向上,而是集中在少数更敏感的方向里。
这也解释了为什么剪枝、量化、低秩微调有时候能工作:大量方向的扰动没有你想象中那么致命。
参考入口:A PyHessian Based Analysis of Neural Network Loss Landscape,以及关于权重 Hessian 幂律谱的研究:Power-law Hessian Spectra in Deep Learning。
5. µP:怎么让小模型实验更像大模型
训练大模型很贵,所以我们经常先在小模型上试超参。
问题是:小模型上好用的学习率、初始化、宽度缩放规则,放到大模型上不一定还成立。
µP,也叫 maximal update parametrization,关心的是:
当模型宽度变大时,怎样缩放参数和学习率,才能让小模型的训练行为更接近大模型?
它不是一个酷炫应用,而是一种基础设施级别的数学思想。
如果缩放方式错了,小模型实验像是在另一个物理世界里做实验;如果缩放方式对了,小模型就更像大模型的缩小版。
人话版:
不是把玩具车简单放大成真车,而是先保证发动机、轮胎和受力关系按同一套比例缩放。
参考入口:Tensor Programs V: Tuning Large Neural Networks via Zero-Shot Hyperparameter Transfer。
6. Task Arithmetic:能力能不能在权重空间里做加减法
Task Arithmetic 的想法很漂亮。
先拿一个基础模型,再分别微调出两个模型:
- 模型 A:学会某个任务,比如更会做数学题。
- 模型 B:学会另一个任务,比如更会遵守某种格式。
然后看微调前后权重的差:
任务向量 = 微调后权重 - 原始权重
如果这个差值真代表某种能力方向,那我们就可以试:
原始权重 + 数学任务向量 + 格式任务向量
这就是“任务算术”。
它和 SVD 那篇里的方向感是一脉相承的:在高维空间里,某些方向不是随机的,而是携带可复用的功能。
人话版:
微调不是把模型整体打碎重造,而是在权重空间里推了一个方向。这个方向有时可以被拿出来复用。
当然,这不是魔法。任务向量会冲突,尺度会失控,不同模型架构之间也不一定能直接搬。
参考入口:Editing Models with Task Arithmetic。
7. Activation Steering:不改权重,只在中途推一下
Task Arithmetic 改的是权重。Activation Steering 改的是模型运行时的中间激活。
模型生成每个 token 时,中间层会产生很多向量。某些向量方向可能和“更礼貌”“更详细”“更拒绝”“更像某种风格”有关。
于是我们可以做一件事:
- 找到一种行为对应的激活方向。
- 在模型运行到某一层时,把这个方向加进去。
- 看输出是否朝目标行为变化。
这很像你在模型内部轻轻拧旋钮。
数学味在于:
- 行为被表示成激活空间里的方向。
- 控制变成向量加法。
- 因果验证变成“加了这个方向,输出是否稳定改变”。
人话版:
不重新训练模型,只是在它思考到一半时,往某个心理状态上推一把。
参考入口:Activation Addition: Steering Language Models Without Optimization。
8. Logit Lens / Tuned Lens:偷窥每一层想说什么
大模型最后一层会把隐藏状态投影到词表,得到每个词的概率。
Logit Lens 的直觉是:如果最后一层可以投影成词表,那么中间层能不能也投影一下?这样我们就能看模型在第 5 层、第 10 层、第 20 层时“像是想输出什么”。
Tuned Lens 是更精细的版本:不是直接用最后的输出头硬投影,而是给每一层训练一个小的解码器,让中间层更可读。
它有趣在于,它把“模型内部状态”变成可观察的时间序列:
早期层:可能还在处理词面和局部结构
中期层:开始出现候选答案
后期层:答案被修正、压实、转成输出分布
人话版:
模型不是最后一刻才有答案,它可能在中间层就已经有草稿了。
参考入口:Eliciting Latent Predictions from Transformers with the Tuned Lens。
9. Causal Tracing:知识到底在哪儿起作用
可解释性里有个常见陷阱:
某个神经元很活跃,不代表它真的导致了答案。
Causal Tracing 更强调因果干预。它会做类似这样的实验:
- 给模型一个事实问题,比如某人的出生地。
- 人为破坏某些中间激活,让模型答错。
- 再把某一层、某个 token 位置的激活恢复。
- 如果恢复这里就能让答案回来,说明这里可能是关键路径的一部分。
这比“看哪里亮了”更强,因为它问的是:
动这里,会不会改变结果?
数学味在因果推断和干预:不是相关性,而是反事实测试。
人话版:
不是看哪盏灯亮,而是拔掉某根线,看机器还会不会工作。
参考入口:Locating and Editing Factual Associations in GPT。
10. Anisotropy:向量空间为什么会挤在少数方向里
理想情况下,我们希望 embedding 空间的各个方向都有用。
但实际模型里,很多表示会出现 anisotropy,也就是各向异性:向量不是均匀铺开,而是挤在少数主方向附近。
这和 SVD 的关系很直接。
如果把一堆 token 或句子的向量排成矩阵,做奇异值分解,你可能会发现:
- 少数奇异值特别大。
- 大量方向贡献很小。
- 表示空间的有效维度比原始维度低很多。
这意味着模型的表示不是一个完美球体,而更像被拉长、压扁的云团。
人话版:
虽然向量有几千维,但真正响亮的方向可能没那么多。
这个问题会影响相似度搜索、句向量质量、表示可分性,也会影响我们如何理解模型内部的“特征”。
参考入口:On the Sentence Embeddings from Pre-trained Language Models,以及关于 self-attention 各向异性的讨论:Anisotropy Is Inherent to Self-Attention in Transformers。
11. Rank Collapse:层数越深,token 会不会越来越像
Rank Collapse 关心的是:Transformer 过很多层以后,不同 token 的表示会不会变得越来越相似。
如果所有 token 向量最后都挤到差不多的方向,矩阵的秩会下降,信息维度就被压扁了。
这听起来像坏事:
每个位置本来应该保留自己的信息,结果越传越像,区分度下降。
但这不是简单的“模型一定会崩”。残差连接、MLP、归一化、注意力结构都会影响这个过程。研究它的价值在于,它让我们从矩阵秩和奇异值角度看 Transformer 深度。
和 SVD 的连接非常明显:
如果奇异值很多都接近 0,说明很多方向已经没什么信息。
如果少数奇异值支配全部表示,说明表示被压到少数主方向。
人话版:
token 本来是一群人各说各话,层数太深以后,可能变成大家越来越像同一个声音。
参考入口:Rank Collapse Causes Over-Smoothing and Poor Prediction in Transformers,以及早期关于纯 attention 深度退化的分析:Attention is Not All You Need。
12. Attention as Memory:attention 像不像联想记忆
attention 最基础的解释是:
query 去找 key,按相似度加权 value。
但再往深看,它也像一种联想记忆:给一个线索,系统从一堆记忆槽里取回相关内容。
这和 Hopfield 网络有关。现代 Hopfield 网络把“根据当前状态检索记忆模式”写成可微的形式,而 attention 可以被放进类似框架里理解。
这个视角的重点不是再讲一遍 QKV,而是把 attention 看成:
- 存储模式:上下文里的 key/value 像临时记忆。
- 检索模式:query 像检索线索。
- 竞争机制:softmax 让相关记忆得到更大权重。
人话版:
attention 不只是“看哪里”,也像“凭线索想起什么”。
这个话题适合接在 SVD、向量相似度后面学,因为它会让你把检索、记忆、能量函数、概率分布串起来。
参考入口:Hopfield Networks is All You Need。
13. In-Context Learning as Bayesian Inference:上下文学习像临时做贝叶斯
这是我觉得最值得单独写一篇的主题。
现象是:模型权重不变,但你在 prompt 里给几个例子,它就能临时学会格式或任务。
比如:
苹果 -> apple
香蕉 -> banana
猫 -> ?
模型大概率会答 cat。
它没有更新权重,没有真的重新训练。那它在干什么?
一个解释是:模型在上下文里做临时贝叶斯推断。它不是现场学会英语,而是在判断:
这些例子说明我现在处于“中文到英文翻译”这个任务里。
数学上,可以把“当前任务是什么”看成一个隐变量。prompt 里的例子是证据。模型根据证据更新对任务的信念,然后对新输入做预测。
人话版:
不是现场学习新技能,而是在猜“我现在被放进了哪种任务模式”。
这篇后面会单独展开,不在这里抢戏。
参考入口:An Explanation of In-context Learning as Implicit Bayesian Inference,以及综述式视角:In-Context Learning through the Bayesian Prism。
14. DPO / KL:对齐不是说教,而是概率优化
RLHF 和 DPO 讨论的是:怎样让模型更符合人类偏好。
DPO 的直觉是,把“人更喜欢回答 A 而不是回答 B”转成一个优化目标,让模型提高好回答的相对概率,降低差回答的相对概率。
这里有两个数学关键词:
- 概率比:不是只看好答案概率高不高,而是看好答案相对差答案有没有更占优。
- KL 约束:模型不能为了讨好偏好数据,把原本语言能力彻底扭坏。
可以粗略理解成:
对齐 = 往人类偏好方向推
KL = 拴住模型,别让它跑太远
人话版:
让模型更像我们想要的样子,但还得保留它原来的基本功。
DPO 有意思的地方是,它把复杂的偏好学习变成了一个相对直接的分类式目标。
参考入口:Direct Preference Optimization。
15. MoE Routing:每个 token 找专家,但专家不能被挤爆
MoE,Mixture of Experts,是把模型的一部分做成很多专家。每个 token 来了以后,路由器决定把它送给哪些专家处理。
这听起来像公司分工:
- 数学 token 找数学专家。
- 代码 token 找代码专家。
- 法律文本找另一些专家。
但真正难的是路由。
如果所有 token 都挤到一个专家那里,其他专家闲着,计算会失衡,训练也会出问题。所以 MoE 里常常要加入负载均衡损失、容量限制、top-k 选择等机制。
数学味在于:
- 稀疏选择:每个 token 只激活少数专家。
- 约束优化:性能、负载、通信成本要一起平衡。
- 概率路由:路由器输出的不是硬规则,而是一组分数。
人话版:
模型内部开了很多窗口,关键不是窗口多,而是怎么把人分流过去。
参考入口:A Survey on Mixture of Experts in Large Language Models。
16. Quantization:为什么把数字压小,模型还能用
大模型参数通常是浮点数。部署时为了省显存、提速度,我们会把它们压成更低精度,比如 8-bit、4-bit。
这叫量化。
直觉上,数字变粗糙了,模型应该明显变差。但实际中,很多模型可以被量化到很低精度仍然可用。
这里的关键数学问题是:
- 误差怎么传播。
- 哪些层、哪些通道对误差更敏感。
- 是否存在少数异常值支配了量化难度。
SmoothQuant 这类方法的思路很典型:如果激活里有很大的异常值,会让量化很难;那就把一部分量化难度从激活转移到权重里,让整体更平滑。
人话版:
不是所有数字都同样重要。把大部分数字压粗一点没事,但少数特别刺眼的值要小心处理。
参考入口:SmoothQuant: Accurate and Efficient Post-Training Quantization for Large Language Models。
这些话题该按什么顺序学
如果你刚理解完 SVD,我建议这样走:
-
先学 Anisotropy 和 Rank Collapse。
它们直接延续“矩阵、方向、奇异值、有效维度”这条线。 -
再学 Task Arithmetic 和 Activation Steering。
它们会让你看到:方向不仅能解释数据,还可能对应能力和行为。 -
然后学 Causal Tracing 和 Tuned Lens。
这一步开始进入模型内部,不只是看结果,而是看中间发生了什么。 -
再学 Grokking、Double Descent、Loss Landscape、Hessian Spectrum。
它们解释训练过程:模型为什么会这样学,为什么大模型训练不是旧直觉能完全解释的。 -
最后学 DPO、MoE、Quantization、µP。
这些更接近真实大模型训练和部署,会把数学和工程绑在一起。
最重要的一条主线
这些话题看起来分散,其实有一条共同主线:
大模型里的能力,常常可以被理解成高维空间里的结构。
这个结构可能表现为:
- 权重空间里的方向。
- 激活空间里的方向。
- 表示矩阵里的主成分。
- loss 地形里的平坦区域。
- 上下文里对任务的隐变量推断。
- 概率分布之间的偏好调整。
所以,SVD 那篇的核心直觉仍然有效:
复杂系统里,真正重要的信息往往集中在少数有代表性的方向上。
只是到了大模型里,这个“方向”不一定只是一张图片里的主成分。它可能是一个任务、一个行为、一段知识路径、一种偏好,甚至是一种临时猜出来的任务模式。
需要保持的清醒
最后要补一句边界。
这些解释都很有启发,但不能把它们当成“已经完全解释了大模型”。
- 很多理论结果来自 toy model 或小规模实验,不能直接等同于前沿大模型。
- 可解释性方法常常能发现强线索,但不等于给出了完整机制。
- “方向”是很有用的语言,但不是所有能力都能被一个线性方向解释。
- 贝叶斯、梯度下降、能量模型、几何表示,可能是在不同层面描述同一个复杂系统。
更稳妥的态度是:
把它们当成透镜,不要当成终极答案。
透镜越多,你越能从不同角度看清大模型。
而下一篇最值得细讲的,就是这里的第 13 个:
为什么模型不改权重,也能在上下文里临时学会一个任务。