可能你并未察觉,我们的 推理 (reasoning)分两种: 演绎推理 (deductive reasoning)与 归纳推理 (inductive reasoning)。前者基于已蕴含在概念本身之中的含义,而后者基于推理者拥有的在概念之外的经验。
我们来看一个推理:因为小明是单身,所以他没有对象。如果你忍不住想喊一句“废话!”,那就对了!这就是演绎推理最主要的特征:没有提供任何额外信息,全部是在同义反复。为什么我们天然觉得它是废话呢?因为“没有对象”这个结论早已蕴含在“是单身”这个前提概念之中了。类似的例子还有很多,比如:
· 因为小明不吃水果,所以他不吃草莓。
· 因为所有人都终有一死,所以我不可能永生。
· 因为苦瓜是苦的,所以并非所有瓜都是甜的。
显然,只要我们按照惯常的理解来解读这些推理中的“水果”“草莓”“所有”“苦”“并非”“甜”等概念,会发现它们全部都是在基于已蕴含在文本概念之中的含义在绕圈子。
再来看这个推理:我有生之年经历过的艳阳高照的日子都不曾下雨,故所有出太阳的日子都不可能下雨。很遗憾,我们知道这个结论是不成立的,因为有所谓太阳雨的现象。在极罕见的情况下,大晴天也会下雨。究其推理失效的原因,是“不下雨”这个概念并未蕴含于“出太阳”这个概念之中,整个推理基于的不是对概念的拆解与演绎,而是 我 这个推理者的 经验 。其不但处于概念本身之外,而且有限,故由此推出的关乎“ 所有 出太阳的日子”的结论是不可靠的,是会出错的。
类似的例子在数学中更是比比皆是。比如职业律师兼著名业余数学家费马(Fermat)曾经发现形如
的数在 n =0,1,2,3,4时分别是3,5,17,257,65537,它们都是质数 。然后他就不继续算 F 5 了,直接推测 所有 F n 都是质数。结果,数学家欧拉(Euler)后来发现
其并不是质数。
费马的错误讲真不算情有可原,或许都不能说他有逻辑问题,只能说他有点懒——咋才算了5个就不算了,好歹再多算一个嘛!让我们再来看一个极其情有可原的例子,也是与研究质数有关的。数学中有所谓 质数计数函数 (prime-counting function)
π ( x ):=不超过 x 的质数个数
比如 π (100)=25,表示不超过100的自然数中有25个质数。与寻找方程的求根公式一样,数学家们一直想找到一个公式,能够对任意 x 直接给出 π ( x )的值。时至今日,很遗憾,我们尚没有这样的公式,但人们找到了一个不错的近似,即所谓 对数积分 (logarithmic integral function):
它的近似效果有多好呢?从表2.1的第四列我们能看到,非常好!不仅如此,从第三列我们还能看到,似乎li( x )总是比 π ( x )大。无论是当初人们用纸笔手算,还是到了近代借助计算机,历史上所有的计算结果都表明li( x )比 π ( x )大。于是,很长一段时间内,人们都相信li( x )永远比 π ( x )大。然而事与愿违,在1955年数学家斯丘兹(Skewes)证明了存在一个 x 使得li( x )比 π ( x )小。这个 x 在哪儿呢?不知道,只知道它不超过
表2.1 li( x )对 π ( x )的近似
这是一个有 位的数!我都不知道有什么中文词汇能写下它 [2] 。最新的研究成果表明这个第一次让li( x )比 π ( x )小的数极有可能在1.397×10 316 附近,这也是一个有着三百多位的超级大的数啊!即使我们使用每秒计算十亿亿次的计算机,并夸张估计宇宙年龄有200亿年,也只能计算6.3×10 34 次,离它还差了282个数量级……怪不得我们即使用计算机来算,也至今都没有发现哪怕一个使得li( x )比 π ( x )小的 x !其实,情况比我们料想的还要糟。斯丘兹不仅证明了这样的 x 存在,还证明了有 无穷多 个这样的 x !我们从未发现它们,只不过是因为我们有限的经验、有限的计算能力、有限的时间与空间尚无法触及它们罢了。
从前面几个例子我们能看到,基于有限的经验归纳出的关于全体、关于无穷的结论是多么的不可靠,这便体现了演绎与归纳的一个非常重要且本质的区别:归纳是会出错的,但演绎不会!艳阳高照时可能下雨; F 0 、 F 1 、 F 2 、 F 3 、 F 4 都是质数但 F 5 却不是;至今我们都未找到一个比 π ( x )小的li( x ),但这种情况会发生无穷多次……然而,另一方面,单身的小明永远肯定没有对象。
顺便提一句,说了这么多归纳推理有多么“不靠谱”,那问题2.17中的数学归纳又何以有效呢?多了“数学”这两个字,一切就不同了?没错,就不同了。“数学”这个前缀正是为了区别其与一般生活中那基于有限经验的归纳。我们不是在说“因为某命题对0,1,2,…, N 成立,所以它对一切自然数成立”——这一看就是有问题的——而是在说“因为某命题对0成立,且由其对一个数成立总能推出其对下一个数亦成立,那么它对所有自然数都成立”,这就明显符合直觉了对吧!放心,我们接下来会建立一套理论,其允许使用数学归纳法从有限推理至无穷,并确保这种跃迁是有效且可靠的。
区分了演绎与归纳,可能你要问,如果说逻辑是研究演绎推理的,那归纳推理就不管了吗?当然不是,作为日常生活中非常重要的一种推理手段,归纳推理当然要研究,这便是名为统计学(Statistics)的数学分支所关注的领域。其旨在建立一套理论,让我们能更好更有效地利用经验来进行推理。这里顺便聊一些私货。其实,现如今大红大紫的所谓基于深度神经网络的人工智能,在方法论上我看来并无新鲜事,无非是统计学的衍生。得益于互联网与硬件的发展,我们能够将更多的经验 输入给模型 并归纳总结 它们,这几乎要让人们淡忘了“智能”演绎的一面,以及历史上诸多先人为探索演绎智能所做出的贡献与成就。依我看,正是因为基于演绎推理的智能早就被先人探索到头了,人们卡在瓶颈太久了,才导致在归纳推理上的一点突破,被赋予了不着边际的夸张价值。要知道,开启信息时代的计算机编程理论,正是从基于形式语言的数理逻辑理论发展起来的,我们其实早已浸润在演绎推理所塑造的宏伟智能之中——我们用的电脑手机、玩的游戏、坐的汽车飞机,这一切我们早已习以为常的事情,都是基于自古希腊起人类对演绎推理的自省、探索与征服啊!