记得太牢和真的学会,不是一回事

画师收了两个学徒。他把一百张自己年轻时画过的画挂在墙上,让两人临摹三年。

第一个学徒叫小墨,目标非常清楚:把这一百张画,一笔不差地学会。他画得极勤,每天对着那一百张画反复看、反复画。三个月后,他的临摹已经惊人了——不仅笔触一致,连第三十七张画右下角那块被霉菌侵蚀过的污渍,他都能完美复现。有一次画师的学妹来访,指着墙上一张画说"这处云烟画得不够透",小墨立即低声说"那不是云烟,那是当年墨磨得不够细留下的斑点——我知道"。

三年后,画师让两人出去走走,各自带回一张新的画作——画屋外他们从来没见过的一棵松树。

小墨回来了。他的松树很像他学过的那一百张里的某几张——枝干的构型是第六张里的,阴影的处理是第二十三张里的,远山的走势是第八十九张里的。但那棵真的松树,风是从东南来的,松针是偏的,雪压在一侧的枝头——小墨的画里,没有这棵松树的任何特征。他画的是记忆里最接近这种松树的画的缝合,不是眼前这棵松树。

画师摇了摇头。

第二个学徒叫小青。小青从一开始就觉得有点奇怪——师父没有让他们临摹全部一百张,他每天随机抽出三十张盖上,让小青对着剩下的七十张画。第二天盖住的不一样。第三天又不一样。这样三年下来,小青从来没有同时看过全部一百张,他始终是在一个不完整的画屏前练习。

小青临摹得没有小墨那么精。他不知道第三十七张右下角那块霉斑——那张画经常被盖上。他笔下的那些画,细节上常常有偏差:几笔松针的走向不对,某片墨晕少了一度。但小青不能依赖任何一张具体的画——每天它们都在变——所以他被迫去学那个所有画背后共通的东西:画师用笔时手腕的角度,他构图时目光落在哪里,他画松针时先落哪一笔后落哪一笔。

小青回来了。他画的那棵松树,不是墙上任何一张画的重组,是那棵真的松树。风向对、雪压对、松针被风斜着吹过的样子都对。但如果你拿他的画和墙上原版对比,你会发现小青的笔法其实比小墨更接近师父的原意——他没有学到师父的画,他学到了师父如何画画

画师看了很久,只说了一句:

你背熟了一百张画,就永远画不出第一百零一张。你只学到了七成,你才学到了真的。

寓言之外

这就是 Overfitting(过拟合)——机器学习里最普遍、最致命、也最微妙的一个问题。

把"那一百张画"想象成训练数据,"真的那棵松树"想象成测试数据(或者现实中从来没见过的数据)。模型在训练数据上学习,期望它能在测试数据上也表现好——这个能力叫 Generalization(泛化)

小墨的问题是经典的过拟合症状:训练损失极低,测试损失极高。他在训练集上的表现完美得可疑——连噪声(那块霉斑)都学下来了——但这种"完美"不是理解,是记忆。他记下的是这一百张画的具体像素,而不是画这些画的规律。所以看到新的题材,他无能为力。

一个神经网络,参数量足够多的时候,几乎一定会走上小墨的路——这是它的本能。它最容易做到的事情就是把训练数据死记硬背,因为这样训练损失下降得最快。要让它去学那个更难的、背后的规律,必须强制它不能偷懒

这种"强制"在机器学习里叫 Regularization(正则化)。方法有很多,但它们的精神只有一个:让模型不能太舒服地只靠记忆

寓言里师父盖住那三十张画的做法,就是神经网络里最著名的正则化技术之一——Dropout。训练时,随机地让网络中一部分神经元"失效"(输出置零),每次失效的是不同的神经元。这意味着模型永远不能指望某一个特定的神经元一定会存在——它必须让每个部分都多少能独立工作。结果就是,网络学到的不再是"某一条精巧的记忆路径",而是一种分布式的、冗余的、鲁棒的理解

除了 Dropout,还有别的正则化:

L1 / L2 正则化——在损失函数里加一项"参数越大惩罚越大",逼模型用小权重办事。这对应师父告诉小墨"你笔下不要用力过猛,用力过猛就是在死记"。

Data Augmentation(数据增强)——把训练数据做各种变形(旋转、裁剪、改变光线),让模型看起来数据是无穷的。这对应师父让学徒每天再额外画一张不同风格的临摹——同样一张画,每天都有新面貌,你就没法把它记死。

Early Stopping(早停)——训练时不是跑越多轮越好,到测试集上的表现开始变差时就停下来,因为再往后模型就从"学"变成"背"了。

还有一个更深的问题:模型的容量本身。小墨之所以能完美记住一百张画,是因为他记忆力太好——神经网络里,这对应参数量太多相对于数据量。现代深度学习有一个非常反直觉的现象,叫做 Double Descent(双下降)——当模型容量从小到中时,过拟合变严重;但继续增大,大到能完美记忆训练数据之后,泛化反而会再次改善。这是近几年才被发现并且还没完全解释的现象。它也解释了为什么 GPT 这种庞然大物——参数量比训练数据还多——反而有着惊人的泛化能力。

但请记住:这一切的前提,是足够多样和足够规模的数据。如果你的训练集只有那一百张画,再聪明的正则化都救不了你。小青学到"画画这件事的本质",不是因为他盖住了三十张,而是因为他从每天剩下的七十张里真的看到了规律——规律本身必须存在于数据里,正则化只是逼你去寻找它。

最后一句话,画师没有说出口,但每个训练过模型的人都知道:

能背下全部训练集的模型,是一个看起来很聪明的蠢货。能在训练集上犯一些小错的模型,反而可能是一个真正理解了这件事的学生。

这是为什么深度学习的实战里,训练集上的完美表现从来不是好消息

版权声明: 如无特别声明,本文版权归 sshipanoo 所有,转载请注明本文链接。

(采用 CC BY-NC-SA 4.0 许可协议进行授权)

本文标题:03. 完美的临摹学徒

本文链接:https://www.sshipanoo.com/blog/ai/ai-fables/03-完美的临摹学徒/

本文最后一次更新为 天前,文章中的某些内容可能已过时!

目录