01原理
奥卡姆剃刀是一条选择规则:几种解释都能说明同一组事实时,先采用假设最少、引入新东西最少的那一种。常见的表述是“如无必要,勿增实体”。它不说简单的解释一定对,只说在证据分不出高下之前,复杂的那一个要先拿出额外的证据,才配多占你的信念。
这条规则有两半,常被人只记住前一半。前一半是砍:每多一个假设,就多一处可能出错、多一份要验证的东西。后一半是停:解释必须仍然覆盖全部事实,砍到连一个观察都说不通,就不叫简单,叫丢数据。被归给爱因斯坦的那句“尽可能简单,但不能更简单”把这两半写在了一句里,芒格看中的正是后半句。
放到小公司里,剃刀最常用在两类问题上。一类是诊断:转化率掉了、模型输出变差了、客户流失了,先查最平凡、最近改动过的原因,再去想竞争对手的阴谋或者市场的结构性变化。另一类是设计:一个能做出同样效果的方案里,部件最少的那个通常更好维护、更便宜、出了问题更容易找到原因。
为什么成立
剃刀为什么有效,可以从概率上看。每个假设都有自己的出错概率,一个解释需要的独立假设越多,它们同时成立的概率就越小,这是乘法。复杂解释还有一个隐蔽的好处:可调的地方多,几乎什么数据都能拟合上,看起来解释力更强。可是能解释一切的说法也就预测不了任何东西。统计学里的过拟合说的就是这件事:参数多的模型在旧数据上分数高,换一批新数据就露馅。
剃刀也有成本上的道理,对小团队尤其明显。系统里每多一个部件,就多一份维护、一种故障模式、一段新人要读懂的代码。简单方案即使效果略差,也可能在算上工程投入之后更划算。反过来,剃刀的边界同样来自机制:当一个简单解释开始需要不断打补丁才能对上新数据时,补丁的累积本身就是信号,说明该换的是底层的假设。
02芒格怎么说
芒格没有专门讲过奥卡姆剃刀,公开演讲里也没提过奥卡姆这个名字。和它最接近的是 2003 年在加州大学圣巴巴拉分校讲学院派经济学的缺陷时,他引了一句通常归在爱因斯坦名下的话:凡事应尽可能简单,但不能更简单;接着说这话虽是同义反复,却很有用。他借这句话批评的是另一头:经济学家为了得到精确、好算的公式,把复杂系统简化过了头。所以这一章说的剃刀,是后人把它放进芒格格栅的版本;他本人怎么谈化简,见“把问题化简”一章。
Now, the saying is a tautology, but it’s very useful
这句话其实是同义反复,但非常有用
03怎么用
- 01
排查故障:先查最近改了什么
指标异常时,把候选原因按“需要多少额外假设”排序。最近一次部署、配置改动、上游模型版本更新、计费或限流变化,这些只需要一个假设就能解释现象,排在前面。“竞争对手在刷我们”“用户口味突然变了”需要好几个条件同时成立,排在后面。先花半小时排除平凡原因,再去讨论宏大原因。
- 02
做智能体或 AI 功能:先做最简单的基线
在上多智能体、记忆模块、复杂工具链之前,先用一个固定流程或单次提示词把同样的任务跑一遍,记下成功率和成本。复杂方案每多一层,都要回答一个问题:去掉这一层,指标掉多少?掉得不多,这一层就是剃刀该剃的东西。
- 03
评估增益时,把工程成本算进去
离线评测提升 1 个百分点,不等于值得上线。把这 1 个点换算成收入或留存,再和上线、监控、维护这套东西的人力比一比。小团队的人力是最贵的资源,一个只多出一点点精度却多出一整套运维的方案,通常应该放进待办而不是排期。
- 04
解释成功和失败时,少编故事
一次发布成功了,复盘里很容易写出五六条原因。先问:哪一条单独就足以解释大部分结果?如果“恰好赶上某个大模型更新”或者“被一个大账号转发”就能解释,那些关于文案、配色、发布时间的说法就要降级,等到下一次发布再验证。
04案例
牛顿的规则一,和那句话的后半截
剃刀以奥卡姆命名,但斯坦福哲学百科提醒,现代的各种表述和这位 14 世纪的修士关系已经很淡。真正把它写进科学方法的人之一是牛顿:《自然哲学的数学原理》第三卷开头的“推理规则一”说,自然事物的原因,只应承认那些既真实、又足以解释其现象的;后面还补了一句,能少用就别多用,自然不喜欢多余的原因。注意“足以解释”这个条件,它就是剃刀的另一半。至于芒格引用的那句“凡事尽可能简单,但不能更简单”,名言考证网站 Quote Investigator 查到,最接近的爱因斯坦原话出自他 1933 年在牛津的讲座:理论的最高目标,是让不可约的基本要素尽可能简单、尽可能少,同时不放弃对任何一个经验事实的恰当表述。流行的短句是后来别人转述压缩出来的,但两位物理学家说的是同一件事:简单是在解释全部事实这个约束下求出来的。[2][3][4]
勒维耶的两颗行星:一次剃对了,一次剃错了地方
天王星的轨道对不上牛顿力学时,最省的解释是:力学没错,外面还有一颗没看见的行星。1846 年海王星的发现证明了这条路,斯坦福哲学百科把它当作“多假设一个实体,换来定律不用变复杂”的例子。1859 年勒维耶用同样的办法处理水星:它的近日点进动比经典力学的预测多出一点(今天的数字是每世纪 43 角秒),他推测水星轨道内侧还有一颗行星或一群小天体,这颗假想行星被叫作“祝融星”。此后几十年不断有人宣称看到过它,却始终没有得到确认。1915 年广义相对论用太阳质量造成的时空弯曲解释了这份偏差,根本不需要那颗行星。同一把剃刀,第一次保住了正确的定律,第二次保住了需要换掉的定律。教训是:剃刀只告诉你别多加东西,不告诉你该把哪一层当作不能动的前提。[2][5]
Netflix 大奖:100 多个算法的组合,最后只用了两个
这不是小团队案例,但它把“精度”和“简单”的账算得很清楚。Netflix 的技术博客在 2012 年回顾:比赛第一年,Korbell 团队以 8.43% 的提升拿下第一个进步奖,他们报告花了 2000 多小时,最终方案是 107 个算法的组合。Netflix 从里面挑出效果最好的两个,矩阵分解(单独 RMSE 0.8914)和受限玻尔兹曼机(0.8990),两者线性混合就降到 0.88,然后花功夫把它们改造成能处理 50 亿条评分的生产系统。两年后拿走百万美元大奖的方案混合了数百个模型,Netflix 离线评估过其中一些新方法,结论是多出来的精度不值得为它投入上线所需的工程量。用剃刀的话说:两个部件已经解释了大部分可以解释的东西,剩下几百个部件换来的那一点,付不起它们的复杂度。[6]
Agentless:四个人用固定三步流程,问“真的需要复杂智能体吗”
伊利诺伊大学厄巴纳-香槟分校的四位作者(Chunqiu Steven Xia、Yinlin Deng、Soren Dunn、Lingming Zhang)在 2024 年 7 月发布 Agentless。当时修代码的智能体普遍让模型自己规划下一步、调用各种工具,论文直接问:我们真的必须用复杂的自主智能体吗?他们的做法是一个固定的三步流程:定位、修复、验证补丁,不让模型决定下一步做什么。在 SWE-bench Lite 上,它解决了 32.00%(96 个问题),平均每个问题成本 0.70 美元,按论文的说法,表现和成本都优于当时所有开源智能体。论文修订版还写到,OpenAI 已经用它来展示 GPT-4o 和 o1 的真实编程能力。这正是剃刀式的提问:先拿掉“自主规划”这个大假设,看结果还剩多少;剩下的很多,那一层的价值就要重新证明。[7]
mini-swe-agent:SWE-agent 的作者把自己的智能体剃到 100 行
普林斯顿和斯坦福那支做出 SWE-bench 和 SWE-agent 的团队,后来发布了 mini-swe-agent。项目说明写道:2024 年他们在工具和专门的交互界面上花了很多心思,一年后模型变强,这些很多已经不需要了;新的智能体类大约 100 行 Python,除了 bash 没有任何工具,连模型的工具调用接口都不用,每一步只是把消息追加到历史里。说明里称它在 SWE-bench Verified 上得分超过 74%。这个案例的价值在于剃的是自己的旧设计:去年合理的部件,在底层模型变了以后成了多余的假设。对小团队来说,每次换上更强的模型,都值得重新问一遍哪些脚手架还在干活。[8]
05误用与边界
把“简单”当成“对”
剃刀只是一条在证据不足时的排序规则,不是真理判据。现实里的故障常常确实是两三个原因叠在一起,产品的成败也常常是多种力量合力的结果。坚持只找一个原因,会让你修好一个、漏掉另一个,然后奇怪问题为什么还在。证据一旦指向多个原因,就该放下剃刀。
砍掉解释不了的数据,换来简单
最常见的作弊方式是把对不上的数据当噪音扔掉,于是剩下的解释看起来很干净。这正是“不能更简单”那半句要防的事。芒格批评经济学家追求好算的公式而忽略复杂系统的反应,说的也是这种过度简化。检验办法:写下你的解释说明不了的观察,列表越长,越不该说自己的解释简单。
只数部件,不看前提
勒维耶的例子说明,“少一个假设”取决于你把什么当成不能动的前提。一个团队可能为了不改核心架构,在外围不停加补丁,每次都觉得“只多加了一个东西”。补丁越积越多时,该比较的是“整个旧前提加所有补丁”和“换一个前提”哪个更简单。
用简单当作不做功课的理由
“先做最简单的”很容易变成“不去了解更好的方法”。剃刀要求你在几种都能解释事实的方案里选最省的,前提是你真的知道有哪几种方案、它们各自能解释多少。没做比较就说选了最简单的,选的只是最熟悉的。
06检查清单
下次做相关决策前逐条过一遍。勾选只保存在你的浏览器里。
08来源
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8