欢迎大家提Issue反馈问题或建议,建设推理王国!
Skip to content

第21章:学习作为逆推断——泛化是压缩的另一种说法

模型"学到了东西"的形式含义是:它找到了更短的描述。


第20章结尾留下了一个问题:启发函数能否自动从数据里发现?PAC 学习保证了学习的可能性,但没有说学习是什么——它只是描述了一个黑盒,告诉你黑盒的输出有什么性质。

这章要打开这个黑盒。

学习,在最抽象的意义上,是从一批观测——例子、数据、经验——中推断出一个可以泛化的规律。这个推断过程,如果要有形式的含义,就必须回答:推断出的规律,相比观测本身,多了什么?少了什么?它为什么能从见过的例子,说出没见过的例子的事情?

答案的关键词是压缩


21.0 压缩侦探游戏:从样本反推出规律

学习不是把数据背下来。背下来太容易,也太没用。真正的学习像侦探破案:桌上有一堆线索,你要找出一条比线索本身更短的解释。

游戏开始时,自然给你一串样本:

S={(x1,y1),(x2,y2),,(xn,yn)}

你可以提交一个假设 h。这个假设必须做两件事:第一,它要解释已经看到的数据;第二,它本身不能太长。因为最愚蠢的“规律”永远存在:把所有样本逐条背下来。这样的规律训练误差为零,但没有任何泛化能力。

压缩侦探的评分规则是:

L(h)+L(Sh)

前一项是描述假设本身要多少比特,后一项是在假设给定后还需要多少比特描述数据。最好的假设,不是最复杂的,也不是最贴合训练集的,而是让总描述长度最短的那个。

这个游戏的形式化骨架

  • 状态空间:样本集 S、假设类 H、编码方案 L
  • 合法动作:选择一个假设 hH,并用它压缩数据。
  • 转移规则:从观测样本反推候选规律,比较 L(h)+L(Sh)
  • 胜利条件:找到能压缩训练数据、并对未见样本保持低误差的假设。
  • 失败模式:死记硬背样本;或选择过强归纳偏置,把世界压缩成错误形状。

这个游戏把泛化的秘密说得很直白:能泛化,是因为你发现了可压缩结构。如果数据完全随机,就没有短规律可找;如果你找到了一条短规律解释大量样本,那么它很可能抓住了某种真实结构。

但这里也有危险。压缩需要编码方案,编码方案就是归纳偏置。你以为自己在“从数据中学习”,其实你一直带着一把剃刀进场:什么算简单,什么算复杂,早就由你的表示系统决定了。

压缩侦探游戏的冷酷之处在于:没有偏置,就没有学习。完全中立的学习者只能背诵样本;想泛化,就必须偏爱某些规律。机器学习课喜欢把这叫“模型选择”。说得太轻了。这其实是在选择你愿意相信世界长什么样。

21.1 学习的逆问题结构

形式逻辑里,推断的方向是从公理到定理:给定前提,推出结论。这是正向推断

学习的方向正好相反:给定一批定理(观测到的事实),反推最可能的公理集合(规律)。这是逆推断——从结果往回推原因。

这个逆向结构有一个根本性的困难:它是欠定的(underdetermined)。一批有限的观测,通常与无数个不同的规律兼容。你看到太阳每天升起,这与"太阳每天升起"这条规律兼容,也与"太阳每天升起,除了2035年3月17日"兼容,还与无数个其他规律兼容。

这个困难没有纯粹逻辑的解决方案。你无法从观测中演绎出唯一正确的规律。你需要某种归纳偏置(inductive bias)——一种对规律的先验偏好,在所有兼容观测的规律中,偏向某一类。

归纳偏置是什么,决定了学习是什么。

21.1.5 欠定性的具体面孔

用同一个数据集,三个不同的学习者会给出三个不同的规律。这不是比喻,拿笔算一下就清楚。

数据(x,y)={(0,0),(1,1),(2,4),(3,9)},四个点。

