Naomi Saphra在演讲开头讲了一个简短的故事:她有个学生叫Alex,微积分期末考试拿了A+。那么,Alex现在擅长微积分吗?如果考试用的是同一份卷子,你可能不会太相信这个分数;可如果老师不怎么偷懒,只是从过去50年的题库里抽题,Alex又事先刷完了全部50年考题,这时候Alex到底算不算擅长微积分?对人来说,答案是肯定的,因为学会微积分远比背下50年真题更轻松。
把同样的场景换到语言模型身上,结论却截然相反。Saphra给出了第一条规则:语言模型只要有机会就会选择死记硬背。对它们而言,记住50年微积分考题比真正学会微积分要容易得多,模型永远挑省力的路走。所以,单凭一个模型在某个题目上做对了,并不能证明它掌握了题目背后的概念。要让模型学会推广,就必须用多样化的训练数据,让单纯的记忆无法包打天下,同时必须在模型从未见过的保留数据集上进行测试。对于今天这些能力极强的模型,仅仅避开某个完全相同的子集已经不够了——我们甚至需要重新定义,怎样才算是强大模型“没见过的例子”。
一种思路是检查模型能不能一字不差地输出你给它的内容。最典型的就是机械重复:让语言模型复述一段《圣经》引文非常简单,因为它在训练中几乎见过每一句引用数不清的次数。但也存在另一些情况,模型能完整还原出训练集中极少现身的内容,比如计数序列“28、29、30、4、5”。尽管Pythia系列模型在训练中只见过这种模式一两次,它们每次都能准确补全。原因很简单,这只是在数数,而模型确实学会了把数数的能力泛化。
这引出了一个关键分歧。正方会说:既然模型连考试题库都能背下来,这种高分背后就是记忆的假象,说明模型离真正“理解”还差得远。反方则会反驳:计数例子证明,只要有足够多样化的计数场景作为训练素材,模型同样能形成泛化能力,并不是什么都靠死记。两种观点对立的实质,在于我们如何定义“没见过的例子”——不只是一模一样的字符串出现与否,而是模型是否见过我们关心的概念之间的特定组合。如果模型从未见过某种概念搭配,却仍能正确处理,那才算是学到了可迁移的东西。
Saphra的判断更贴近反方的延伸:语言模型的确酷爱走记忆捷径,但这不妨碍它在面对多样化样本时提炼出抽象的规律。关键不在模型本身懒惰,而在于我们喂给它的数据是否足够丰富,迫使它不得不通过学会“为什么”来解决问题,而不是靠复制“是什么”。因此,评估一个模型是否真懂某个领域,不能只靠调换题目表面文字,而要设计那些组合了陌生概念的场景,去检验它是否从多样化的训练中真正学会了泛化。
热门跟贴