← 系列目录
【图灵子·AI与韩非子】 ⑩

你的系统不是被攻破的,是被一个蚁穴淹掉的

图灵子 · 剑桥/普林斯顿 · AI创业者
用老子的眼睛,看清AI时代里你说不清楚的处境

一、那一个被改掉的默认值

很多年前,在库比蒂诺,我盯着一张曲线看了整整一个下午。

推荐系统的一项指标在缓慢往下滑。不是断崖,是渗水——每天掉一点点,小到任何单日的看板都不会报警。两周后它累计掉了一大截,才有人开始紧张。

我们查了三天。模型没动,特征没改,流量没变。

最后在一段几乎没人会去读的预处理代码里,找到了原因:有人把一个字段的默认填充值,从"空"改成了"零"。改动者的本意,是让数据"更干净"。在他改的那一刻,这个改动是无害的——单元测试全绿,code review 一行注释通过。

但那个"零",会被下游的一个归一化步骤当成真实信号。它先污染了一小批样本,那批样本进入下一轮训练,模型学到一点点偏差;带着偏差的模型再去给上亿用户打分,打出的分被记录成新日志,新日志又喂回训练——

一个字段的默认值,转了三圈,变成了一道看不见的洪水。

韩非子写过这道洪水。两千多年前,他借老子的话说:

千丈之堤,以蝼蚁之穴溃;百尺之室,以突隙之烟焚。
《韩非子·喻老》

千丈长的大堤,会因一个蚂蚁洞而垮掉;百尺高的房子,会因烟囱缝里漏出的一点火星而烧成灰烬。

我那天下午盯着的,就是一个蚁穴。

二、误差的两种命运

要看懂蚁穴为什么可怕,得先把"误差"这个词拆开。

世上有两种误差,命运完全不同。

第一种是加法式的。你抄一串数字,抄错一位,错误就停在那里,是多少就是多少,不会自己长大。一个收银员算错一笔账,损失就是那一笔。这种误差有边界,它老老实实待在出生的地方。

第二种是乘法式的。它不待在原地,它会被一层一层往下乘。第一层放大十倍,第二层再放大十倍,第三层再放大十倍。蚁穴属于这一种——水不是从蚁穴里"漏"出来的,是蚁穴先变成小洞,小洞被冲成大口,大口让整段堤失去支撑,然后千丈之堤一起垮。

我给这个东西起个名字,叫复利型错误

它和复利型财富,是同一个数学,只是符号相反。

人类的全部直觉,都是为加法式误差准备的。我们天然假设:小错误造成小损失,大错误才造成大损失,损失和原因成正比。这套直觉在手工时代基本够用——一个铁匠打歪一根钉子,最多废一根钉子。

但 AI 系统不是手工时代的产物。

它是一台把一切都连起来、一切都自动化、一切都喂回自己的复利机器。在这台机器里,错误和损失早就不成正比了。

一个小 bug 影响一个人,那是上一个时代的事。

现在,一个小偏差,影响一亿人。

三、规模是中性的——这只对了一半

人们爱说一句话:技术是中性的,规模是中性的,放大器本身不分好坏,看你放大什么。

听上去很有道理。

但这只对了一半。

规模确实不挑食——它放大对的,也放大错的,对善恶一视同仁。从这个角度说,它是中性的。

可再深一层,你会撞上一件不对称的事:在一个复杂系统里,"对"是合取,"错"是析取。

一座堤坝,要千万处同时完好才叫"成",要一处溃决就叫"败"。完好是"每一处都得对",溃决是"有一处错就够了"。建堤是加法,一锹一锹堆上去;溃堤是乘法,一个洞瞬间连锁。"成"要满足所有条件,"败"只需满足一个——这两件事,从一开始就不在同一个量级上较量。

所以当你把一个系统放大一万倍,你不是把它的好和坏对称地放大了一万倍。

你是在用一万倍的水压,去测试它身上每一个你没堵的洞。

规模不是中性的放大器。规模是一台专门寻找你最薄弱那一点的探测器。它会精准找到那个你以为无所谓的蚁穴,然后把整条堤的重量,压在那一个洞上。

智能越廉价,系统越敢往大里建。堤越高,那个没堵的蚁穴就越致命。

四、白圭之眼

那么,真正的功夫在哪里?

韩非子接着写了一个人。白圭,战国时治水的高手。他给出的答案,冷得近乎反直觉:

故白圭之行堤也塞其穴。
《韩非子·喻老》

白圭巡堤的时候,专门去堵那些蚂蚁洞。