学习者A(线性回归):假设空间是所有一次函数 y=ax+b。看到这四个点,它找到的最优解是 y=3x0.5(最小二乘)。这个函数在训练点上不完全精确——(2,4)上预测值是5.5,误差1.5——但它"相信"规律是线性的。

学习者B(二次回归):假设空间是所有二次函数 y=ax2+bx+c。看到这四个点,它找到的精确解是 y=x2——完美拟合所有训练点。它"相信"规律是二次的。

学习者C(10次多项式):假设空间是所有不超过10次的多项式 y=i=010aixi。通过这四个点的10次多项式有无数个——欠定性的面孔。未约束的话,学到的规律可能是一个极度振荡的曲线,在训练点之间疯狂抖动。

谁是对的?如果真实规律确实是 y=x2,学习者B最优。如果真实规律是 y=3x(加上噪声),学习者A更好。学习者C几乎肯定是错的——它过于灵活,会把噪声当成规律。

关键点:四个人不可能通过"看更多数据"来决定谁是对的。给定任意有限个点,总存在10次多项式完美拟合它们。你可以在训练数据上表现完美,同时在测试数据上表现极差。数据本身不会告诉你——选择一次、二次还是十次多项式——是你的选择,不是数据的选择。

这就是归纳偏置的本质:它不是从数据中学到的,它是你在看数据之前就已经带进场的东西。像一副眼镜,你看数据之前就戴上了。不同的眼镜,看到不同的规律。

很多人听到"欠定性"的时候会在心里点头,然后继续用默认的超参数训练模型。欠定性不是一个需要"了解"的理论事实,而是一个在每次训练中都在发生的操作性问题。你选了模型架构的那一刻,欠定性已经被部分解决了——但你不一定知道你到底选了什么样的偏置,也不一定知道它对当前数据是否合适。知道有偏置但不清楚自己选了哪种偏置,比不知道有偏置更危险——因为你以为自己控制了局面,其实没有。

归纳偏置不是技术选项,是形而上学承诺。你选了线性模型,你就在承认"规律是线性的";你选了深度网络,你就在承认某种关于特征层级的结构假设。大多数机器学习课把这件事叫做"调超参数",把形而上学承诺藏进了工程操作里。这是在逃避一个真实的问题,不是在解决它。


21.2 奥卡姆剃刀的形式化

最古老、最直觉的归纳偏置,是奥卡姆剃刀:更简单的解释优先

但"简单"是什么意思?

Kolmogorov 复杂度给出了一个回答。

定义(Kolmogorov 复杂度):字符串 x 的 Kolmogorov 复杂度 K(x) 是能生成 x 的最短程序的长度(以某个固定通用图灵机为参考)。

K(x) 衡量的是 x内在复杂度——不是 x 有多长,而是 x 有多难描述。一个全是零的字符串"000...0"(一百万个零)的 K 值很小——有一个很短的程序可以生成它("输出一百万个零")。一个随机字符串的 K 值大约等于它的长度——没有比"把字符串本身列出来"更短的描述。

Kolmogorov 复杂度:用"压缩程序的长度"衡量复杂度(前人工作:Kolmogorov, 1965)

Kolmogorov 复杂度 K(x) 是对"这个对象有多复杂"的数学化定义——复杂度等于描述它所需的最短程序的长度。

直觉例子:

  • "前一百万个自然数" -> 一段很短的程序就够了(for i in range(1000000): print(i)),K 很小
  • 随机生成的一百万位数字 -> 没有比"把数字本身列出来"更短的描述,K 字符串长度

重要的不可计算性K(x) 是不可计算的——不存在算法能对任意 x 计算出 K(x) 的精确值(这是停机问题的推论)。你只能计算它的上界(找到一个能生成 x 的程序,其长度就是上界)。

为什么仍然有用? 即使不可计算,Kolmogorov 复杂度提供了一个理论标准——衡量"简单性"的绝对基准。实践中用 MDL 近似(用实际的压缩算法代替最短程序)。

