大模型里更有数学味的 16 个问题:从 Grokking 到权重空间

如果已经了解 embedding、attention、softmax、LoRA 和 SVD,这篇可以继续往下走:训练动力学、权重空间、内部因果、表示几何、对齐与部署里,还有哪些值得追的大模型数学问题。

前面已经聊过 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 Collapsetoken 表示为什么可能越来越像矩阵秩、奇异值信息维度被压扁,句子内部差异变少
Attention as Memoryattention 是否像一种可检索记忆联想记忆、能量函数给一个线索,模型从记忆里捞出相关模式
ICL as Bayesian Inference上下文学习是否像临时做贝叶斯贝叶斯、隐变量、线性回归不改权重,而是在猜当前题型
DPO / KL为什么偏好对齐可以写成优化公式概率比、KL 约束让模型更偏向好答案,但别彻底跑偏
MoE Routing为什么专家模型需要负载均衡稀疏选择、路由、约束优化每个 token 找专家,但不能让一个专家被挤爆
Quantization为什么低精度还能跑,哪里会崩近似、误差、异常值把数字压小,尽量不伤模型能力

下面逐个拆开。

1. Grokking:模型为什么会突然开窍

Grokking 最早在小型算法任务里被系统观察到:模型训练一段时间后,训练集已经几乎全对,但测试集仍然很差;继续训练很久以后,测试集准确率突然上升。

这件事很反直觉。我们通常以为:

训练集会了,测试集不会,那就是过拟合。继续训练只会更过拟合。

但 Grokking 说明,有些时候模型前期像是在背答案,后期才慢慢找到更简单、更可泛化的规则。

数学上,它和几个概念有关:

  1. 训练动力学:同一个损失函数下,模型先走到哪种解,后走到哪种解。
  2. 隐式正则化:梯度下降不只是降低损失,也会偏好某些“更简单”的解。
  3. 相变:指标不是平滑变好,而是到某个阶段突然变好。

人话说:

模型一开始用笨办法把题背下来,后来在参数空间里绕了很久,终于找到了更短的规律。

它有趣的地方在于,Grokking 把“理解”变成了可以观察的训练过程:同样是答对,背下来和真的找到规律,在测试集上表现完全不同。

参考入口:Grokking: Generalization Beyond Overfitting on Small Algorithmic Datasets

2. Double Descent:更大的模型为什么可能更好

传统机器学习里有个经典直觉:

模型太小会欠拟合,模型太大会过拟合。

所以误差曲线应该像 U 形:先下降,后上升。

但深度学习里经常出现另一种曲线:模型变大到某个临界点时,测试误差先变坏;继续变大,测试误差又下降。这就是 Double Descent。

它像是两段故事:

  1. 小模型阶段:模型能力不够,错误多。
  2. 临界阶段:模型刚好能把训练集硬插值进去,可能学到很别扭的解。
  3. 超大模型阶段:可选解太多,优化过程反而能找到更平滑、更泛化的解。

数学味在于它挑战了旧的“复杂度越高越危险”的图像。

对大模型来说,这个话题很重要,因为 LLM 本质上就是超参数量模型。我们不能只用小模型时代的过拟合直觉理解它。

人话版:

大模型不是因为“记性大”才强,而是因为可选路径太多,训练有机会找到更顺的那条路。

参考入口:Deep Double Descent

3. Loss Landscape:训练不是找最低点,而是在高维地形里找路

Loss Landscape 是损失函数形成的地形。

如果模型只有两个参数,我们可以画一张山地图:横轴是参数 1,纵轴是参数 2,高度是 loss。训练就是沿着坡往低处走。

但大模型不是两个参数,而是几十亿、几千亿参数。它的地形是超高维的。

这里最有意思的地方不是“有没有最低点”,而是:

  1. 很多低点可能连成一大片平谷。
  2. 两个看似不同的模型,可能在参数空间里通过低损失路径相连。
  3. 平坦区域往往和泛化有关,但“平坦”本身也依赖坐标尺度。

人话版:

训练不是找到一个神秘宝箱,而是在一个巨大地形里走进一片还不错的低海拔区域。

这个视角能解释为什么不同随机种子、不同训练路径,最后都可能得到可用模型。

参考入口:Visualizing the Loss Landscape of Neural Nets

4. Hessian Spectrum:哪些方向一碰就坏,哪些方向随便动

