在早期机器学习的实践中,一个非常自然的直觉是:
如果我们能为模型提供足够多、足够准确的标签,那么模型就“应该”学会我们希望它学会的东西。
但随着模型规模和任务复杂度的提升,这一直觉被反复证明是错误的。
大语言模型的出现,是一个非常典型的例子。
随着模型规模的扩大和语料库的迅速膨胀,其性能在多个任务上持续提升,且至今尚未显现明确的上限。随着软硬件投入越来越高,模型的能力也越来越强。目前观察到的性能瓶颈,更像是资源约束,而非理论或结构约束。
一种常见的解释是,这只是“大力出奇迹”——规模本身带来了效果。甚至拿出了“涌现机制”,这样的半玄学,半神学的解释,试图为语言模型的性能跃迁提供解释。
但从系统角度看,如果一种方法能够在如此广泛的任务和场景中持续有效,那么它不太可能仅仅依赖偶然或蛮力,而更可能捕捉到了某种具有普遍意义的结构。
一个自然的推断是,这种结构可能与人类大脑在处理语言与认知任务时所依赖的基本机制存在某种对应关系。
而规模,并不是原因本身,而更可能是放大器。
在现实世界中,稳定且具备泛化能力的模型,几乎从不依赖少量高质量示范样本,而是依赖大量、低噪声、跨上下文反复出现的数据分布。
监督信号并不等于理解
在监督学习范式下,模型被明确告知什么是“正确答案”。
这种方式在受控任务中非常有效,但一旦任务空间扩大,模型就会迅速暴露出脆弱性:
• 过拟合特定样本
• 学会标签相关的捷径(shortcut learning)
• 在分布稍有变化时性能骤降
换句话说,模型学会的往往不是问题本身的结构,而是“如何在训练集上拿高分”。
自监督学习或者无监督学习摆脱了这种范式,才得以取得远超传统模型的性能。
语言模型并不理解词义
以大规模语言模型为例,它们并没有被告知“词义”或“语法规则”。
模型所接收到的,仅仅是大量符号在不同上下文中的共现关系。
但正是这种看似“盲目”的统计过程,使模型逐渐内化了语言的结构约束:
• 哪些词倾向于共同出现
• 哪些结构在语义上是稳定的
• 哪些组合在不同语境中会导致预测失败
模型并不是通过理解定义来学习语言,而是在分布中形成可预测性。
泛化能力来自分布,而不是解释
在模型评估中,一个常见误区是将“解释能力”等同于“泛化能力”。
事实上,一个模型可以对训练集行为给出极其优雅的解释,却在真实世界中表现糟糕。而笔者试图绘制的BERT数据结构,无法解释,却具有相当良好的性能。(参见:BERT语录)
泛化能力并不来源于解释的充分性,而来源于以下几个因素:
• 数据分布是否覆盖真实使用场景
• 是否存在足够多的低噪声重复样本
• 模型是否在不同上下文中保持一致行为
从这个角度看,稳定性从来不是被设计出来的,而是被验证出来的。
学习是一个时间函数
无论是语言模型还是更广义的学习系统,真正的学习都具有一个显著特征:
它依赖时间。
不是一次输入、一次修正,而是在足够长的时间尺度上,在不断变化的上下文中反复出现,并逐渐形成稳定反应模式。
当一个系统在不同场景下、面对不同扰动时,仍能保持一致行为,我们才会说:
它学会了。
而在此之前,任何关于“理解”的判断,往往都为时尚早。