在这个语言里,"简单"就是"Kolmogorov 复杂度小","更简单的解释优先"就是"选择 K 值更小的规律"。

21.2.5 实操:用手算 Kolmogorov 复杂度的上界

K(x) 不可精确计算,但可以算上界——找到一个能生成 x 的程序,其长度就是上界。

例子1x= "01010101"(01重复4次,共8个字符)。

  • 程序:for i in range(4): print("01")
  • 程序长度(用某种合理编码):约20-30字符(Python语法开销 + 循环体)
  • K(x) 约30

例子2x= "01010101"重复1000次(2000字符)。

  • 程序:for i in range(1000): print("01")
  • 程序长度:约35字符(只改了循环次数)
  • K(x) 约35

注意:数据从8字符增长到2000字符,程序只从约30增长到约35。这就是压缩的力量——规律越长,压缩的好处越大。

例子3x= 圆周率 π 的前1000位。

  • 程序:mp.pi.n(digits=1000)(依赖 math 库)
  • 程序长度:约40字符
  • K(x) 约40(但这里依赖了 math 库,库本身需要被计算在内。不过我们可以接受——K 的定义相对于固定通用图灵机,math 库可以作为图灵机的一部分)

例子4x= 一个真正的随机字符串(1000位)。

  • 程序:只能 print("随机字符串的1000位原样")
  • 程序长度 ≈ 1000 + 一点开销
  • K(x) 字符串长度本身

这四个例子揭示了一个关键直觉:K(x) 衡量的是 x 可以被压缩的程度。高度规律的字符串有简洁描述,接近 K(x)|x|;完全随机的字符串无法压缩,K(x)|x|

但这里有一个微妙的点:K(x) 的具体值依赖于参考图灵机的选择。不同图灵机可能给同一个 x 不同的 K 值,差一个常数(模拟另一台图灵机的程序长度)。这就是为什么 K(x)渐近意义下的复杂度度量,不是绝对精确的量。但差一个常数在大多数理论讨论中足够了——我们关心的是数量级,不是精确值。

算 Kolmogorov 复杂度上界这件事本身就是一堂速成课:你发现规律 -> 你用最短的程序描述规律 -> 程序的长度就是你对这个字符串"有多复杂"的最大声明。但你也可能看漏了规律——你找到的程序只是上界。K(x) 的真正值,是你和所有可能程序中最短的那个之间的距禈——而你不能确定你找到了最短的那个。

这就是最小描述长度(Minimum Description Length,MDL)原理的核心:

最优假设=argminh[L(h)+L(数据h)]

L(h) 是描述假设 h 本身所需的比特数,L(数据h) 是在假设 h 下描述数据所需的额外比特数。最优假设是让"假设 + 数据在假设下的编码"总长度最短的那个。

MDL 原理和贝叶斯推断是同一件事的两种语言。若假设 h 的先验概率 P(h)2L(h)(即较短的假设有更高先验,Shannon 编码的标准形式),则最大后验估计(MAP)恰好等价于 MDL:

argmaxhP(h数据)=argmaxh[P(数据h)P(h)]=argminh[L(数据h)+L(h)]

奥卡姆剃刀,在贝叶斯语言里是先验对简单性的偏好;在 MDL 语言里是最短描述长度的选择。两者是等价的数学结构,穿着不同的衣服。


21.3 泛化就是压缩

MDL 原理揭示了一个深刻的等价:泛化能力等价于压缩能力

为什么?

一个假设 h 能泛化,意味着它捕捉到了数据里的规律,而不是记住了噪声。规律是可以被简洁描述的结构,噪声是不能被压缩的随机成分。如果 h 能用少于数据本身长度的描述来"解释"数据,说明 h 真正压缩了数据——发现了数据中可以被简洁捕捉的部分。

反过来,一个完全记忆训练数据的模型,没有压缩——它只是把数据原封不动地存了下来。这样的模型在训练数据上表现完美,但对新数据没有预测能力,因为它没有发现任何规律,只是储存了例子。