Hessian 是损失函数的二阶导矩阵。它告诉我们,在当前参数附近,往不同方向动一点,loss 会怎么弯。

你可以把它理解成训练地形附近的“硬度报告”:

  1. 大特征值方向:很陡,参数一动,loss 变化很大。
  2. 小特征值方向:很平,参数动一点,loss 变化不明显。
  3. 特征值谱:不是看一个方向,而是看所有方向的硬度分布。

这和 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 的想法很漂亮。

先拿一个基础模型,再分别微调出两个模型:

  1. 模型 A:学会某个任务,比如更会做数学题。
  2. 模型 B:学会另一个任务,比如更会遵守某种格式。

然后看微调前后权重的差:

任务向量 = 微调后权重 - 原始权重

如果这个差值真代表某种能力方向,那我们就可以试:

原始权重 + 数学任务向量 + 格式任务向量

这就是“任务算术”。

它和 SVD 那篇里的方向感是一脉相承的:在高维空间里,某些方向不是随机的,而是携带可复用的功能。

人话版:

微调不是把模型整体打碎重造,而是在权重空间里推了一个方向。这个方向有时可以被拿出来复用。

当然,这不是魔法。任务向量会冲突,尺度会失控,不同模型架构之间也不一定能直接搬。

参考入口:Editing Models with Task Arithmetic

7. Activation Steering:不改权重,只在中途推一下

Task Arithmetic 改的是权重。Activation Steering 改的是模型运行时的中间激活。

模型生成每个 token 时,中间层会产生很多向量。某些向量方向可能和“更礼貌”“更详细”“更拒绝”“更像某种风格”有关。

于是我们可以做一件事:

  1. 找到一种行为对应的激活方向。
  2. 在模型运行到某一层时,把这个方向加进去。
  3. 看输出是否朝目标行为变化。

这很像你在模型内部轻轻拧旋钮。

数学味在于:

  1. 行为被表示成激活空间里的方向。
  2. 控制变成向量加法。
  3. 因果验证变成“加了这个方向,输出是否稳定改变”。

人话版:

不重新训练模型,只是在它思考到一半时,往某个心理状态上推一把。

参考入口: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 更强调因果干预。它会做类似这样的实验:

  1. 给模型一个事实问题,比如某人的出生地。
  2. 人为破坏某些中间激活,让模型答错。
  3. 再把某一层、某个 token 位置的激活恢复。
  4. 如果恢复这里就能让答案回来,说明这里可能是关键路径的一部分。

这比“看哪里亮了”更强,因为它问的是:

动这里,会不会改变结果?

数学味在因果推断和干预:不是相关性,而是反事实测试。

人话版:

不是看哪盏灯亮,而是拔掉某根线,看机器还会不会工作。

参考入口:Locating and Editing Factual Associations in GPT

10. Anisotropy:向量空间为什么会挤在少数方向里

理想情况下,我们希望 embedding 空间的各个方向都有用。

但实际模型里,很多表示会出现 anisotropy,也就是各向异性:向量不是均匀铺开,而是挤在少数主方向附近。

这和 SVD 的关系很直接。

如果把一堆 token 或句子的向量排成矩阵,做奇异值分解,你可能会发现:

  1. 少数奇异值特别大。
  2. 大量方向贡献很小。
  3. 表示空间的有效维度比原始维度低很多。

这意味着模型的表示不是一个完美球体,而更像被拉长、压扁的云团。

人话版:

虽然向量有几千维,但真正响亮的方向可能没那么多。

这个问题会影响相似度搜索、句向量质量、表示可分性,也会影响我们如何理解模型内部的“特征”。

参考入口: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 看成:

  1. 存储模式:上下文里的 key/value 像临时记忆。
  2. 检索模式:query 像检索线索。
  3. 竞争机制: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”转成一个优化目标,让模型提高好回答的相对概率,降低差回答的相对概率。

这里有两个数学关键词:

  1. 概率比:不是只看好答案概率高不高,而是看好答案相对差答案有没有更占优。
  2. KL 约束:模型不能为了讨好偏好数据,把原本语言能力彻底扭坏。

可以粗略理解成:

对齐 = 往人类偏好方向推
KL = 拴住模型,别让它跑太远

人话版:

让模型更像我们想要的样子,但还得保留它原来的基本功。

