> 费曼说:"我无法理解那些我不能创造的东西。"今天我们要讲的故事,恰好相反——是关于为什么我们每天都在用的一个技巧能工作,而直到今天才有人真正证明了它。
---
## 引子:一个没人能回答的问题
每个训练过神经网络的人都用过 weight decay(权重衰减)。你在优化器里加一行 `weight_decay=0.01`,模型的泛化能力就神奇地提升了。去掉它,模型就开始过拟合。
但为什么?
三十年来,人们给了很多解释。"它让权重变小,模型更简单"、"它等价于 L2 正则化"、"它惩罚复杂函数"。这些说法都有道理,但都停留在直觉层面。一个根本的问题从未被严格回答:
**Weight decay 到底在正则化什么?它偏向的"简单"函数,和最优的"简单"之间,是什么关系?**
2026年5月,一篇来自 ETH Zürich 的独作论文给出了一个让人倒吸一口凉气的答案。
---
## 第一章:两座孤岛
这个故事涉及两个看似毫不相关的概念。
### 1.1 Kolmogorov 复杂度
想象你在玩一个游戏:用尽可能短的程序,让一台通用计算机输出一个特定的字符串。
比如,输出 "ABABABABABABABABABAB"(20个字符的重复模式)。最短的程序大概是 `print "AB" * 10`,大约十几个字符。但如果你要输出一个完全随机的字符串 "K7xP2mQ9vL3nR5wJ1",最短的程序大概就是 `print "K7xP2mQ9vL3nR5wJ1"` —— 程序本身就得包含这个字符串,所以长度和字符串一样。
**一个字符串的 Kolmogorov 复杂度 K(s),就是能输出它的最短程序的长度。** 这是对"信息含量"最纯粹的定义——一个字符串有多"可压缩"。
基于 Kolmogorov 复杂度,计算机科学之父 Ray Solomonoff 在 1964 年定义了 **通用先验**(Universal Prior):给每个可能的输出赋予概率 \($2^{-K(s)}$\)。Kolmogorov 复杂度越低的字符串(越"有规律"),概率越高;越随机的,概率越低。
这个先验有一个优美的性质:它在极限意义上 **优于一切可计算的预测器**。如果给一个理想化的无限算力贝叶斯智能体装备这个先验,它最终会在任何预测任务上击败所有对手。
只有一个问题:**Solomonoff 先验是不可计算的。** 计算 \($K(s)$\) 需要搜索所有可能的程序,而这等价于解决停机问题。所以七十多年来,Solomonoff 先验一直是一个"理论理想"——人们知道它是最优的,但没人能在实践中使用它。
### 1.2 Weight Decay
另一边,Weight Decay 是深度学习中一个朴素到近乎幼稚的技巧。
你在损失函数后面加一项:\($\text{Loss} + \frac{\lambda}{2} \|\theta\|_2^2$\),其中 \($\theta$\) 是网络所有权重。数学上,这等价于假设权重服从一个高斯先验分布 \($\pi(\theta) \propto e^{-\frac{\lambda}{2}\|\theta\|_2^2}$\) ——权重越小,先验概率越高。
训练完的网络会输出一些东西。如果我们问:在这个高斯先验下,网络输出某个特定字符串 \($s$\) 的边际概率 \($Q(s)$\) 是多少?——答案是所有能输出 \($s$\) 的网络的先验概率之和。
论文的核心发现是:
---
## 第二章:天堑变通途
### 2.1 主角定理
> **主定理(非形式化)**:在固定精度下,能让一个循环神经网络输出字符串 \(s\) 的最小非零参数个数 \($\mathcal{N}(s)$\),等于 \($s$\) 的 Kolmogorov 复杂度,只差一个对数因子:
>
> $$\mathcal{N}(s) \;\leq\; K(s) \;\leq\; \mathcal{N}(s)\log\mathcal{N}(s)$$
这意味着什么?意味着 **Weight decay 的隐含先验(在固定精度下)和 Solomonoff 的通用先验是等价的,只差一个对数因子。**
你每天随手写下的 `weight_decay=0.01`,竟然在近似实现理论上最优的归纳偏置!
### 2.2 为什么这个结果如此优雅?
证明只有两个方向,每个方向都短得令人惊讶。
**方向一(程序→网络):** 任何一个图灵机程序 \($p$\) 都可以被编码进一个固定精度神经网络的权重中,每比特程序对应一个网络参数。
具体做法:取一个通用的循环神经网络(比如 Transformer),用一些固定的网络参数实现图灵机模拟器。然后,把程序 \($p$\) 的每一比特作为一个额外的路由权重注入网络。总参数数 = 模拟器的固定参数 + |p| 个路由参数。
因此,最短程序有 \($|p| = K(s)$\) 比特,对应的网络最多需要 \($K(s)$\) 个非零参数。所以 \($\mathcal{N}(s) \leq K(s)$\)。
**方向二(网络→程序):** 任何一个固定精度的神经网络,都可以被一个短程序完整描述。
一个网络有 \($W$\) 个非零参数。每个参数可以用三个数字描述:它在哪一层、连接哪两个神经元、值是多少。由于网络是固定精度的,每个值只有有限种可能。\($W$\) 个参数最多涉及 \($2W$\) 个不同的神经元,所以每个地址需要 \($\log_2 W$\) 比特来指定。总描述长度:\($O(W \log W)$\) 比特。
再在前面拼上一个固定大小的"模拟器程序"(解析描述并执行网络),就得到了一个能输出同样字符串的程序,长度不超过 \($O(W \log W)$\)。因此 \($K(s) \leq O(\mathcal{N}(s) \log \mathcal{N}(s))$\)。
**就这么简单。两个方向拼在一起,形成了一个"三明治"。**
---
## 第三章:为什么对数因子是本质的?
初学者可能会想:"这个 \($\log \mathcal{N}$\) 因子是不是证明不够紧致导致的?能不能去掉?"
**答案是:不能。** 而且论文用一个漂亮的构造证明了这一点。
### 3.1 排列的例子
考虑一个排列 \(\pi\):把 \(N\) 个元素重新排列。一共有 \(N!\) 种可能的排列。
一个典型排列的 Kolmogorov 复杂度大约是 \($\log_2 N! \approx N \log_2 N$\) 比特——因为你需要指定 \($N$\) 个元素的新位置,每个位置需要 \($\log_2 N$\) 比特的地址信息。
现在,可以用一个只有 \($\Theta(N)$\) 个三元参数的网络输出这个排列矩阵:每个参数编码排列中的一个"1"的位置,而位置本身是隐含在网络拓扑中的——一个参数从源神经元 \($i$\) 连到目标神经元 \($j$\),\($i$\) 和 \($j$\) 的编号本身就携带了 \($\log_2 N$\) 比特的信息!
所以:\($\mathcal{N}(s_\pi) = \Theta(N)$\),而 \($K(s_\pi) = \Theta(N \log N)$\)。**对数因子不是缺陷,是特性。** 网络的拓扑结构(哪个参数连到哪个神经元)本身就是一个信息通道。
### 3.2 一个参数能承载多少信息?
一个固定精度的参数值只有 \($O(1)$\) 比特的信息。但一个参数的"地址"——它连接哪两个神经元——可以承载 \($\log_2 W$\) 比特的信息,因为有 \($W^2$\) 种可能的连接。
这就是为什么对数是本质的:**网络不仅有参数的值,还有参数的拓扑。而拓扑本身就是一个隐藏的信息载体。**
---
## 第四章:固定精度——不可忽视的前提
论文反复强调:**固定精度是这个结果成立的关键前提。**
为什么?
如果用无限精度的实数权重,神经网络是 **超图灵** 的——它可以计算图灵机算不了的东西。此时 \($K(s) = \infty$\)(因为网络能输出的某些字符串根本不是可计算的),但 \($\|\theta\|$\) 是有限的。等式不再成立。
即使用有理数权重,也不行。一个有理数 \($p/q$\) 虽然大小有限(\($|p/q| \leq B$\)),但分子和分母可以携带任意多比特的信息。Kolmogorov 复杂度和权重范数之间的关联再次断裂。
**只有在固定精度下——每个权重值只能从有限集合中选取——权重范数才真正等价于描述长度。**
好消息是:**这正是现代深度学习实际运行的精度。** fp16、bf16、int8、int4——你用的每一个模型,都已经在固定精度下运行。所以这个定理不是象牙塔里的假设,而是对实际训练过程的直接刻画。
---
## 第五章:这意味着什么?
### 5.1 Weight decay 是"打七折的 Solomonoff"
论文的推论:在固定精度 L2 weight decay 下,网络输出的边际概率 \($Q(s)$\) 满足:
$$
-\log Q(s) \approx K(s) \quad \text{(差一个对数因子)}
$$
而 Solomonoff 先验是 \($-\log M(s) = K(s) + O(1)$\)。
**Weight decay 给出的先验,和理论上最优的通用先验,在指数上只差一个对数因子。** 你不需要解停机问题,不需要搜索所有程序——你只需要跑 SGD with weight decay,就已经在逼近最优先验了。
### 5.2 为什么量化模型泛化更好?
论文给出了一个可验证的预测:**对于深度量化的网络(int4、int8),weight decay 的效果应该更强。**
因为在极低精度下,\($\|\theta\|_2^2$\) 几乎精确等于非零参数个数——每个非零参数的值只有少数几种可能,所以范数不再"稀释"描述长度的信号。量化 + weight decay,是最接近纯 Solomonoff 先验的设置。
### 5.3 "简单数据受益更多"
论文预测:**Kolmogorov 复杂度低的任务(算法推理、正则语言、结构化预测)比复杂任务(自然图像、自由文本)从 weight decay 中获得更大的收益。**
这也解释了为什么在小数据集上 weight decay 尤为重要——小数据的"有效信息"更少,更接近一个低 Kolmogorov 复杂度的函数,所以更容易被一个好的先验捕捉到。
---
## 第六章:费曼的读后感
如果费曼读到这篇论文,他大概会说:
"你看,这就是我喜欢的那种发现。它回答了一个所有人都认为他们知道答案、但其实没人真正理解的问题。它用两个方向的简单归约——程序编码进网络,网络编码进程序——搭起了一座桥。桥的两端,一端是你每天都在用的正则化技巧,另一端是理论计算机科学中最优美的概念。
更妙的是,它告诉你为什么桥是'摇晃'的(那个对数因子)——因为网络参数不仅有值,还有连接关系,而连接关系本身就在偷偷传递信息。你既不能说这个发现完全没有实用价值(毕竟它解释了 weight decay 为什么有效),也不能说它是纯粹的工程优化(毕竟它连接到了 Kolmogorov 复杂度和 Solomonoff 先验)。
这种跨越理论和实践边界的工作,太少见了。"
---
## 结语
三十年来,weight decay 一直是一个"好用但不知道为什么好用"的技巧。我们用它,是因为经验告诉我们它有效。
这篇论文第一次给出了一个严谨的答案:**weight decay 有效,是因为它在固定精度下近似实现了 Solomonoff 的通用先验——这个理论上最优的、但在经典意义上不可计算的归纳偏置。**
有时候,最深刻的真理就藏在最朴素的操作里。
---
*论文信息*
- **标题**: Neural Weight Norm = Kolmogorov Complexity
- **作者**: Tiberiu Musat (ETH Zürich)
- **arXiv ID**: [2605.10878](https://arxiv.org/abs/2605.10878)
- **发表日期**: 2026年5月11日
- **分类**: cs.LG, cs.IT
#Kolmogorov复杂度 #WeightDecay #Solomonoff先验 #深度学习理论 #费曼风格 #智柴外脑
登录后可参与表态
讨论回复
0 条回复还没有人回复,快来发表你的看法吧!
推荐
推荐
智谱 GLM-5 已上线
我正在智谱大模型开放平台 BigModel.cn 上打造 AI 应用,智谱新一代旗舰模型 GLM-5 已上线,在推理、代码、智能体综合能力达到开源模型 SOTA 水平。
领取 2000万 Tokens
通过邀请链接注册即可获得大礼包,期待和你一起在 BigModel 上畅享卓越模型能力