这正是第5章(上卷)"过拟合"的形式化:过拟合是没有压缩的记忆,泛化是有效的压缩

用 Kolmogorov 复杂度的语言,泛化的量可以被度量:假设把训练数据从 n 比特压缩到了 k 比特(k<n),那么压缩率 n/k 在某种意义上衡量了假设的"泛化潜力"——发现了多少可以泛化的规律,而不是记住了多少特例。

21.3.5 双重下降:当"更多参数=更好泛化"动摇了经典理论

经典学习理论(包括 PAC 和 VC 维)预测了一条 U 型曲线:模型太简单 -> 欠拟合;模型恰好 -> 泛化良好;模型太复杂 -> 过拟合。但在2018年以后,研究者在大规模深度学习中观察到了一个违背直觉的现象:双重下降(Double Descent)

在参数数量超过训练数据量之后——即进入"过参数化"区域——测试误差不是继续上升,而是再次下降。模型大到可以完全记忆训练数据之后,反而开始泛化得更好。

这意味着什么?VC 维和 PAC 在最坏情况下的保证仍然正确——它们没有"错"。但它们描述的是所有可能的数据分布中最坏的那个。实际的深度学习,在自然数据上,似乎存在某种隐式的简单性偏好——即使模型有足够的自由度去记忆每个训练样本,优化算法(SGD)和架构选择(卷积、注意力、层归一化)的交互,仍然会偏向更简单的解。

过度训练(overtraining)的视角:2023年之后,实践社区逐渐接受了另一个违反经典直觉的事实:给定固定参数量的模型,倾注百倍甚至千倍的数据量——所谓"过度训练"——通常能持续提升泛化性能,远超经典理论的预测。模型在数据量达到参数量的数百倍时,仍然在学到可泛化的规律。

这两个现象——双重下降和过度训练——共同指向一个方向:深度学习的泛化机制,不能用纯统计学习理论完全解释。MDL的视角(泛化=压缩)提供了一个更灵活的语言:关键不是参数数量,而是模型内部实际使用的"有效描述长度"。一个千亿参数模型,如果其有效自由度被SGD隐式压缩到了百万量级,那么它在MDL框架里就是"简单"的——尽管参数数量很大。

这个视角还在发展之中,没有定论。但它说明了一个重要的事实:理论工具需要随着实践的发展而重新审视。PAC 和 VC 维不会"过时"——它们在最坏情况下提供了精确的保证。但自然数据的分布不是最坏的,所以实际行为可以远好于最坏界。分清"理论在什么假设下成立"和"实践在什么条件下突破这些假设",是理解泛化的关键。

双重下降对经典理论打了一记耳光,但经典理论没有死。经典理论说的是"存在某个可怕的数据分布,使你的模型翻船";双重下降说的是"幸好,自然数据不是那个分布"。这两句话同时为真,互不矛盾。一个好的理论家,不是只用理论解释一切的人,而是知道理论在什么地方开始不够用、并开始找新理论的人。

这个问题在理论界一度是个谜:深度神经网络的参数数量往往超过训练数据量,按照传统学习理论,这样的模型应该严重过拟合。但实践中它们往往泛化良好。MDL 的视角给出了一个方向:衡量泛化能力的不是参数数量,而是模型实际使用的"有效描述长度"——一个有一百亿参数但参数之间高度结构化的模型,其有效描述长度可能远小于参数数量。压缩才是关键,不是规模。但是随着深度学习学术社区的发现,但值得一提的是,前面的描述更多的是经典深度表示学习的方法,在大语言模型以及现代神经网络的训练中不一定是Gold标准。在2023年以后,我们的深度学习的数据与参数配比更多的是强调过度训练,也就是说,参数量一定的情况下,我们会倾注于百倍甚至千倍的数据量来训练相同规模的神经网络。最新研究发现,过度训练是深度学习以及大语言模型有效泛化的有效形式。


21.4 归纳偏置的选择