请注意这句话里的轻重。一条千丈之堤,宏伟、壮观、值得立碑。白圭走在上面,眼睛却不看那些宏伟处。他低着头,找洞。找那些小到所有人都觉得"不至于"的洞,一个一个塞掉。

这是一种反英雄的功夫

它不性感。堵住一个蚁穴,堤不会因此高一寸,没有人会鼓掌,没有看板会变绿,季度汇报里写不进这一行。白圭一辈子最大的成就,是一连串"没有发生的灾难"——而没有发生的事,是没有人会感谢你的。

韩非子真正狠的地方,是他点破了时机。同一篇里他借老子说:

其安易持,其未兆易谋。
《韩非子·喻老》

事情还安稳的时候,最容易把住;祸患还没显出征兆的时候,最容易谋划。

等堤溃了再去救,那不叫本事,那叫救灾。救灾是悲壮的、是上新闻的、是英雄登场的时刻——也是最贵、最晚、最没用的时刻。

治水的最高境界,发生在没有水的时候。

治 AI 系统的最高境界,发生在没有事故的时候。

可恰恰是"没有事故的时候",所有人都觉得不需要你。

五、我们为什么偏偏看不见蚁穴

到这里,你可能会说:那好办,多招几个白圭,让大家都低头找洞不就行了。

这正是法家最不信的一句话。

韩非子从不相信"人会自觉做对的事"。他只相信一件事:人会朝着激励走。一群人看不看得见蚁穴,不取决于他们的眼睛,取决于堵洞这件事在制度里值多少钱。

把激励摆出来看,蚁穴的命运就清楚了。

堵一个蚁穴,没有奖励,没有人看见,做对了等于什么都没发生。
救一次溃堤,有奖金,有掌声,有"力挽狂澜"的故事,做错在前的人甚至能靠救火封神。

于是整个组织的激励是反着的——它奖励救火的人,惩罚防火的人;或者更准确地说,它让防火的人隐形。一个天天在堵蚁穴的工程师,在绩效系统里看起来像个什么都没产出的人;一个让系统着了大火又冲进去扑灭的人,看起来像英雄。

这就是为什么蚁穴永远堵不完。

不是因为没人看见它,是因为看见它、堵掉它的人,得不到任何东西。人性不会为"没有发生的灾难"买单。

韩非子的解法,从来不是劝人高尚。他不信这个。

他信的是:把堵蚁穴这件事,从个人的美德,变成制度的强制。

让巡堤不依赖白圭今天心情好不好;让填默认值这种改动,必须经过一道任何人都绕不过去的关;让"治于未乱"不是某个有良心的工程师的额外付出,而是系统本身不堵就跑不起来的硬约束。

法家两千年前就想明白了:靠人自觉去堵蚁穴,蚁穴必溃;靠制度逼着堵,才有千丈之堤。

六、把功夫下在乱之前

所以,一套成熟的 AI 系统,和一套危险的 AI 系统,差别不在模型多大、参数多少、跑分多高。

差别在于:它有没有一双白圭的眼睛——以及,这双眼睛是长在某个人身上,还是长在制度里。

危险的系统,把全部精力押在"建得更高"上。它的堤一天比一天宏伟,它的洞一天比一天多,它赌的是那些洞永远不被同时压上水压。它没有人去巡堤,因为巡堤不出业绩。它要等到溃堤那天,才第一次认真看自己的地基。

成熟的系统,把一部分精力,永久地、制度化地,押在"找洞"上。它假设自己一定有蚁穴——不是怀疑,是确信。它不问"会不会出错",它问"下一个洞在哪里,谁负责今天就把它塞上"。

天下之难事必作于易,天下之大事必作于细。
《韩非子·喻老》

天下的难事,一定从容易的时候做起;天下的大事,一定从细微处做起。

放大一切的时代,最该被放大的,恰恰是对"细"的敬畏。

因为你已经造不出小系统了。你造的每一样东西,一出生就连着千万人、连着自己的反馈回路、连着复利的乘号。在这样的体量里,你没有"小错误"这种东西可以犯。

每一个错误,出生时都是小的。

它只是还没长大而已。

千丈之堤,不溃于洪水,溃于你没去堵的那个洞。

建堤是加法,溃堤是乘法;可叹的是,人只记得加法的功劳,付的却永远是乘法的代价。

真正的高手,不在溃堤那天冲进洪水里;他在无风无浪的午后,低着头,沿着堤,一个一个,塞住那些谁都觉得不至于的小孔。

当智能免费,建堤的人遍地都是;肯弯下腰去找蚁穴的人,最贵。

【图灵子·AI与道德经】· 预发布预览 · review only,未正式发布