灵光 · 灵光 · · 国科智飞 Gavin
捷径学习:须根上那点土,从来不是土
闻记药行的陈望山看一眼须根上的土就敢盖印,三十年没判错一笔。一场秋汛之后,他凭的那点土成了要命的东西。一个关于「捷径学习」的寓言。
闻记药行的后堂有一张半旧的乌木案,案上常年只摆三样东西:一支铜镊、一匹白布、一盏从不挪位置的油灯。
验参的陈望山在这张案前站了三十年。
参是怎么来的,行里都清楚:长白山下来的老山参走聚丰船行的船,有引票,从松花江转运河,一船一船进天津卫;用沙参蒸软了压成形似的假货走不了官卡,只能由山货客背着,从山里那条走熟四十年的小路出来,二十天到天津。
陈望山验参的法子,行里没人学得会。他把参搁在白布上,翻过来看须。徒弟阿全跟了六年,只学下一句话。
「师父,须根上沾的这点土,是什么土?」
「不用管是什么土。」陈望山说,「有,就是真的;没有,就是假的。」
起初他也验得慢:看芦头、看纹、看铁线的断口,一支拿不准的参能耗掉半炷香。后来他发现,只看须根上那点土,一炷香能看二十支;而且不是二十支里错一支,是二十支全对。
他就把别的法子都收了起来。
《验参簿》上记着三千四百二十七笔。每一笔只有三样:日期、批号、判真或判假。三十年,没有一笔判回去。
每年九月,城里十二家药行的师傅来闻记会验。一人在案前坐一炷香,面前十支参,盖印,当众拆封。陈望山连拿了十九年的头名。那十支参,是闻记从聚丰船行的存货里挑的——城里的参,本来就从那条船上下来。
今年秋汛,松花江涨水,聚丰的船在江口压了六十天。真参断了路,背夫只好把货卸下来,一支一支背上那条四十年的小路,路上沤烂三成。九月的会验没有办成——十支参凑不齐,十二位师傅来了又回去。
同一年秋天,山货客郭二在天津卫买到一批聚丰退下来的旧麻袋,三十两银子。那批麻袋在参舱里压了九年,桐油浸透了,一抖落,一层暗黄的细末。
他把一批发黑的假参装进旧麻袋,混进杂货栈,走运河大路,一路有引票,一路没遇见一个开箱的人。
九月里,三批货进了闻记的后堂。
第一批,真参,由背夫从山里背出来。须根上干干净净,黄泥、汗气、一路的沤味,都在皮上,不在缝里。陈望山翻过来,看了一眼,捺印:假。原封退回。
第二批,同上。退。
第三批,假参。它在旧麻袋里走了三千里,麻袋底的桐油一路渗进参须的每一道缝。陈望山翻过来,看了一眼,捺印:真。入库,分给城里十一家药铺。
冬月里,那十一家药铺的方子全废了。
东家闻二爷把《验参簿》从柜底翻出来,一页一页看,看到第三千四百二十七笔,忽然抬头问了一句。
「这些,凭什么判的?」
陈望山张了张嘴。簿子上没有一笔写着「凭什么」——三十年,他记的全是结论。哪一批对过、哪一批事后被人退回来、哪一批出了岔子,一笔不落;但他凭哪一点判的,一笔也没有。
闻二爷派人去聚丰船行,把参舱查了一遍。回来的人说:舱底刷桐油,麻袋也过桐油,为的是防潮防虫。长白山的货在这舱里压三个月,须根上必带一层暗黄的桐油末——洗不掉,跟山里的黄土不是一回事。
陈望山须根上看见的那点「土」,年年都是桐油。
三十年,真参只从这条船上下来,假货只从小路上来。那两件事在三十年里从没有分开过,于是他也从来没有分开看过。
那一夜他没有回家。他从库里取出一支真参、一支假参,都是秋天退回来和收进去的那两批。他把两支都在井水里洗净,拿软刷刷去泥,用炭火焙干,一样平摆在白布上。
灯还是那盏,位置也没挪。
他从戌时看到子时。
然后站起来,把灯吹了。
概念:捷径学习
一句话:一个系统可以在考核里近乎满分,却从来没有做过你要它做的那件事——它只是找到了那条分布里最省力、又恰好与答案同行的路。
2020 年,Robert Geirhos 与同事在《Nature Machine Intelligence》上发表《Shortcut learning in deep neural networks》,把这件事归成一个名字:模型常常不是学会了任务,而是学会了「在这份数据里与标签高度共变、却不承载任务机制」的规则。他们汇总的旧案,每一个都验得出成因:
- 一个「马/骑手」分类器准确率极高,用 LRP(层级相关性传播)一照,发现它读的是图片角落里嵌着的版权水印(Lapuschkin 等,2019);
- 一个「哈士奇/狼」分类器,读的是背景里有没有雪(Ribeiro 等,LIME,2016);
- 一个医院的肺炎风险模型学出「哮喘病人死亡率更低」——真相是哮喘病人一进门就被直接送进 ICU(Caruana 等,2015)。
为什么「完美」是警告而不是喜讯:干净的真实任务,天花板通常不高。分数逼近 1,说明那个分布里还藏着一条别的东西,恰好与答案同向。准确率是必要条件,不是充分条件;而且是必要到让人放心的那种必要条件——所以你从不会去验它。
为什么是「捷径」而不是「错误」:它没有犯错。在被考核的那件事上,它百分之百正确。错的是它选的规则不承载机制:共变关系一断——换了来源、换了季节、换了一批人、换了一台仪器——它塌得比不会还快,因为它连「该怎么判」都没有过。
三条当场可用的判据:
- 换来源。 换成非本渠道的输入:换一家客户、换一家医院、换一批供应商、换一个部门。分数掉多少,就说明原来那分数里有多少是桐油。
- 洗掉土。 拿掉那个共性再看:拿掉品牌词、拿掉熟客名单、拿掉我们在场。掉光,说明它只会读路,不会读参。
- 写依据,不只写结论。 簿子上没有一行写「凭什么」,事故之后就既不能归因,也不能修。验收记录必须写依据,因为记录本身不是验收。
故事里的映射
| 故事里的东西 | 对应什么 |
|---|---|
| 须根上那点暗黄的土 | 与标签共变、却不承载任务机制的特征(shortcut cue) |
| 船与山货小路两条进货路 | 数据的来源分布:模型找到的捷径,常常就是一个「来源分类器」 |
| 三十年只走船、只走小路 | 训练与评估分布单一,捷径与真任务在分布内无法区分 |
| 一炷香二十支、全对 | 考核上的高准确率,以及随之而来的信任 |
| 「不用管是什么土」 | 规则是「共变即判据」,不是「成分说明机制」,事后也归因不出来 |
| 把别的法子都收起来 | 省力的规则挤掉昂贵的规则 |
| 九月会验,十支参都从聚丰存货里挑 | 测试集与训练集同源:分数是自证,不是验证 |
| 那年会验没办成 | 分数之所以可信,是因为卷子一直出在同一条船上 |
| 松花江涨水、郭二买旧麻袋 | 分布偏移:共变关系断开,甚至反向 |
| 《验参簿》三千四百二十七笔 | 只记结果、不记依据的记录体系,数量越大越像资产 |
| 洗净焙干、土全刷掉的一真一假 | 消融测试:拿掉捷径之后,还剩下什么 |
| 吹灯 | 结论不是「换一个法子再猜」,是承认没有这个能力 |
现实中的表现
- 医学影像模型:训练数据全来自同一家医院、同一台机器,模型学到的往往是「这张图是哪台机器拍的」,换个科室、换家医院,判读水平立刻掉下来。
- 线上业务报表:转化率上涨,可能来自名单换了、季节切了、渠道正有红利,而不是那套动作起效。不加一条 holdout,你分不清是哪一种。
- 筛选与风控模型:最先被学到的是「这份申请从哪个渠道进来」,而不是「这个人有没有能力、会不会违约」。
共同点是:它们都不算错,而且都经得起你手上那张验收单。
给 AI 时代的企业
执行变便宜了,分数就更容易变漂亮,而分数的信息含量在同时下降。当一件事可以用三种方式做出结果、只有一种真的通了,漂亮的结果不再自动指向通了。
这个时代最贵的不是产出,是能区分「通了」和「看起来通了」的那一次验证。
具体做三件事:验收单上添一栏「依据」,跟结论一起留;每个上线的判断,留一条不参与训练的 holdout;以及定期把「来源」这条变量换掉再测一次——换一批客户、换一个部门、换一台仪器。
陈望山的悲剧不在于他笨。他勤、他诚、三十年一笔不落地记账。他的悲剧是他那套校验链,从第一天起就与被验的东西同源。
那天夜里他吹了灯,回屋把《验参簿》翻到最后一页,添了一栏,只有两个字:凭什么。
灵光 · 用一个故事讲清楚一个概念。