MDL 和 Kolmogorov 复杂度给出了一个优雅的框架,但有一个实际问题:Kolmogorov 复杂度是不可计算的

所以奥卡姆剃刀,在最严格的形式下,本身是不可判定的。你无法写一个算法,对任意两个假设,总是在有限时间内找出哪个更简单。"简单"这个词背后,藏着一个停机问题。这不妨碍你用 MDL 的近似——但你得知道你用的是近似,不是真正的剃刀。

给定一个字符串 x,计算 K(x) 需要找到最短的能生成 x 的程序——这等价于解决停机问题,第19章已经证明这是不可判定的。你无法写一个算法,对任意输入在有限时间内计算出它的 Kolmogorov 复杂度。

这意味着 MDL 在最纯粹的形式下,本身就是不可计算的。实践中的 MDL 是它的近似版本:用某个固定的编码方案替代通用图灵机,用可计算的描述长度替代不可计算的 Kolmogorov 复杂度。

不同的近似方案,对应不同的归纳偏置:

  • 决策树学习:假设空间是决策树,描述长度是树的深度或节点数。偏向小树,即简单的决策规则。
  • 线性模型:假设空间是线性函数,描述长度是系数的范数。L1正则化偏向稀疏系数(大多数系数为零),L2正则化偏向小系数。
  • 神经网络:假设空间是特定架构的网络,"描述长度"由参数值和网络结构共同决定。这个描述长度很难精确定义,理论和实践之间有巨大的空白。

每一种学习算法,都在隐含地选择一种归纳偏置,一种对"什么是简单"的理解。这个选择,在绝大多数机器学习课程里,以"超参数调节"的名义被处理——但它实际上是关于"什么样的规律是优先的"的形而上学承诺。

21.4.5 Rademacher 复杂度:另一个量尺

VC 维是一个组合量,对于许多现代的假设空间(如深度神经网络),精确计算 VC 维非常困难。Rademacher 复杂度提供了一个不同的视角——它直接衡量一个假设类在随机噪声上的拟合能力。

考虑一个样本集 S={z1,,zm},给每个样本随机分配 Rademacher 变量 σi{1,+1}(以等概率独立选取)。一个假设类 H 的经验 Rademacher 复杂度是:

R^S(H)=Eσ[suphH1mi=1mσih(zi)]

直觉:如果 H 能够很好地拟合纯随机噪声(σi 是随机的 ±1),那么 H 很复杂。因为拟合噪声不需要"学到规律",只需要足够的自由度。Rademacher 复杂度越高,H 越容易过拟合。

与 VC 维的关系:VC 维给出最坏情况下的界,Rademacher 复杂度给出数据依赖的界——它在给定的具体样本集 S 上度量复杂度。这使它在某些情况下比 VC 维更紧致(给出的界更接近实际性能)。

把 VC 维和 Rademacher 复杂度并排看:VC 维问你"你能打散多少点"(纯组合),Rademacher 复杂度问你"在这个具体数据集上,你能多好地拟合随机噪声"(数据依赖)。两者从不同角度量化同一件事:假设空间装下随机模式的能力。能力越强,需要的样本越多;样本不够时,模型可能学到噪声,而非信号。


21.5 逆推断的两个困难

学习作为逆推断,面临两个根本困难,都无法被数据本身解决。

第一个困难:欠定性。如上所述,有限数据与无限多个假设兼容,必须有归纳偏置才能从中选择。归纳偏置是输入的,不是从数据里推断出来的。学习问题的解,依赖于假设空间的选择——而假设空间的选择,不在学习算法的管辖范围之内。

第二个困难:分布偏移。PAC 学习假设训练数据和测试数据来自同一分布 D。但在实际应用里,这个假设经常被违反——训练时的数据分布和部署时的数据分布可能不同。当分布偏移发生,任何基于训练数据的泛化保证都可能失效。

这两个困难,是学习理论的根本限制,不是算法的缺陷。它们说明:任何学习系统,都在某些假设下工作,假设之外,保证消失

