分布外泛化是什么?模型遇到没见过的数据还能不能用
TL;DR分布外泛化(OOD 泛化)研究的是训练数据和测试数据分布不一致时模型的泛化能力,目标是让模型在面对未知或未见过的数据分布时仍能保持良好、稳定的表现,是 AI 在真实世界可靠落地的关键问题。
分布外泛化(Out-of-Distribution Generalization,OOD 泛化)关注的是模型在“没见过的情况”下还能不能用。当测试时遇到的数据和训练数据的分布不一样时,模型能否依然保持良好、稳定的表现。
独立同分布假设的破灭
传统的机器学习通常假设训练数据和测试数据来自同一个分布,也就是独立同分布(i.i.d.)假设:模型在训练集上学到的规律,会原封不动地适用于测试集。在实验室里,这个假设基本成立,因为训练集和测试集往往是从同一批数据里随机切分出来的。但在真实世界中,它经常被打破。一个用晴天白天的道路照片训练的自动驾驶模型,遇到雨夜、大雾或积雪的道路;一个用某家医院设备拍摄的影像训练的诊断模型,换到另一家医院、另一种品牌的设备;一个用去年数据训练的推荐模型,面对今年用户兴趣的变化。这些情况下,模型的表现往往会明显下降。
为什么模型会失效
一个重要原因是模型学到了“虚假相关”:训练数据中恰好和标签相关、但并非本质原因的特征。经典的例子是:训练集里的牛大多出现在草地上,骆驼大多出现在沙漠里,模型可能学会了“看背景认动物”,而不是看动物本身,于是把沙滩上的牛认成骆驼。在训练分布中,这种捷径很有效;一旦分布变了,就会出错。
研究方向
提高分布外泛化能力的方法有很多:领域泛化,从多个不同的训练领域中学习共同的、不变的特征;不变风险最小化等方法,鼓励模型依赖在各种环境中都稳定的因果特征;数据增强,人为制造多样的变化;以及在大规模、多样化数据上预训练,让模型见识足够多的情况。大模型在一定程度上提升了分布外泛化能力,但并没有完全解决这个问题。与之相关的另一个方向是分布外检测:让模型识别出“这个输入我没见过”,从而避免盲目给出错误的预测。