复杂:简单形式与丰富功能

看起来复杂的东西,是不是其实挺简单的?特别是在让模型举一反三(泛化)的时候。

许多人认为简单性是普遍智能的关键。简单的模型往往能够“泛化”,即在更大的样本上识别数据的原因或生成器,具有更高的样本效率。简单性和泛化能力之间的相关性不仅限于计算机科学,还涉及到物理学甚至生物学的问题。

然而,简单性是形式的属性,而泛化是功能的属性。
在交互环境中,这两者之间的任何相关性都取决于解释上下文Context)。

简单来说,很多人觉得“简单”才是智能的核心。比如简单的模型更容易“泛化”——就是学会一个规律后,能把它套用到更多新情况上,学起来也更省事儿。这种“简单才好用”的现象不光出现在电脑程序里,连物理、生物领域都有类似情况。

但要注意:“简单”说的是外表的样子,而“泛化”说的是实际用起来的效果。
这两者到底有没有关系,还得看具体怎么用(上下文Context)。

理论上,简单性和泛化之间可能没有相关性,但在实践中,确实存在相关性。
之前的理论研究显示:

  • 泛化是函数所暗示的“弱”约束的结果,而不是形式的结果。
  • 实验表明,选择弱约束而不是简单形式可以提高110-500%的泛化率。

泛化能力强不是因为模型形式上简单,而是因为它遵守了一些“宽松的规则”。选择这些宽松规则(而不是挑简单外表形式)能让泛化能力提升110%-500%。

更有意思的是,所有规则都能用同样简单的形式写出来:所有约束都可以采取同样简单的形式,无论其强度如何。

然而:

  • 如果形式在空间上扩展,那么函数就使用有限的一组形式来表示。
  • 如果函数使用有限的一组形式来表示,那么我们可以通过使弱约束采取简单形式来强制简单性和泛化之间的相关性。

如果我们把规则形式搞得很长很复杂,那实际有用的规则其实只占一小部分。这时候如果故意让“宽松规则”用简单形式写,就能强行让“简单”和“泛化”产生关联。

如果函数是由一个目标导向的过程决定的,该过程倾向于多功能性(例如自然选择),那么效率要求弱约束采取简单形式。像生物进化这种有目标的过程,为了高效也会自然让宽松规则变简单。这时复杂性就对泛化没有因果影响。

所以关键结论是:复杂程度本身不影响泛化能力,只是因为它总和其他因素混在一起,才让人误以为有关系。

总之:复杂性并不是泛化能力的决定因素,而是简单性在特定条件下可能有助于泛化。