这个结构,和第14章的形式系统高度相似:形式系统在公理之内是可靠的,公理之外没有保证;学习系统在假设之内是可靠的,假设之外没有保证。两者的可靠性,都依赖于一个不可从内部验证的外部承诺。

21.5.5 为什么这个困难不可被数据解决

用一个极端的例子把这个问题钉死。

假设你有一个学习器,任务是预测序列的下一个元素。训练数据是:

2,4,6,8,10,12,

三个学习者分别学到了不同的规律:

  • 学习者A:输出 2n(偶数序列)
  • 学习者B:输出 n2n+2(这个式子在前几项也给 2, 4, 6, 8...不,121+2=2222+2=4323+2=8...等等不对,323+2=8,但是序列第3项是6。所以这个不对)

让我重写——正确的例子更重要:

序列:0,1,2,3,4,5,

  • 学习者Af(n)=n(自然数)
  • 学习者B:$f(n) = $ “第n个非负整数”(和A一样)
  • 学习者Cf(n)=nn1000,随后 f(n)=n+1000

对前5个元素(0,1,2,3,4),三个学习者完全一致。你不能从数据上区分它们。但第1001个元素的预测:A和B预测1000,C预测2000。

这个例子揭露了什么? 有限数据永远无法唯一确定规律——欠定性不是”暂时数据不够”,而是”足够强的欠定性即使在极限数据下也不消失”。唯一的出路是引入归纳偏置——断言C”更复杂”因而不如A好。但这个断言本身不是从数据来的,是你带进去的。

而且注意:如果真实规律确实是C(比如在第1000个元素之后突然跳变),那么你的归纳偏置——偏好A——会使你系统性地犯错。归纳偏置不是免费午餐:它在某些世界上帮你,在另一些世界上害你。而你无法从训练数据上判断你活在哪个世界里。

回到压缩侦探游戏,侦探从来不是赤手空拳进入现场的。他带着某种编码方案,带着”什么叫短描述”的预设。于是同一批线索,在不同侦探眼里会导向不同的规律:线性模型看见直线,决策树看见分叉,神经网络看见层级表示。所谓学习,不是数据自己开口说话,而是数据在某套压缩语言里被迫回答。

这句话很不舒服,但必须保留:学习系统的失败,往往不是因为它没有找到规律,而是因为它带着错误的游戏规则找到了一个过于漂亮的规律。


21.6 学习与推断的统一图景

把这一章的内容放在下卷的框架里看。

第14章建立了推断的句法机器。第15章发现这台机器有内在的限制——某些真命题无法从内部证明。第16章修改了一条结构规则,得到一种新的推断。第17章把真值扩张到 [0,1],得到概率推断。第18章引入干预算子,得到因果推断。第19章发现这些推断的计算代价有根本的下界。第20章在代价约束下,精确地定义了"足够好"。

第21章做的事情是:把"学习"嵌入这个框架。学习是逆推断——从观测出发,反推规律。MDL 原理给出了逆推断的基本原则:最短的解释。PAC 框架给出了逆推断的质量保证:以高概率近似正确。

但这个统一图景还差最后一块:当推断系统足够大、足够复杂,它的"推断"开始包含关于自身的命题——关于自身能学什么、不能学什么、自身的归纳偏置是什么。这时,第15章的哥德尔结构重新出现:一个足够强的推断系统,无法完全推断自身

21.6.5 平行结构:学习的不完备性

把Ch14-15的逻辑不完备性和Ch20-21的学习不完备性并排看。这两套论证共享一个深层结构:

形式系统(Ch14-15)学习系统(Ch20-21)
起点公理 + 推断规则训练数据 + 归纳偏置
内部可做生成所有定理(句法)搜索假设空间(学习)
外部必需语义赋值(模型论)泛化保证(PAC/MDL)
不可内化系统一致性证明归纳偏置的正当性
边界表现存在真但不可证的命题存在可学习但需要外部偏置的概念