DPO 有意思的地方是,它把复杂的偏好学习变成了一个相对直接的分类式目标。

参考入口:Direct Preference Optimization

15. MoE Routing:每个 token 找专家,但专家不能被挤爆

MoE,Mixture of Experts,是把模型的一部分做成很多专家。每个 token 来了以后,路由器决定把它送给哪些专家处理。

这听起来像公司分工:

  1. 数学 token 找数学专家。
  2. 代码 token 找代码专家。
  3. 法律文本找另一些专家。

但真正难的是路由。

如果所有 token 都挤到一个专家那里,其他专家闲着,计算会失衡,训练也会出问题。所以 MoE 里常常要加入负载均衡损失、容量限制、top-k 选择等机制。

数学味在于:

  1. 稀疏选择:每个 token 只激活少数专家。
  2. 约束优化:性能、负载、通信成本要一起平衡。
  3. 概率路由:路由器输出的不是硬规则,而是一组分数。

人话版:

模型内部开了很多窗口,关键不是窗口多,而是怎么把人分流过去。

参考入口:A Survey on Mixture of Experts in Large Language Models

16. Quantization:为什么把数字压小,模型还能用

大模型参数通常是浮点数。部署时为了省显存、提速度,我们会把它们压成更低精度,比如 8-bit、4-bit。

这叫量化。

直觉上,数字变粗糙了,模型应该明显变差。但实际中,很多模型可以被量化到很低精度仍然可用。

这里的关键数学问题是:

  1. 误差怎么传播。
  2. 哪些层、哪些通道对误差更敏感。
  3. 是否存在少数异常值支配了量化难度。

SmoothQuant 这类方法的思路很典型:如果激活里有很大的异常值,会让量化很难;那就把一部分量化难度从激活转移到权重里,让整体更平滑。

人话版:

不是所有数字都同样重要。把大部分数字压粗一点没事,但少数特别刺眼的值要小心处理。

参考入口:SmoothQuant: Accurate and Efficient Post-Training Quantization for Large Language Models

这些话题该按什么顺序学

如果你刚理解完 SVD,我建议这样走:

  1. 先学 Anisotropy 和 Rank Collapse。
    它们直接延续“矩阵、方向、奇异值、有效维度”这条线。

  2. 再学 Task Arithmetic 和 Activation Steering。
    它们会让你看到:方向不仅能解释数据,还可能对应能力和行为。

  3. 然后学 Causal Tracing 和 Tuned Lens。
    这一步开始进入模型内部,不只是看结果,而是看中间发生了什么。

  4. 再学 Grokking、Double Descent、Loss Landscape、Hessian Spectrum。
    它们解释训练过程:模型为什么会这样学,为什么大模型训练不是旧直觉能完全解释的。

  5. 最后学 DPO、MoE、Quantization、µP。
    这些更接近真实大模型训练和部署,会把数学和工程绑在一起。

最重要的一条主线

这些话题看起来分散,其实有一条共同主线:

大模型里的能力,常常可以被理解成高维空间里的结构。

这个结构可能表现为:

  1. 权重空间里的方向。
  2. 激活空间里的方向。
  3. 表示矩阵里的主成分。
  4. loss 地形里的平坦区域。
  5. 上下文里对任务的隐变量推断。
  6. 概率分布之间的偏好调整。

所以,SVD 那篇的核心直觉仍然有效:

复杂系统里,真正重要的信息往往集中在少数有代表性的方向上。

只是到了大模型里,这个“方向”不一定只是一张图片里的主成分。它可能是一个任务、一个行为、一段知识路径、一种偏好,甚至是一种临时猜出来的任务模式。

需要保持的清醒

最后要补一句边界。

这些解释都很有启发,但不能把它们当成“已经完全解释了大模型”。

  1. 很多理论结果来自 toy model 或小规模实验,不能直接等同于前沿大模型。
  2. 可解释性方法常常能发现强线索,但不等于给出了完整机制。
  3. “方向”是很有用的语言,但不是所有能力都能被一个线性方向解释。
  4. 贝叶斯、梯度下降、能量模型、几何表示,可能是在不同层面描述同一个复杂系统。

更稳妥的态度是:

把它们当成透镜,不要当成终极答案。

透镜越多,你越能从不同角度看清大模型。

而下一篇最值得细讲的,就是这里的第 13 个:

为什么模型不改权重,也能在上下文里临时学会一个任务。