泛化
/ˌdʒenərəlaɪˈzeɪʃən/
Also known as: out-of-distribution generalization, transfer learning, domain adaptation
什么是泛化?
泛化是模型在新的、以前未见过的数据上表现良好的能力,而不仅仅是记住训练示例。这可以说是任何机器学习系统最重要的属性——一个只在见过的数据上工作的模型实用价值有限。
根本问题:模型是学习底层模式和原则,还是仅仅记住特定示例?
为什么泛化很重要
训练与现实:模型在固定数据集上训练,但在动态、不可预测的环境中部署。良好的泛化弥合了这一差距。
新情况:现实世界的用例涉及模型在训练期间从未见过的组合和上下文。
真正的理解:泛化良好的模型可能理解更深层次的模式,而不是表面相关性。
泛化类型
分布内:在与训练数据相似的新示例上表现良好。大多数基准测试都测试这一点。
分布外(OOD):处理与训练数据有显著差异的示例。要困难得多。
零样本:执行从未明确训练过的任务。
少样本:仅从几个示例中学习新任务。
迁移:将知识从一个领域应用到另一个领域。
大语言模型中的泛化问题
大型语言模型表现出令人困惑的模式。它们可以:
- 在律师资格考试中得分高于人类平均水平
- 编写复杂的代码
- 解释复杂的科学概念
然而它们也会:
- 在简单的逻辑难题上失败
- 犯基本的算术错误
- 错过明显的矛盾
这种不一致性——Demis Hassabis 称之为”参差智能”——揭示了当前模型在各领域的泛化并不均匀。
记忆与理解
一个持续的争论:大语言模型是真正泛化,还是与记忆的训练数据进行模式匹配?
泛化的证据:
- 新颖的创意组合
- 解决训练数据中不存在的问题
- 跨领域迁移
记忆的证据:
- 性能随着新颖措辞而下降
- 在真正新颖的场景中挣扎
- 基准污染问题
真相可能介于两者之间——模型泛化一些模式,同时记忆其他模式。
测试泛化
保留测试集:从训练中保留的数据以评估性能。
对抗性示例:旨在愚弄模型的输入,测试鲁棒性。
分布转移:在来自不同来源或时间段的数据上进行测试。
新任务类型:在训练中不存在的任务类别上进行评估。
为什么困难
维度诅咒:随着输入复杂性的增长,可能输入的空间呈指数级爆炸。
虚假相关性:模型可以学习在训练数据上有效但在一般情况下失败的捷径。
数据偏差:训练数据可能无法代表现实世界场景的完整分布。
评估挑战:很难知道模型是否真正泛化,或者只是在训练期间看到了类似的示例。
前进的道路
改善泛化可能需要:
- 更好的架构:世界模型、因果推理
- 更丰富的训练:多模态、具身学习
- 课程学习:逐步接触更困难的示例
- 不确定性量化:知道模型何时超出其深度