CONCEPTUS · 核心概念

六个概念,
一把够不着的绝对标尺

这一页从最短程序出发,一路走到 AI 的理论天花板:柯氏复杂度、不变性定理、不可计算性、Solomonoff 归纳、MDL、Chaitin 的 Ω。中间放一台「MDL 实验台」——拖动模型复杂度,亲眼看"总描述长度"画出 U 形,在过简与过繁之间找到理解的最优点。

CONCEPT 1 · 柯尔莫哥洛夫复杂度

K(x):一个对象固有的信息量

定义只有一句:K(x) = 能输出 x 然后停机的最短程序的长度(比特数)。它把"信息量"从香农的"信源平均"下沉到了"单个对象自身"。一个能被短程序生成的对象(π 的前一百万位、一张分形图)信息量小;一个只能被"照抄它自己"生成的对象(一串真正的随机噪声)信息量大——大到等于它自己的长度。

由此长出一条惊人的等式链:结构 = 可压缩性 = 低 K = 可被理解;反过来,随机 = 不可压缩 = 高 K = 无规律可言。"理解一个事物"在这里获得了精确含义——找到一个比它本身更短的描述。你之所以觉得自己"懂了"物理定律,正因为几个方程压缩了海量的观测。

CONCEPT 2 · 不变性定理

为什么用哪种语言都无所谓

一个直觉的反驳立刻会来:最短程序的长度,难道不取决于你用 Python 还是 C 还是图灵机?不变性定理回答了它,也正是这一天这个概念从"有趣的想法"升格为"严肃的数学"的时刻:换一种通用编程语言,K(x) 的变化至多是一个与 x 无关的常数(那个常数就是"用甲语言写一个乙语言解释器"的长度)。

所以当对象足够复杂时,K(x) 是一个近乎绝对的量——不依赖于任何具体机器的客观信息度量。这让"这个对象比那个对象更复杂"成为可以严肃谈论的、语言无关的事实。没有不变性定理,整座大厦就是主观的沙堡。

CONCEPT 3 · 不可计算性

最深的量,恰恰算不出来

算法信息论最著名、也最残酷的定理:K(x) 不可计算。不存在任何程序,能对任意输入 x 输出它的最短程序长度。直觉的证明来自"贝里悖论"的算法版——若能算出 K,就能写一个短程序去"找出第一个 K 值大于一百万比特的字符串",而这个短程序本身却生成了一个本应不可压缩的对象,矛盾。

这不是技术缺陷,而是与哥德尔不完备、图灵停机问题同源的根本极限。它的实践后果贯穿全站:真正的 K 永远够不着,一切应用(压缩、MDL、机器学习)都是对它的可计算逼近。你能压到多短,就摸到了它的一个上界;但你永远不知道还能不能更短。谦逊不是美德,是定理。

CONCEPT 4 · Solomonoff 归纳

给奥卡姆剃刀装上刀刃

如何从数据预测未来?Solomonoff 的答案是一台"理想的学习机":考虑所有能生成已见数据的程序,按各自长度赋予权重(越短权重越大,恰好是 2 的负程序长度次方),再让它们对下一步投票。这就是"通用先验"。它把两千年的哲学格言变成了定理——最简单的解释拥有最高的先验概率,因此在贝叶斯更新下最可能胜出

它是贝叶斯站那个"先验从哪来"悬案的终极答案:先验就该是通用先验。它也被证明是某种意义上最优的预测器——预测误差有严格上界。代价当然还是那一个:不可计算。它是一座灯塔,不是一台你能买到的机器——但所有实际的学习算法,都是在向它的方向跋涉。

LUDUS · 签名互动

MDL 实验台

一堆带噪声的数据点,背后是一条三次曲线的真相。你用多项式去拟合它。MDL 说:最好的模型不是拟合最准的,而是让「描述模型的比特 + 用模型编码数据残差的比特」之和最短的。拖动下面的旋钮,看这两项如何此消彼长——总长度会在真相的复杂度上触底。

MDL BENCH · 两段式编码:模型 + 残差

两种失败你都能亲手制造:次数太低 → 模型很短但残差巨大(欠拟合,没抓住规律);次数太高 → 残差趋零但模型本身臃肿(过拟合,把噪声也当成了规律去记忆)。总长度触底的那个次数,就是数据真正的复杂度——这就是奥卡姆剃刀的可计算版本,也是"泛化"的信息论定义。

CONCEPT 5 · 最小描述长度

MDL:把够不着的 K 换成够得着的压缩

既然真正的 K 不可计算,Rissanen 的 MDL 做了工程师式的妥协:用一个真实的、可计算的编码方案去逼近它。选模型的准则变成一句可操作的话——选那个让"编码模型的长度 + 在该模型下编码数据的长度"之和最小的模型(就是你刚在实验台上看到的 U 形谷底)。

这个两段式编码优雅地内建了防过拟合:复杂模型能把残差压得很短,但它自己要花很多比特去描述,账算下来不划算。MDL 把"正则化""模型选择""奥卡姆剃刀"统一成了同一件事——谁压得最短,谁就赢。它与贝叶斯模型选择在数学上深度等价(模型长度 ≈ 负对数先验,残差长度 ≈ 负对数似然),是"压缩即推断"最实用的落地。

CONCEPT 6 · Chaitin 的 Ω

一个知道、却永远算不出的数

蔡廷构造了停机概率 Ω:随机拼一个程序、它恰好会停机的概率。这个数定义得完美清晰,是一个确定的 0 到 1 之间的实数——却是最大限度随机、彻底不可计算的:它的二进制展开里没有任何规律,你无法算出它的任何一位(除有限的开头)。

Ω 是哥德尔不完备性的信息论化身,给出一个冷峻的结论:任何形式系统,只能证明有限多条"这串比特是随机的"——一旦对象的复杂度超过系统自身的复杂度,系统就再也无法证明它的随机性。数学里存在无穷多的真理,其"随机性"永远超出任何固定公理系统的证明能力。Ω 把"有些真相不可知"从哲学猜想变成了一个具体的、你可以给它命名却永远读不出的数。

Caveat · 一点保留 算法信息论的深刻常被过度浪漫化。务实的边界感:① 它的核心量不可计算,所有"应用"都是逼近,别把 MDL 的结论说成"K 证明了……";② 常数项在小对象上会淹没结论(不变性定理只在对象足够大时才干净);③ 它是关于存在什么最短描述的理论,不告诉你如何找到它——那是另一座大山(计算复杂度)。把它当照亮方向的灯塔,别当能直接调用的 API。