这不是"有点像"。这是同一个数学结构在两个领域的实例化。在两种情况下:

  1. 系统内部的合法操作(证明/学习)可以无限进行
  2. 但系统无法从内部验证这些操作的正确性条件(一致性/泛化)
  3. 正确性条件需要外部视角——形式系统需要模型,学习系统需要分布假设

最深的那个问题:如果把归纳偏置本身也变成学习对象——元学习——能不能突破这个限制?

元学习的确在任务分布上学到了一种偏置,让新任务的适应更快。但元学习本身也有归纳偏置:它在"什么样的偏置在任务分布上表现好"这件事上,带着对任务分布的假设(如"任务之间有共享结构")。如果把元学习再变成学习对象(元元学习),这个链条没有终点——每一层都需要该层的归纳偏置,而该层的归纳偏置必须从外部输入。

这和哥德尔的结构完全平行:把G加入公理->新系统有自己的G->永远跑不赢。把归纳偏置变成学习对象->元学习有自己的元偏置->永远自举不起来。

这是第22章的入口。八条边界的统一点,在第25章。


悬而未决

Kolmogorov 复杂度不可计算,那 MDL 有意义吗? Kolmogorov 复杂度的不可计算性意味着它是一个理想,不是一个算法。但数学里充满了这样的理想:最优决策、完美信息、无穷精度。理想不需要可计算,它需要的是作为标杆——告诉我们实际算法离最优有多远。MDL 的可计算近似,是对这个理想的有限逼近,理想本身的存在,使"逼近"这个词有意义。

泛化真的等价于压缩吗? MDL 框架暗示:一个不能压缩训练数据的模型不会泛化,能压缩的模型会泛化。但这个等价在深度学习的实践里并不总是成立——有些大规模模型在"记忆"数据的同时也能泛化良好。这个张力指向一个未解的理论问题:深度学习的泛化机制,究竟是什么?

归纳偏置能被学习吗? 如果学习是逆推断,那么"什么样的假设空间是好的"这件事,能不能也被学习?元学习(meta-learning)尝试在任务分布上学习一个好的归纳偏置,让模型在新任务上更快适应。但元学习本身也有归纳偏置——这是一个无穷退回,还是在某个层次上可以停止?


思考题

★ 热身

以下两个字符串,哪个的 Kolmogorov 复杂度更低?只需给出直觉判断和一句话理由,不需要计算具体数值。

  1. 0101010101010101010101010101010101010101(40个字符,01交替)
  2. 1101001000011010110101010001010001000010(40个随机字符)

再想一个问题:一个"完全随机"的字符串,它的 Kolmogorov 复杂度大约是多少?和字符串本身的长度相比如何?


★★ 推导

  1. 压缩与泛化:一个模型在训练集上零误差,但测试集误差很大(过拟合);另一个在训练集上误差5%,测试集也是5%(良好泛化)。用 MDL 的语言描述差异:哪个压缩了数据?哪个在记忆数据?"过拟合模型的描述长度"和"泛化模型的描述长度"各自包含什么?

  2. 归纳偏置的显化:线性回归、决策树、神经网络(带L2正则化)三种学习算法,分别隐含了什么归纳偏置?用"什么样的规律被优先选择"来描述。每种偏置在什么类型的数据上会系统性地失败?


★★★ 挑战

Kolmogorov 复杂度不可计算(因为它等价于停机问题)。这意味着:没有算法能对任意两个假设,在有限时间内判断哪个更简单。

但 MDL 在实践中被使用,用的是可计算的近似版本。试着列出至少两种可计算的"描述长度"近似方案,并分析:每种近似相当于隐含了什么样的归纳偏置?不同的近似方案,什么时候会给出不同的"最优假设"?

这个问题的目的是:把"超参数选择"翻译成"归纳偏置选择",再翻译成"对什么叫简单的隐含承诺"——三层翻译做完,说说你对机器学习"客观性"的看法有没有变化。