漫谈归纳与泛化
“人只不过是一根苇草,是自然界最脆弱的东西;但他是一根能思想的苇草……我们全部的尊严就在于思想。”深以为然,人类因思想而伟大。在人类所有的思想力中,我认为,最重要也是最了不起的是归纳(induction)力。所谓归纳力就是一种从特殊中看到普遍的能力。毫无疑问,这首先是一项极为重要的生存技能,即使在茹毛饮血的早期人类时代,要想在危机四伏的自然界中保全自己,归纳力都是很强大的武器。甚至,我想说的是,在构建起整个人类文明的为数不多的几个重要根基里,必有一个是归纳力。大自然这个魔术师向来酷爱在他的造物面前表演各式魔术,所有造物中只有人类一次次凭借自己的思考力(特别是归纳力)“挑战”造物主的智慧。从这层意义上讲,人类对世界的认知史就是一部尝试归纳这个世界的活动史。
人类热衷于归纳。但这里有个问题,我们所处的这个世界可被归纳吗?换个说法,这个世界有规律可归纳吗?这个问题显得太无聊。我们都相信这个世界存在规律性,几千年人类文明的观察让我们不断增强这个信念。所以,我姑且断言这个世界有规律可循。但仍然有问题,即使这个世界有规律,我们是否就有能力去洞察规律呢?换言之,我们的归纳力可靠吗?这个问题就不太好办了。从人类认知史来看,我们一直在归纳,基本上一直在犯错,如果依照贝叶斯学派(参看这篇博客)观点,人类的归纳力早已负分出局!
坦白来说,虽然我崇尚人类思想,但其归纳力在更伟大的宇宙面前实在过于渺小。衡量归纳力,我们一定绕不开泛化(generalization)力这个概念。所谓泛化力是指从特殊性证据中归纳出的普遍知识其普遍化程度。简而言之,我们从一堆观察数据中归纳出的知识是否真的是真知灼见呢,我们应该在实践中检验它。特殊性证据是人类看得见摸得着、真实可感的,人类通过意识活动从特殊性中归纳出普遍性,普遍性存在于人类意识中,而这个普遍性是否可靠,我们需要考察它的泛化力,泛化的过程就是把这个普遍性重新运用于特殊性的过程。举一个学习方面的例子,假如有孩子要学认小猫,学习过程无外乎如下。家长或老师先找许多小猫的具体照片(特殊性)让孩子观察,孩子观察之后在头脑中形成大概印象(普遍性),比如小猫是四条腿,体型不大,长得毛绒绒的,嘴巴两边有胡子等等,最后要怎么检验学习成果(泛化力)呢?很简单,让孩子试着认一些新的照片(特殊性),新照片中可能有些是小猫,有些则不是,如果孩子把其中的小猫都认出来了,而且没有多认,我们就相信他学得不错。借助这个例子,我们发现归纳是从特殊到普遍的过程,泛化是从普遍到特殊的过程,泛化力是衡量归纳好坏的唯一标准。
看了刚才的例子,你是否想到为什么归纳那么难了呢?试想,如果在初始学习阶段,我们给孩子看的都是白猫,检验学习成果的时候出现了黑猫,孩子能认出它来吗?又或者学习任务是分辨公猫和雌猫呢?那么细微的区别以孩子的观察和归纳力等捕捉到吗?类比到人类身上,我们所掌握的特殊性证据是否足够充分以至于我们能准确归纳呢?我们自身的归纳力是否足够强大到确保我们能胜任当前任务呢?大自然不会把散落在时空的各个角落中的特殊性证据全部展现在我们面前,这世界必有我们未见的东西。我们的智慧也许也没有进化到可以反观产生出这个智慧的广阔宇宙舞台,正所谓不识庐山真面目,只缘身在此山中,我们无法跳出宇宙,又怎能完全认识宇宙呢?突然,我有一阵后怕。宇宙是什么?很早我就被告知宇宙就是一切时间与空间的总和。定义看上去完美无缺,实际上虚无缥缈。一般来说,我们定义一切概念,都清楚这个概念的边界是什么,清楚什么东西不属于这个概念。比如我们知道光明,是因为知道黑暗;知道正义,是因为知道邪恶。万物有阴阳。独独宇宙这个概念,我们理解得稀里糊涂。我们根本没见过、也想不出宇宙的边界乃至宇宙的外面是什么,虽然我们硬着头皮定义了宇宙。
归纳很难,但还是要归纳。人类一旦归纳出些什么知识,都要做实验测试它的泛化力,简单说就是它在新的情况下适用性如何。有的时候,对于同样的特殊性证据,我们会归纳出不同的知识(在数学上可以是模型),但事情的真相只有一个,如果它们不是在本质上等价,那么最多只有一个是正确的。假使它们在一些新的特殊性情况下都适用良好,我们可就犯难了,选谁呢?通常而言,我们会选择更简洁的那个。简洁而有效,是我们的最爱。这种做法实在没有什么理论依据,也许纯粹是一种审美偏好。丰富多彩的世界由某些最简洁的规律统治,听上去就很美好,符合伟大造物主的高明形象。不过说回来,直觉上,它似乎也存在合理性。简洁的模型相比复杂的模型有一个好处,就是不容易过拟合(overfitting)。关于这点,Von Neumann说过一句经典的话 ”With four parameters I can fit an elephant, and with five I can make him wiggle his trunk.“在他看来,复杂的模型(需要很多参数)能够描述世界这件事一点都不令人奇怪,给他四个参数,他可以设计曲线拟合出一头大象的形象,要是给他五个参数,他甚至能让大象动起来。回到归纳与泛化的语境,过于复杂的系统也许可以在特殊性证据上表现良好,即很好地归纳了这些特殊性证据上的普遍特征,但可能正因为它过于复杂,从而过分归纳。还是以认猫为例,孩子看了几张照片,发现这些猫的毛发就只有几种颜色,要不黑的,要不白的,要不黄的,于是他可能过分归纳了这个特征,认为猫的毛发必须是黑的、白的或者黄的这么几种颜色。这种说法对吗?当然,我们知道可能有其他毛发颜色的猫,所以不对。但是假设我们退一步说,他成功归纳到了世界上现存的猫所有可能的毛发颜色,这个归纳一定有好的泛化力吗?如果我们给他看这样一张小猫照片,里面的小猫可能刚刚干了些坏事,把自己的毛发弄得乌漆麻黑的,当然它还是一只真正的猫,但孩子可能已经认不出它来了,因为他过于归纳了猫的概念,毛发颜色可能根本不是什么重要的特征!不过,事情总不是这么一帆风顺,简洁不总是对的,复杂的归纳战胜简洁的归纳的案例其实也不少。所以再次证明,归纳实在是一件太难的事情了。
归纳很难,但还是要归纳。