什么都能解释的理论,跟“啥都能圆”的算命有啥区别?
有些理论特别厉害。
市场涨了,它能解释;市场跌了,它也能解释。
一个人成功了,是长期主义;失败了,是方向没选对。
坚持到最后赢了,叫“坚持就是胜利”;早点跑路躲过一劫,又叫“及时止损”。
你听到最后,会产生一种很微妙的感觉:
好家伙,这理论怎么什么都懂?
但真正值得问的,其实不是:
它能解释多少东西?
而是:
一个理论为了维持自己的解释,需要多少事后自由度?
这里先把“解释自由度”说清楚。
它不是一个严格对应某个单一数学量的术语。
我这里说的,是一种更宽泛的“有效自由度”:
一个系统为了迁就已经发生的事实,可以在多大程度上重新选择变量、补充条件、修改边界、改变解释口径。
自由度高,并不等于理论一定差。神经网络自由度很高。经济模型也可以很复杂。物理理论同样有很多参数和辅助假设。
真正危险的是:
这些自由度主要被用来解释过去,却几乎不增加对未来的约束。
事情发生之前,什么都没说死。事情发生以后,什么都能解释。那就有问题了。
算命先生说:
“你今年会遇到贵人。”
一年过去。没有。没关系。
“贵人未必以帮助你的形式出现,也可能是一场挫折,让你成长。”
这一句话真正增加的,并不是预测能力。
而是:
解释自由度。
所以真正的问题不是:
“这个理论听起来有没有道理?”
而是:
到底有没有一种结果,能够让它真的输?
输了算不算输?
这里有个特别微妙的区别。
假设两个人都来预测明天的彩票。
第一个人说:
“明天一定会开 17。”
开奖。没开。那很好办。
他猜错了。
第二个人就比较厉害了。
他说:
“明天的数字,会和你生命里某个重要数字产生联系。”
开奖以后是 26。
你说:
“这跟我有什么关系?”
他说:
“你今年 26 岁。”
你说:
“可我今年 25。”
他说:
“虚岁 26。”
你说:
“我虚岁也不是。”
他想了一下:
“那可能是在提醒你 26 岁的时候会发生重要的事情。”
你会发现。
问题已经不是:
这个说法能不能验证。
因为你明明已经开奖了。
问题是:
什么样的结果,才真的算它输了?
如果 17 没开,就是第一种预测输。
但第二种预测特别强。
它几乎可以把任何开奖结果重新塞回自己的解释里。
17 是缘分。26 是年龄。38 是未来。5 是生日。
实在不行,还可以说:
“数字只是象征,不应该机械理解。”
于是它拥有了一项近乎无敌的技能:
输了以后,可以重新定义什么叫输。
这其实才是科学和很多“啥都能圆”的理论真正拉开差距的地方。
不是科学家比较聪明。
也不是科学里的每个理论都预测得特别准。
而是成熟的科学会尽量提前规定:
什么情况算我对。
以及更重要的:
什么情况算我错。
比如做一个药物实验。
最好在数据出来以前就说清楚:
主要看哪个指标。比较哪两组。用什么统计方法。达到什么结果才算支持假设。而不是实验做完以后。发现血压没改善。那就改看心率。心率也没改善。再看睡眠。睡眠终于显著了。
然后宣布:
“新药取得突破性成果。”
这就有点像考试做完才决定:
这次到底考哪一道题。
所以科学里才会出现一个听起来很麻烦的东西:
预注册。
简单理解就是:
开奖之前,先把自己的答案锁起来。
你准备验证什么。主要指标是什么。大概怎么分析。提前写清楚。
这样等结果出来以后,你当然仍然可以做探索。
但至少大家能分清:
这个结果是你提前押中的。
还是你看完答案以后才找到的。
类似的还有随机对照、双盲、独立复现、隐藏测试集、开放数据。
名字看着一个比一个学术。
本质上其实都在干同一件特别朴素的事:
别让运动员跑完比赛以后,自己回来改终点线。
为什么要这么防?
因为科学从来没有假设:
科学家天然没有偏见。恰恰相反。人会确认偏误。会更愿意看到支持自己的结果。会 p-hacking。会 cherry-pick。会喜欢显著结果。会讨厌承认自己错。甚至完全不需要造假。
一个非常诚实的人,也可能在几十条分析路径里越走越顺,最后走到自己最希望看到的结果。
所以科学真正聪明的一点,不是:
“科学家特别理性。”
反而是:
“我们知道人没有自己想象中那么理性,所以最好连研究者自己一起防。”
为什么双盲?
因为最好别让实验者和参与者提前知道自己“应该”看到什么。
为什么独立复现?
因为一个现象不能只在提出它的人手里永远成功。
为什么隐藏测试集?
因为答案如果已经看过了,再高的分数都可能只是针对答案调出来的。
所以科学和算命真正的区别,并不只是:
有没有实验。
而是:
实验输了以后,输不输得掉。
一个理论真正危险的状态不是“它偶尔预测错”。
而是:
这个世界根本找不到一种结果,能够让它认输。
后面我们还会看到,科学哲学里专门有人研究这个问题。
波普尔把其中一个核心要求叫作:
可证伪性。
这个词听起来很哲学。
说人话其实就是:
一个理论至少得告诉我,什么情况出现以后,你愿意承认自己麻烦了。
但科学后来又比这多走了一步。光愿意输还不够。还得设计一套规则。
让你输了以后,不能假装这局没发生。
这就是为什么科学制度有一种很“反人性”的设计:
尽量把失败是否成立的决定权,从提出者本人手里拿走一部分。
这是一种审计制度。
也是一种对抗机制。
它默认:
最大的过拟合风险,有时候就是研究者本人。
机器学习里的 regularization,主要是在控制模型。
科学制度则还在控制:
建模的人。
不是只压缩假设空间。
还要限制:
谁能改规则。什么时候能改。看完什么数据以后还能不能改。失败发生以后能不能悄悄删掉。
所以真正成熟的知识体系,其实是在同时对抗两个东西:
模型的自由度。
以及:
解释者的自由度。
好了。
假设我们已经把“作弊”这件事尽量堵住。
研究者没有改结果。没有挑数据。没有事后圆。
那是不是只要历史数据足够多,我们就能放心了?
还真不是。
一只火鸡
现在来看一只很经典的火鸡。假设农场里有一只特别聪明的火鸡。第一天上午十点。主人来了。给它喂饭。第二天。十点。又来了。第三天。还是十点。第一百天。第五百天。第一千天。
如果这只火鸡会 Python,它大概已经把数据导进 pandas,顺手画了个漂亮的时间序列。
历史准确率:
100%。样本越来越多。置信度越来越高。
它最后总结出一条伟大的火鸡定律:
每天上午十点,主人都会给我送饭。
然后感恩节到了。上午十点。主人果然来了。只不过这一次,不是来喂它。是来抓它的。
最讽刺的是:
这只火鸡偏偏在最相信自己理论的那一天,被端上了餐桌。
这个故事为什么经典?
因为火鸡的数据其实没有错。
过去一千天,主人确实都在十点出现。
真正出问题的是:
它把一个在特定机制下稳定成立的规律,当成了无条件成立的宇宙定律。
它看到了数据。
但不知道数据为什么这么产生。
主人一直喂它,不是因为:
“十点和食物之间存在宇宙级因果律。”
而是因为主人暂时还想把它养肥。
这里其实让我想到《三体》里“智子锁死”的设定。
火鸡至少还有一个幸运之处:
它看到的数据,确实是那个世界正常生成的数据。
《三体》里的问题更狠。
如果连实验本身都受到外部干预,不同实验不断吐出反常、随机、无法重复的结果,那么科学家面对的就已经不只是:
“我的理论为什么解释不了这些数据?”
还有更恐怖的一层:
“我手里的数据,还是不是自然机制正常产生的数据?”
火鸡不知道主人为什么喂它。
《三体》里的科学家甚至开始怀疑:
喂到自己手里的数据,到底还是不是自然本身。
这件事放到机器学习里也一点不陌生。
distribution shift。
数据污染。对抗样本。reward hacking。
benchmark contamination。
它们都在提醒一件事:
不要只盯着数据长什么样,还要问数据为什么会以这种方式来到你面前。
欢迎来到休谟。
明天凭什么一样?
我们每天都在做同一种推理。太阳过去每天升起。所以明天还会升起。这个材料过去一百次受热都会膨胀。所以第一百零一次也会。这个策略过去五年都赚钱。所以明年应该也行。这个模型在测试集表现很好。所以部署以后应该也不错。
这叫:
归纳。
问题是:
凭什么?
你可能说:
因为归纳过去一直挺好用。
休谟马上会问:
你现在是不是在用——
“归纳过去有效”
证明——
“归纳未来也会有效”?
那不还是在用归纳证明归纳吗?
而如果想靠纯粹演绎逻辑证明:
“未来必须像过去。”
也做不到。
明天太阳不升起当然极不可能。
但“极不可能”和“逻辑矛盾”不是一回事。
这里也很容易把休谟说歪。
休谟不是让大家明天开始拒绝吃饭、拒绝躲火、拒绝相信太阳还会升起来。
他真正追问的是:
我们凭什么从“过去总是如此”,得到“未来必然如此”?
经验当然有用。
但“有用”和“逻辑必然”不是一个词。
所以从有限的过去走向未知的未来,中间并没有一条由纯粹逻辑免费提供的桥。
两个多世纪以后。
这个哲学问题换了件格子衫,跑进计算机实验室。
名字叫:
泛化。
没有免费泛化
机器学习里,我们给模型一批训练数据。
表现很好。再给它一批测试数据。也很好。
为什么我们敢期待:
部署以后它还能工作?
因为其实偷偷加了很多前提。
训练数据和未来数据不能完全是两个世界。
数据生成机制不能突然翻脸。
模型最好学到稳定结构,而不是历史偶然。
说白了:
我们默认明天不会突然变成感恩节。
机器学习当然比那只火鸡严谨得多。我们会切训练集、测试集。会交叉验证。
会研究 distribution shift、OOD、泛化误差。
但底层那个问题没消失:
为什么有限历史可以支持我们预测没有见过的数据?
所以我很喜欢一句话:
机器学习的泛化问题,就是休谟归纳问题的工程化版本。
哲学家把它写在书里。
工程师把它画成 loss curve。
火鸡把它写进了遗嘱。
而这里还有一个机器学习里非常出名的结果:
No Free Lunch。
名字翻译过来就是:
没有免费的午餐。
它大概在说什么?
如果你把所有可能的问题都一视同仁地平均起来,那么不存在一个学习算法,在所有问题上都永远比别人强。
你在图片上表现特别好。
不代表换一个完全不同的问题还能赢。
换句话说:
一个算法之所以能学得好,一定是因为它对这个世界提前押了某些东西。
图像模型会押注:
局部像素之间有结构。
语言模型会押注:
语言不是随机字符。
物理模型会押注:
现实存在稳定的守恒、对称和局域规律。
这些都叫:
inductive bias,归纳偏置。
名字听起来有点吓人。
其实就是:
模型在看数据之前,就已经带着一些“这个世界大概长什么样”的偏好。
当然,No Free Lunch 也经常被提醒有一个重要限制:
它讨论的那个“所有问题平均起来”的世界,并不等于现实世界。
而这反而特别有意思。
因为现实恰恰不是均匀撒在所有可能函数上的。
猫的照片不是随机噪声。
语言不是随机字符。
流体也不会今天满足连续性方程,明天心情不好就不满足。
所以现实之所以可以被学习,很大程度上恰恰因为:
现实有结构。
No Free Lunch 真正留下的一句话,不应该是:
“所有算法都一样。”
而是:
没有免费的泛化。
你必须拿某种关于世界结构的押注去换。
没有免费的逻辑桥。
只有建立在先验、结构和证据上的桥。
但是,能预测还不是我们最贪心的地方。
人类不只想知道:
“明天会发生什么?”
我们还想问:
为什么会发生?
谁先发生?
我们为什么会觉得:
A 是原因。
B 是结果?
一个特别自然的判断方式是:
因为 A 先发生,B 后发生。
杯子掉下去。然后碎了。按下开关。然后灯亮了。吃完饭。然后不饿了。
久而久之,我们的大脑特别习惯这种结构:
前面发生一件事。
后面发生另一件事。
中间自动补一个:
“所以。”
但这个办法显然经常翻车。
公鸡每天打鸣以后,太阳升起来。
不能说明:
太阳是公鸡叫出来的。夏天冰淇淋销量变高。溺水人数也可能一起变高。
也不能说明:
冰淇淋会导致溺水。
真正同时推动两件事的,可能只是:
天气变热了。
所以我们先得到一个最基本的提醒:
发生在前面,不等于就是原因。
甚至“谁先发生”本身,有时候都比想象中复杂。
相对论里有个很反直觉的结果:
对于某些相隔非常遥远、彼此根本来不及传递信号的事件,不同运动状态的观察者,对“谁先谁后”都可能给出不同答案。
但这并不是说:
“因果关系也随便变。”
反而恰恰说明:
单纯的时间排序,本来就不足以建立因果。
真正能够发生物理影响的事件,其因果先后并不会因为你换一个观察者就随便颠倒。
所以时间顺序是一条线索。但它不是因果关系本身。而人类特别容易越过这一步。这也是蒙太奇为什么那么厉害。一个演员面无表情。下一个镜头切到一盘饭。
你会觉得:
他饿了。还是同样的表情。下一秒换成一场葬礼。
你又会觉得:
他很悲伤。
演员根本没有变。
变化的只是:
前后摆了什么画面。
但我们的大脑会自动把这些画面连起来。
甚至补上一条画面里压根没有出现的因果关系。
所以所谓“蒙太奇谎言”特别有意思的一点就是:
它不一定需要伪造镜头。
它只需要:
挑哪些镜头。删哪些镜头。怎么排序。最后观众自己会帮它把故事补完。历史叙事其实也有一点这种味道。一个王朝已经灭亡了。一家公司已经倒闭了。一个人已经成功了。然后我们回过头去看过去。政策。性格。技术路线。某次会议。某个错误决策。某次机遇。
当这些事情正在发生的时候,它们只是成百上千个历史碎片中的几个。
但结果一出来。我们突然特别会挑重点了。最后成功了。
当年的冒险叫:
远见。
最后失败了。
同样的冒险又可以叫:
鲁莽。
最后公司做大了。
创始人的固执叫:
长期主义。
最后公司倒了。
这个性格又成了:
听不进意见。
这时候 Steve Jobs 那句“只有回头看,才能把那些点连起来”就很有意思。
但它其实还有另一面:
回头以后能连成一条线,不代表当时只有这一条线。
结果已经发生以后,我们很容易从无数过去的碎片里,挑出最符合这个结局的那一组。
然后产生一种错觉:
“你看,一切早有预兆。”
心理学里有个名字专门形容这种感觉:
后见之明偏差。
事情没发生之前:
谁也说不准。
事情发生以后:
大家突然都觉得它很合理。可问题也来了。如果时间先后不够。相关不够。事后讲得通也不够。
那科学到底凭什么说:
A 真的导致了 B?
这时候才轮到现代因果推断上场。
相关之后,还有一步
举个很日常的例子。
一家 App 看后台数据,发现:
允许推送通知的用户,七日留存率明显更高。
产品经理一拍桌子:
懂了。推送可以提高留存。于是下一版本开始疯狂提醒。
“你已经三小时没打开我们了。”
“这里有 5 条你可能感兴趣的消息。”
“你的朋友都在看。”
然后用户把 App 卸了。
问题出在哪?
最简单的一种可能是:
因果方向搞反了。
并不是:
开通知 → 更喜欢 App。
而可能是:
本来就喜欢 App → 更愿意开通知。
还有一种可能。
背后藏着第三个因素。
比如:
本来使用频率就高的人,既更容易开启通知,也更容易留下来。
所以数据只能先告诉你:
这两件事情经常一起出现。
这叫相关。
但我们真正想知道的是另一件事:
如果我主动把其中一个东西改掉,结果会不会跟着变?
这就是现代因果推断最核心的转向。
从:
“谁和谁一起出现?”
走向:
“如果我动它一下,会发生什么?”
最理想的办法大家其实都见过:
随机对照实验。把条件差不多的人随机分组。一部分人开通知。一部分人不开。尽量让别的东西都差不多。然后看结果。现实里很多问题当然没办法这么干。
你不能为了研究:
“辍学会不会影响未来收入”
随机抽一半学生让他们退学。
所以因果推断后来才发展出一大堆看着很玄乎的方法:
自然实验。工具变量。因果图。反事实。Pearl 的因果推断体系。
Judea Pearl 是现代因果推断里很重要的一位学者。
他最出名的贡献之一,就是非常明确地区分了几种不同的问题。
第一种:
我看到了什么?
谁和谁经常一起出现。
第二种:
如果我主动改变它,会怎样?
第三种更狠:
如果当时没有这么做,会发生什么?
也就是反事实。
名字很多。
但它们大体都在努力回答同一个问题:
怎么尽量把“它们碰巧一起出现”,推进到“改变其中一个,真的会影响另一个”。
当然。做到这里也没有获得“上帝视角”。因为因果模型本身还是需要前提。你认为哪些变量会影响哪些变量。有没有漏掉重要因素。哪些关系可以排除。
这些并不是数据自己从屏幕里跳出来告诉你的。
所以现代因果推断并没有消灭休谟的问题。
它做的更像是:
既然我们不可能凭裸数据直接看到一根叫“因果”的线,那就尽量把自己额外用了哪些假设写清楚。
这反而又绕回了全文的主题:
真正成熟的知识,不是没有假设。
而是:
知道自己到底用了哪些假设。
原因往往不止一个
还有一个特别容易犯的错:
一出事,就非要抓一个“元凶”。
考试没考好。
是不是因为学校不好?
项目失败。
是不是因为技术不行?
找工作没拿到 offer。
是不是学历不够?
公司销量掉了。
是不是广告投少了?
我们的脑子特别喜欢这种:
一件结果。对应一个原因。简单。清楚。特别适合写标题。但现实经常不给这个面子。
比如一句小孩都听得懂的话:
“因为今天下雨,所以我的鞋湿了。”
听起来完全没毛病。
但仔细一想:
下雨了。
如果我没出门呢?
鞋不会湿。
出门了。
如果穿的是雨鞋呢?
也可能不会湿。既下雨。也出门。但雨特别小,路上没有积水。结果又可能不同。
所以鞋湿这件事,背后同时站着一群“嫌疑人”:
下雨。出门。穿什么鞋。路面积水。走了多久。甚至你是不是非往水坑里踩。
很多现实结果,本来就是很多条件一起凑出来的。
你很难指着其中某一个说:
“就是你,其他人都出去。”
网上有个人讲过一个我印象很深的经历。
她本科上心理学统计课的时候,老师要求学生在作业里反复手写一句:
Correlation does not imply causation.
相关性不等于因果性。
当时可能会觉得:
知道了知道了。
还写?
后来才发现,老师大概是真的怕学生统计学学上头。
跑完一个实验。
看到两个变量高度相关。
马上宣布:
我发现原因了。
但统计表不会自动告诉你:
谁导致谁。有没有第三个变量。有没有选择偏差。有没有样本问题。甚至两者是不是只是碰巧一起动。这件事放到生活里更麻烦。因为人生根本没有实验室那么干净。一个人失败了。
可能同时有:
能力。环境。机会。信息。家庭资源。时间点。行业周期。运气。几十个因素一起参与。
但人在结果出来以后,很容易从里面抓住一个最显眼的标签:
“因为我学历不行。”
“因为我来自这里。”
“因为我年纪大了。”
“因为我性格不好。”
然后把一个复杂结果,压缩成一个单一原因。
这就是错误归因真正危险的地方。
不是因为:
你的解释在哲学上不够优雅。
而是因为:
你后面真的会按照这个解释行动。
公司明明是行业整体需求下降。你以为是广告不够。那就继续烧钱。
学习效率低,真正的问题是睡眠和方法。
你认定自己“就是不聪明”。
那最后可能连方法都懒得改了。
所以成熟一点的因果思维,不是遇到事情以后疯狂问:
“到底哪个才是真正的原因?”
而是换成几个更有用的问题:
这个因素如果改变,结果会跟着变吗?
它到底贡献了多少?
有没有别的因素同时在起作用?
它是不是只有和另一个条件一起出现时才重要?
这也是为什么现实世界里的决策,很多时候更接近一种“多因素估算”。
不是找到那个神奇按钮。
而是在一堆不确定因素里判断:
哪个更重要,哪个更可控,先动哪个最划算。
所以“相关性不等于因果性”真正厉害的地方,不是告诉你:
因果不存在。
而是给你的脑子踩了一脚刹车:
先别那么快说“因为”。
统计为什么不像数学那么干脆?
到了这里,会遇到另一个问题。既然现实中的变量这么多。很多东西又没办法完全控制。
那科学家到底怎么判断:
一个结果只是随机波动。
还是真的有东西发生了?
这就是为什么到了医学、心理学、生物学,满眼都是统计。
比如一种新药。
一组人吃了以后表现更好。
但你不能马上说:
药有效。
因为就算药完全没有作用。
两组人之间也可能因为随机性出现差异。
所以经典的统计检验会做一件乍看特别绕的事。
先假设:
这个药没效果。
然后再问:
如果它真的没效果。
现在看到这么大的差异,到底有多罕见?
如果特别罕见。
我们开始怀疑:
是不是“药没效果”这个假设有问题。
这个思路是不是特别像数学里的反证法?
先假设一个东西。然后发现不对。但二者其实差得很远。
数学反证如果真的推出矛盾:
结束。不可能。统计检验不是。
统计学往往只能说:
这个结果在原假设下挺罕见。
罕见和不可能。不是一个词。连续扔十次硬币。十次全是正面。很离谱。但并不违反逻辑。
所以一个经常被误解的数字:
p < 0.05。
它并不是说:
“零假设只有 5% 概率是真的。”
更不是:
“我的新理论 95% 正确。”
它只是在那套统计模型下告诉你:
如果原假设是真的,现在这类结果有多不寻常。
所以经验科学里的失败,很多时候不是:
TRUE。FALSE。啪。切换。
而是:
证据不断增加或者减少我们对一个解释的信任。
这也是为什么一次显著远远不够。
还要看:
效应量。置信区间。多重比较。样本量。预注册。独立复现。
2015 年那次很有名的心理学复现项目就是一个很好的提醒。
原研究几乎都报告了统计显著。
但复现实验中再次获得统计显著结果的比例只有大约 36%。
这当然不能翻译成:
“心理学只有 36% 是真的。”
它真正提醒的是:
当研究对象复杂、效应较小、研究自由度又很高时,一次漂亮结果远远不够。
这里我们先埋一个伏笔。
为什么数学反证看起来比统计硬那么多?
因为数学是在一套非常明确的形式规则里玩。
至于:
连这些规则本身有没有前提?
先别急。
后面讲到哥德尔的时候,我们再往地板下面挖一层。
一个反例真的能打死理论吗?
既然统计意义上的失败没那么干脆。
那科学课本里经常说的:
“一只黑天鹅推翻所有天鹅都是白色的。”
现实里真有这么简单吗?
这里就要提到波普尔。
波普尔特别强调一个观点:
一个经验理论必须承担失败风险。
比如:
“所有天鹅都是白色的。”
这句话很危险。
因为只要找到一只真正的黑天鹅,它就遇到了麻烦。
但如果你说:
“宇宙里存在一种永远无法测量、不会和任何东西发生作用的神秘力量。”
那就很安全。
因为根本没有实验能让它输。
所以波普尔所谓“可证伪性”真正有价值的地方,就是:
理论不能在所有可能结果下自动获胜。
但是现实科学马上又比这个复杂。
假设一个物理理论预测:
仪器里应该出现一个信号。
结果没出现。
到底谁错?
理论?
也许。
但也可能:
仪器校准错了。边界条件没满足。背景噪声估计有问题。参数设错了。程序有 bug。
所以现实里的实验通常不是在单独检验一条理论。
而是在一起检验:
理论。仪器。辅助假设。背景知识。一整套东西。
这就产生了一个很麻烦的问题:
现实告诉你“这里有问题”,却不自动告诉你到底是哪一环有问题。
科学哲学里专门有个名字形容这种麻烦:
杜恒—奎因问题。
于是科学家也可以说:
“理论没错,是实验的问题。”
听起来突然有点像:
“贵人没错,是你理解错了。”
所以允许理论在失败后修改,到底算不算耍赖?
关键要看下一件事。
补丁到底算进步还是耍赖?
理论遇到异常以后打补丁,并不是原罪。
真正要看的是:
这个补丁干了什么。
假设一个理论遇到了异常。科学家提出一个新机制。这个新机制不仅能解释旧异常。
它还提前预测了一个从来没人见过的新现象。
后来这个现象真的被发现了。那这个补丁就很厉害。因为它不仅把过去讲通。还对未来下了新的赌注。
它让理论:
承担了更多风险。
反过来。
如果每次失败以后都是:
特殊情况。未知因素。环境复杂。隐藏条件。
所有新增解释唯一的工作,就是把已经发生的错误重新塞回旧故事里。
那它增加的不是知识。
而是:
逃生通道。
科学哲学家拉卡托斯有一套“研究纲领”的思想,就特别适合描述这个区别。
理论的核心不一定遇到一次异常就立刻扔掉。
外围当然可以修。
问题是:
这些修改有没有不断带来新的、成功的预测?
还是一直追着失败结果打补丁?
用全文的话来说:
好的修改:
减少未来的不确定空间。
坏的修改:
增加过去的解释空间。
一个在承担风险。一个在购买后悔药。你会发现。绕了一大圈。
我们又回到了文章最开头的那个词:
解释自由度。
科学为什么长得不一样?
讲到这里,很容易产生一种错觉。
既然科学都讲证据。
那是不是物理、医学、心理学、经济学都应该用同一套标准?
现实完全不是。
不同科学看起来甚至不像一个物种。
物理学往往能做高精度测量和大量重复实验。
但物理理论也有适用范围。牛顿力学不是彻底“错了”。而是在某些尺度和条件下不够用了。天文学甚至没法随便实验。
你不能复制两颗太阳:
“左边实验组。”
“右边对照组。”
它只能依赖不同波段、不同仪器、不同模型之间的交叉约束。
进化生物学也不能:
“来,我们重新播放一次寒武纪。”
但它可以把:
化石。DNA。比较解剖。生物地理。实验演化。一起拿来约束同一个解释。医学面对的是个体差异。年龄。遗传。饮食。生活环境。其他药物。变量多得离谱。于是高度依赖随机试验和统计设计。
心理学面对情境、测量方式、文化差异这些东西。
所以更需要透明分析和复现。经济学更麻烦。因为它研究的对象会读新闻。会形成预期。会看到政策以后主动改变行为。甚至一条规律被大家发现以后。这条规律本身都可能因此发生变化。
所以真正值得比较的,不是:
物理 95 分。心理 40 分。经济 30 分。这种学科战力榜没什么意思。
更值得问的是:
在这个研究对象客观允许的条件下,这门学科到底建立了多强的约束机制,去减少自己的解释自由度?
科学“硬不硬”,不完全取决于公式有多漂亮。
而取决于:
现实到底能多狠地卡住你的解释。
科学不是 TRUE / FALSE 开关
到这里又会发现。
现实科学并不是:
发现一个反例。
理论立刻从 TRUE 变成 FALSE。
更多时候,它更像:
证据不断改变我们对不同解释的信任程度。
这也是贝叶斯主义特别吸引人的地方。
贝叶斯思想如果说得特别粗糙一点,可以理解成:
不断给理论重新定价。
一个理论刚提出。证据少。先别梭哈。后来解释了一些旧现象。加一点信任。又提前预测了新现象。再加。连续出现异常。减。竞争理论表现更好。继续重新分配。所以科学很多时候真的很像市场。
理论不是:
100 分。
0 分。
而是:
随着证据不断重新定价。
但这个比喻也有边界。
科学史学家库恩会提醒你:
科学变化并不永远是在同一套坐标系里慢慢调价格。
正常科学时期确实比较像:
解决 puzzle。处理 anomaly。修修补补。但有时候异常积累得太多。整个领域会进入危机。
然后可能发生一种更剧烈的变化:
范式转换。
这个词也很容易被说玄。
简单说就是:
有时候不是旧理论 60 分,新理论 80 分。
而是连:
什么问题值得研究。什么证据算重要。哪些概念算基础。甚至评价理论的标准。都开始变。
有时候不是:
股票重新定价。
而是:
交易所换了计价单位。
所以贝叶斯式渐进更新,是理解科学的一张很好用的地图。
但不是全部地形。
这反而很符合全文的精神:
任何特别顺的解释,都应该顺手问一句:适用边界在哪?
测试集其实很哲学
机器学习里的测试集,放在这个视角下特别有意思。
训练准确率:
99.9%。
不够。
没见过的数据呢?
一个时间段很好。
换一年呢?
这个城市很好。
换另一个城市呢?
这个设备很好。
换型号呢?
进入 OOD 呢?
这一套东西,本质上都在干:
不断找模型还来不及针对性修改的现实。
因为只要你看完测试集以后继续针对它调模型。
测试集就已经被污染了。
然后你需要新的测试集。
它相当于对模型说:
这次答案提前不给你。
这和科学里的预注册,其实有一种特别深的相似性。
不是简单:
“参数少一点。”
而是:
锁定时序。
先押注。
再开奖。
这里也可以把文章开头那个“解释自由度”稍微讲得技术一点。
很多人第一反应是:
参数多。自由度就高。但现代机器学习没这么简单。
统计学习理论里有 VC dimension、Rademacher complexity 这些更正式的工具,都是在试图描述:
一个模型或者假设集合到底有多大的表达能力。
到了深度学习以后事情又更复杂。
参数很多,不代表有效自由度就机械等于参数数量。
优化算法。网络结构。初始化。数据增强。参数化方式。都会产生某种隐式约束。
double descent 这种现象甚至直接告诉我们:
“模型越大,过拟合一定单调变严重”
这种经典直觉并不永远成立。
所以本文里的“解释自由度”,如果硬翻译成机器学习语言,更接近:
一个系统到底有多大能力,去迁就已经看过的数据,却不承担新的样本外约束。
不是简单数参数。
而是看:
它到底有多少种办法,把过去讲通。
然后来了一个把这项能力放大到离谱的系统。
大模型:最会讲故事的机器
大语言模型。
你问:
为什么一家公司成功?
组织文化。战略。创始人。技术积累。时代红利。一套完整故事。
你再问:
为什么另一家公司明明条件差不多,却失败了?
它也能换一套因素重新讲通。
这就是大模型特别强的一点:
它太会解释了。
而前面讲完蒙太奇和历史叙事以后,这件事甚至变得更有意思。
剪辑师可以重新排列镜头。
历史叙述者可以重新选择过去的碎片。
大模型则可以在巨大的语言空间里重新选择:
因素。关系。权重。上下文。叙事路径。给定一个结果。
它通常都很擅长找到一条能通向这个结果的故事。
但这里其实还有更尴尬的一层。
我们总说:
AI 会编故事。
但仔细想想。
人类不也一样吗?
叙事谬误。后见之明偏差。确认偏误。结果偏差。
我们本来就是一种非常擅长:
事情发生以后,把世界重新讲顺。的动物。
大模型某种意义上只是把这个能力极度放大,然后外化了。
它不是突然发明了“什么都能圆”。
它是在海量人类文本中学会了:
我们本来就很会圆。
所以大模型特别像一面尴尬的镜子。
我们批评它:
“你怎么什么都能解释?”
它可能只是把人类自己的叙事习惯压缩以后,又完整地返还给了我们。
但这恰恰也是它“有救”的一个原因。人的解释偏差藏在脑子里。很难审计。
大模型输出则可以:
保存。对比。复跑。打 benchmark。接 verifier。做第三方评测。
也就是说:
大模型把人类原本内隐的叙事癖,变成了一个可以被外部审计的对象。
这反而给了我们机会。
它为什么又比算命强?
大模型和算命表面上确实很像。都很会讲。都能生成很多解释。
但有一个巨大区别:
大模型的大量输出,可以重新被拉回现实。
它说代码能跑?
真正运行。
报错就是报错。
它说论文存在?
去检索。
不存在就是不存在。
它说数学证明成立?
交给 proof checker。
过不了就是过不了。
它预测某个实验结果?
做实验。
这就是为什么工具调用、检索、代码执行、verifier 这么重要。
它们不只是给模型:
“外挂更多知识。”
更重要的是:
给现实装回否决权。
但到这里还不能太乐观。
因为仅仅有 verifier,也不够。
如果模型可以自己选择什么时候调用。
失败以后重试十次,只展示成功的一次。
不同 verifier 冲突时只挑喜欢的结果。
那它照样会重新退化成算命。
所以真正可靠的 AI 系统,同样需要制度层。
隐藏测试集。固定评测规则。外部审计。不可随意删除的执行日志。第三方 benchmark。强制 verifier。
也就是说:
AI 不只是需要工具,还需要让工具结果具有强制约束力。
这和科学共同体的问题一模一样。
现实必须能说:
不。
而且:
这个“不”必须进账。
物理为什么这么能泛化?
前面一直在说:
泛化不是免费的。
那为什么物理学看起来特别能泛化?
牛顿第二定律不是:
看了一千万个苹果掉下来。
然后机械猜:
第一千万零一个也会掉。
物理真正厉害的一点,是它试图寻找:
结构。
在适用条件下。换质量。换速度。换初始位置。仍然可以用同一组关系推演。
这是一种特别强的:
结构泛化。
当然。也不能因此把物理摆到休谟问题之外。守恒律。对称性。有效方程。
这些结构本身也不是上帝直接刻进教科书的。
它们同样经过:
观察。归纳。竞争理论。实验淘汰。
所以如果借机器学习的话来说:
物理先验可以看成一批被现实筛了很多轮的强归纳偏置。
它不是免费获得的真理。
而是一套被历史证据反复筛选以后,目前极其成功的结构押注。
这就和前面的 No Free Lunch 接上了。
泛化需要 bias。
而物理,可能就是人类目前找到的最成功的一批 bias 之一。
AI 又回来借物理
这也是 PINN 特别有意思的地方。
PINN,Physics-Informed Neural Network。
物理信息神经网络。
普通数据模型看到有限数据点以后,可以画出很多条函数去贴这些点。
PINN 会说:
先等等。除了贴数据。你还得满足物理方程。边界条件得满足。初始条件也得满足。
违反质量守恒?
不行。
能量凭空增加?
不行。
于是大量原本都能“解释数据”的函数,直接被排除。
这里,“正则化”这个机器学习词终于可以严格一点地重新登场:
物理约束确实是在压缩、重塑可接受的函数空间。
这也是 AI4Science 很有意思的地方。
不是:
“AI 证明传统科学过时了。”
反而有点像:
AI 发现现实数据没互联网那么多以后,又回来向物理借结构。
当然。
借了结构不代表自动无敌。
PINN 一样会遇到优化困难、多尺度、激波、强对流这些问题。
现实从来不是塞一个 PDE loss 就自动投降。
工程真正关心的是“怎么错”
再看 CFD、有限元。慢。复杂。网格一细。服务器风扇先发表意见。
但成熟数值模拟有一个特别宝贵的东西:
误差结构。
它不只告诉你:
答案是 3.7。
它还会追问:
网格收敛了吗?
时间步呢?
残差呢?
守恒呢?
边界条件靠谱吗?
模型适用吗?
实验对上了吗?
工程里有一套特别重要的概念:
V&V。
Verification and Validation。
说人话:
Verification:你把方程算对了吗?
Validation:你算的这个模型,真的代表现实吗?
再往后还有 UQ:
Uncertainty Quantification。
不确定性量化。
简单说就是:
你这个答案到底有多不确定?
所以工程师真正害怕的,从来不是模型犯错。
所有模型都会错。
真正恐怖的是:
你不知道它会在哪里错。
平均误差 3% 不一定可怕。
真正可怕的是进入陌生工况以后。
模型突然给你一个:
特别平滑。特别自信。特别漂亮。同时完全错误的结果。这才危险。
工业最怕的不是错误。
是:
错误没有边界。
有规律,也不代表能预测
到这里,好像只要找到正确物理规律。问题就解决了。也没有。
因为还有:
混沌。
一个系统可以完全确定。没有随机骰子。方程也写得清清楚楚。但初始条件只要差一点点。长期结果就可能完全不同。
所以天气预报的问题并不是:
“我们完全不知道大气怎么运动。”
而是:
初始观测永远存在误差。
而混沌会不断放大这种误差。
于是出现一种特别反直觉的情况:
知道规律,也不代表能无限预测。
这一下就把几个经常混在一起的词拆开了:
可解释。可预测。可干预。可计算。它们不是一回事。而接下来,我们再往下挖。事情会越来越离谱。
能验证,也不代表找得到
有的问题。答案如果别人交给你。你很容易检查。
但让你自己从巨大的搜索空间里把它找出来。
可能极其困难。
这就是 P vs NP 背后那种味道。
这里不展开数学定义。
抓住一个直觉就够了:
检查一个答案,和找到这个答案,不一定一样难。
比如一个巨大的组合优化问题。
别人给你一个候选方案。
你可能很快就能检查:
它符不符合要求?
成本是多少?
但是让你自己从几乎无穷多组合里找出最好的那个。
可能贵得离谱。
所以第一堵墙是:
可验证,不等于可高效找到。
有答案。但算不起。注意。这还只是复杂性问题。算法可能仍然存在。只是太贵。接下来更狠。
有些问题,可能根本没算法
图灵再往下挖了一层。
有个特别有名的问题叫:
停机问题。
它问的是:
能不能写一个万能程序。
输入任意一个程序和输入。
它都能正确告诉你:
这个程序最后会停止。
还是会永远运行。
答案是:
不能。
这里已经不是:
电脑不够快。算法太贵。算几年算不完。
而是:
根本不存在一个解决所有情况的万能算法。
这和前面的 P vs NP 已经完全不是一种困难。
前面问的是:
能不能算得足够快?
这里问的是:
这种万能算法究竟存不存在?
所以第二堵墙是:
有些问题不是难算。
而是:
不存在你想要的那种通用解法。
然后数学还可以继续往下挖。
连“真”都不一定等于“可证”
然后来了哥德尔。
哥德尔不完备定理特别容易被科普成一句:
“数学是不完备的。”
然后下一句:
“所以数学不是真理。”
再下一句:
“人类理性失败了。”
全都跑远了。
哥德尔真正讨论的是非常具体的形式系统。
如果一套形式系统足够强,能够表达足够丰富的算术,同时满足相应条件,那么会出现一些命题:
在这套系统内部,既证明不了,也否定不了。
注意关键词:
这套系统内部。
它没有证明:
数学是假的。
没有证明:
世界无法认识。
更没有证明:
人脑一定比 AI 高级。
它真正逼我们拆开两个很容易混在一起的词:
真。
以及:
在某套形式系统里可证明。
它们不能永远简单画等号。而且哥德尔不完备有明确适用条件。不是任何数学系统都会自动不完备。
比如只处理某些较弱算术结构的系统,就可能拥有完全不同的性质。
所以这时候再回来看数学,会发现一个特别有意思的地方。
数学并不是:
“我没有任何前提,所以我是真理。”
恰恰相反。数学特别喜欢把前提写出来。公理是什么。语言是什么。推理规则是什么。都尽量说明。
所以:
公理不是数学偷偷藏起来的漏洞。
公理更像:
写在合同第一页的游戏规则。
数学真正承诺的是:
在这套前提和规则下。这些结论必须跟着出来。也就是说。
数学的强,不是:
没有假设。
而是:
它把自己的假设暴露得特别彻底。
这里正好可以兑现前面统计那一节埋下的伏笔。
数学反证为什么看起来那么“硬”?
因为它运行在一套明确的逻辑规则里。
可如果连逻辑规则本身也换掉呢?
连反证法都有版本
我们从中学开始就特别喜欢反证法。
想证明一个东西?
先假设它不成立。一路推。发现矛盾。
那就说明:
原来的命题成立。
特别干脆。
但为什么这套操作可以这么干脆?
因为我们平时学的大部分数学,默认使用的是一套:
经典逻辑。
经典逻辑里有一个特别符合直觉的原则:
一件事情。要么成立。要么不成立。没有第三种。
这叫:
排中律。
名字很哲学。
说人话:
非黑即白,中间排除。
平时我们几乎不会怀疑它。
一个命题不就是:
对。
或者错。
还有什么好说的?
偏偏真的有数学家说:
不一定非得这么玩。
比如二十世纪影响很大的一个方向:
直觉主义。
它的思路如果非常粗暴地翻译,可以这么理解:
你不能总是告诉我:
“它不可能是错的。”
然后就宣布:
“所以它一定是对的。”
某些情况下。
我还希望你真的把这个东西:
构造出来给我看。
举个不严格,但特别好懂的比方。
有人说:
“这个仓库里一定有一只猫。”
一种反证思路可能是:
如果仓库里没有猫,会和我们已经知道的一堆条件产生矛盾。
所以:
仓库里一定有猫。
直觉主义会更较真一点:
好。
你证明了:
“没有猫不行。”
但是:
猫呢?
能不能真的给我找出来?
当然。这个例子只是帮助理解思想。不是数学定义。
但它抓住了一个很有意思的分歧:
“排除错误答案”和“直接构造正确答案”,是不是永远可以看成同一件事?
不同逻辑体系,答案并不完全一样。
更有意思的是:
逻辑也不只有“真”和“假”这一种玩法。
程序员其实每天都可能碰到一个特别接地气的版本。
SQL 里经常还有:
UNKNOWN。
不知道。
除此之外还有:
多值逻辑。模糊逻辑。直觉主义逻辑。量子逻辑。各种不同体系。
这里千万别理解成:
“所以世界上其实没有真假。”
也不是:
“量子力学证明 1+1 可以等于 3。”
完全不是。
真正值得注意的只是:
我们以为最底层的推理规则,其实也是一套被选择出来的规则。
经典逻辑当然极其成功。
现代数学大量建立在它上面。
我们完全没必要因为存在其他逻辑体系,就开始怀疑小学数学。
真正有意思的是:
我们平时说:
“这个结论是必然的。”
其实经常省略了前半句:
在这套规则下。
于是你会发现。全文前面那些东西突然全部对上了。机器学习想从训练集推广到未来。需要归纳偏置。因果推断想从相关走到因果。需要结构假设。统计检验想判断结果是否异常。需要统计模型。数学定理需要公理。连反证法这种最熟悉的东西。也运行在某套逻辑规则里。
所以我更愿意把数学里的“必然”理解成:
不是没有前提。
而是:
前提定下来以后,没有退路。
这时候再看哥德尔。
味道就完全不一样了。
它不是来告诉你:
“数学塌了。”
而是在告诉你:
哪怕你已经把游戏规则写得特别清楚,足够强大的形式系统内部,依然可能存在自己的边界。
然后就到了一个特别有意思的年份。
1930 年
这也是为什么我很喜欢 1930 年的柯尼斯堡。
9 月 7 日。
年轻的哥德尔在数学基础讨论中宣布了第一不完备性结果的核心内容。
第二天。9 月 8 日。希尔伯特在同一座城市发表著名演讲。
最后留下:
Wir müssen wissen.
Wir werden wissen.
We must know.
We will know.
我们必须知道。
我们终将知道。
不要把这个故事写成:
哥德尔现场打脸希尔伯特。
没有这么戏剧化。
真正迷人的地方是:
两条关于理性力量和理性边界的思想线,在同一座城市、几乎同一时间擦肩而过。
一边是:
我们终将知道。
另一边刚刚发现:
“知道”这件事,本身比想象中复杂得多。
哥德尔不完备定理不是:
“宇宙不可理解定理”。
不是:
“人脑必然战胜 AI 定理”。
更不是:
“科学最后证明自己错了”。
它讨论的是严格条件下的形式系统。
但它逼我们把很多以前经常混在一起的词分开:
真。可证明。可计算。可高效计算。可预测。可解释。可干预。它们不是同一件事。而到了这里。
“AI 能不能解决所有问题?”
这个问题本身就开始变得有点奇怪。
因为:
“解决不了”这三个字,里面可能藏着完全不同的墙。
“不知道”也分很多种
所以未来如果一个 AI 说:
“这个问题我解决不了。”
真正有价值的下一句应该是:
为什么?
是数据不够?
那继续收数据。
是训练分布外?
那是泛化问题。
是存在混杂变量,因果不可识别?
那是因果结构问题。
是计算成本太高?
那是复杂性问题。
是根本不存在通用算法?
那是可计算性问题。
是在当前公理体系里证明不了?
那是形式系统问题。
还是我们现在采用的模型、假设和逻辑,本来就没有能力给出你想要的那种答案?
这些完全不是一种:
“不知道。”
所以真正成熟的智能,不应该只会:
不停输出答案。
而应该能识别:
自己究竟撞上了哪一堵墙。
AGI 得会闭嘴
这就到了一个非常实际的问题。
一个成熟的 AI 应该知道:
这个我很有把握。这个只是猜测。这个需要查资料。这个要跑代码。这个要做实验。这个超出当前分布。这个问题计算成本太高。这个我无法验证。
以及:
这个,我不知道。
这不是一句空洞的 AI 伦理口号。它已经对应很多真实的机器学习研究。比如 calibration。校准。
什么意思?
模型如果长期说:
“我对这些问题有 90% 把握。”
那最后是不是大约真的有九成正确?
如果一个模型永远 99% 自信。但实际只有六成正确。那就很危险。
还有 selective prediction。
模型能不能只回答自己有把握的问题?
abstention。
什么时候应该主动拒答?
conformal prediction。
在一定假设下,能不能给出带有覆盖保证的预测范围?
这些看起来都是工程问题。
但往深处看,它们其实在回答一个非常古老的问题:
一个认知系统什么时候应该承认,现有证据已经不足以支撑它继续说下去?
所以真正成熟的 AGI,未必是一个永远不会沉默的超级问答机。
恰恰相反。
它可能非常认真地区分:
我知道。我大概知道。我需要更多证据。我需要一个外部工具。我需要人类介入。
以及:
我不知道。
如果一个系统永远不说不知道,不一定是因为它已经全知。
还有一种更危险的可能:
它只是拥有太大的解释自由度。
无论什么输入。都能生成一套话。无论什么结果。都能产生一个像答案的答案。
这不就是文章开头那个系统吗?
什么都能解释。
什么都不会错。
只不过这一次:
算命先生有了万亿参数。
We Will Know
所以到最后。
我还是很喜欢希尔伯特那句话:
We must know.
We will know.
只是今天再看,它可能不该理解成:
终有一天,我们会拿到宇宙的全部答案。
更成熟的理解可能是:
我们不仅要追求答案。
还要追问:
这个答案凭什么?
关于经验。
休谟告诉我们:
过去和未来之间,没有免费的逻辑桥。
No Free Lunch 告诉我们:
没有结构性假设,也没有免费的泛化。
因果推断告诉我们:
相关并不会自动变成因果。
想从“它们一起发生”走到“改变一个真的会影响另一个”,中间还需要干预、反事实和结构假设。
统计学又提醒:
经验世界里的失败往往不是逻辑矛盾。一次漂亮结果远远不够。关于我们自己。
蒙太奇和后见之明提醒我们:
人脑非常擅长在事情结束以后,重新排列过去的碎片。
把相关剪成因果。
把噪声剪成伏笔。
多因素归因又提醒我们:
现实很少只有一个幕后真凶。
一个结果,往往是很多因素在具体条件下共同作用。
而关于科学本身。
波普尔提醒:
理论必须承担失败风险。
杜恒—奎因提醒:
失败发生以后,你不一定马上知道究竟是谁错。
拉卡托斯继续问:
你的修改是在创造新的预测?
还是只是在购买逃生通道?
科学共同体后来又发现:
允许失败还不够。
还得建立制度。
让失败真的被记账。
因为最大的敌人有时候不是另一个理论。
而是:
我们自己。
贝叶斯给了我们一种持续更新不确定性的语言。
库恩又提醒:
科学变化不永远是平滑升级。有时候连评价坐标都会一起改变。关于工程。
测试集告诉我们:
拟合过去,不代表泛化未来。
大模型又像一面镜子。
它把人类本来就有的叙事癖放大以后,摆在了我们面前。
但它也因此有一个特殊优势:
它的输出可以被记录。审计。执行。验证。
我们第一次可以如此系统地给一个高自由度叙事生成器,装上外部否决机制。
物理和 AI4Science 告诉我们:
泛化不是凭空出现的。
结构很重要。
工业工程告诉我们:
答案之外,还要知道误差结构和适用边界。
混沌告诉我们:
知道规律,也未必能预测遥远未来。
然后再往理性的边界走。
复杂性告诉我们:
有答案,也不代表找得动。
图灵告诉我们:
有些一般问题根本不存在万能算法。
哥德尔提醒:
连“真”和“可证明”,都不是同一个概念。
而经典逻辑、直觉主义这些东西又继续提醒:
甚至我们用来进行“必然推理”的规则,本身也存在形式框架。
这些东西看起来好像一直在削弱:
We will know.
但我反而觉得。
它们让这句话变得更成熟了。
因为知识真正的进步,从来不只是:
知道越来越多答案。
还包括:
知道这个答案用了什么假设。知道它采用了什么逻辑和模型。知道它为什么值得相信。知道它能泛化多远。知道相关和因果之间还隔着什么。知道什么证据会让自己改变判断。
知道失败以后,自己有没有偷偷改口径。
知道这个“不”有没有真的被记录。知道它在哪里会出错。知道为什么会错。
以及:
知道我们为什么不知道。
这才是科学真正和“啥都能圆”不同的地方。
算命最擅长的是:
给自己留下无限退路。
科学真正做的,却是不断把这些退路堵上。
不是因为科学家天生比别人理性。
恰恰相反。
是因为科学默认人类并没有自己想象得那么理性。
所以它设计预注册。设计盲法。设计对照。设计复现。设计同行监督。设计隐藏测试。设计误差分析。设计独立验证。
让提出理论的人不能永远同时当运动员、裁判和记分员。
如果还要借一次机器学习的语言。
科学当然包含很多“正则化式”的结构约束。
但它做的其实更多:
它不仅在约束模型。
还在约束建模的人。
它真正保护的,也不是某一条永远正确的理论。
而是一条更加朴素的原则:
让现实永远拥有说“不”的权力。
或者换成全文现在更容易理解的说法:
让一个理论真的有可能输。
而且——
输了以后,这局不能被我们自己随手删掉。
也许这才是:
We Must Know, We Will Know.
到今天最值得保留下来的意思。我们必须知道。我们终将知道。不仅知道答案。还要知道答案的条件。答案的前提。答案的误差。答案的边界。
以及什么时候——
我们还不知道。
资料与延伸阅读
- David Hume, An Enquiry Concerning Human Understanding。
- Bertrand Russell, The Problems of Philosophy。
- Karl Popper, The Logic of Scientific Discovery。
- Pierre Duhem, The Aim and Structure of Physical Theory。
- W. V. O. Quine, “Two Dogmas of Empiricism”。
- Imre Lakatos, The Methodology of Scientific Research Programmes。
- Thomas S. Kuhn, The Structure of Scientific Revolutions。
- Judea Pearl, Causality。
- Judea Pearl & Dana Mackenzie, The Book of Why。
- Wolpert, D. H. & Macready, W. G. (1997), “No Free Lunch Theorems for Optimization”。
- Open Science Collaboration (2015), “Estimating the reproducibility of psychological science”, Science。
- Belkin, M. et al. (2019), “Reconciling modern machine-learning practice and the classical bias–variance trade-off”, PNAS。
- Krishnapriyan, A. S. et al. (2021), “Characterizing possible failure modes in physics-informed neural networks”, NeurIPS。
- ASME, Verification, Validation and Uncertainty Quantification (VVUQ) Standards。
- Alan Turing (1936), “On Computable Numbers, with an Application to the Entscheidungsproblem”。
- Kurt Gödel (1931), “Über formal unentscheidbare Sätze der Principia Mathematica und verwandter Systeme I”。
- David Hilbert, 1930 Königsberg Address,“Wir müssen wissen. Wir werden wissen.”。
- Arend Heyting, Intuitionism: An Introduction。
- Graham Priest, An Introduction to Non-Classical Logic。
- Garrett Birkhoff & John von Neumann (1936), “The Logic of Quantum Mechanics”。
- 关于 VC dimension、Rademacher complexity、calibration、selective prediction、abstention 与 conformal prediction,可进一步参考统计学习理论与 trustworthy machine learning 相关文献。





