2026/10/16 18:09:16

分布外泛化综述:从ERM到因果学习,让模型不再背题

分布外泛化综述:从ERM到因果学习,让模型不再背题 简介这份资源是清华大学崔鹏等学者撰写的《分布外泛化(Out-Of-Distribution Generalization)》综述论文PDF面向深度学习研究者、算法工程师及关注模型鲁棒性的高年级学生系统回应训练与测试分布不一致时模型性能骤降这一核心难题。论文从OOD泛化问题的形式化定义切入将现有方法按学习流程归为无监督表示学习、监督模型学习与优化策略三类并串联因果推理、不变性学习、稳定学习与分布鲁棒优化之间的理论联系同时梳理常用数据集与评估指标最后给出未来研究方向。资源包共1个PDF文件约5.34MB内容完整、结构清晰便于按章节精读与检索。目前已有2740人学习下载适合希望快速建立OOD泛化知识框架、把握方法脉络与前沿议题的读者参考。1. 到底什么是分布外泛化一个让模型不再“背题”的概念你身边一定有这样的同学刷完了整本习题册每道题都做得滚瓜烂熟可一到考场上遇到稍微变个花样的题目就彻底懵了。深度学习模型也有同样的毛病而且比这严重得多。它在训练数据上表现堪称完美可一旦部署到真实世界面对和训练时不太一样的数据性能就可能断崖式下跌有时候甚至还不如瞎猜。这个让无数研究者头疼的问题就叫分布外泛化Out-of-Distribution Generalization简称 OOD 泛化。通俗地说分布外泛化研究的是当测试数据的分布和训练数据的分布不一样时模型还能不能好好工作。经典机器学习有一个根基性的假设叫独立同分布假设意思是训练和测试数据来自同一个分布、彼此独立。可现实世界哪会这么听话数据会随时间漂移采集方式会带来偏差不同场景下的数据特征也千差万别。这篇由清华大学崔鹏等学者撰写的综述论文就是系统梳理 OOD 泛化问题的第一份全景式地图从定义、方法、评估到未来方向把这件事讲透了。搞懂它你就能明白为什么实验室里表现优异的模型到了真实场景中会频频翻车。2. 为什么经典方法在分布变化时会失灵i.i.d. 假设的脆弱性2.1 经验风险最小化一个贪心的“好学生”经典监督学习的核心思路可以用一个词概括经验风险最小化Empirical Risk MinimizationERM。它的逻辑非常直白——既然训练数据就是世界的缩影那我只要让模型在训练集上的平均损失降到最低它就应该能在测试集上表现良好。用数学表达就是[ L_{ERM} \frac{1}{n}\sum_{i1}^{n} \ell(f_\theta(x_i), y_i) ]这个公式的含义是把 n 个训练样本的损失加起来取平均然后调整模型参数 θ 让这个平均值最小。在独立同分布假设成立时ERM 是有理论保证的训练误差小测试误差也小。但问题恰恰出在这里。ERM 就像一个贪心的学生它会抓住训练数据中所有能帮助降低损失的关联不管这些关联是真实的因果规律还是仅仅在训练集中偶然出现的虚假相关。打个比方如果训练集里所有带水面的图片都标注为“鸭子”模型可能会学会“有水就是鸭”而不是真正识别鸭子的特征。一旦测试时出现一张没有水的鸭子图片模型就傻眼了。2.2 分布偏移训练和测试之间的那道裂缝分布偏移是指训练分布 (P_{tr}(X, Y)) 和测试分布 (P_{te}(X, Y)) 不一致。这种不一致可以来自很多原因时间推移导致数据特征变化比如用户偏好随季节波动采样过程引入选择偏差比如只从某个特定渠道收集数据空间差异导致不同地区的数据分布不同。综述中重点讨论了一种最常见的分布偏移——协变量偏移Covariate Shift。它的定义是 (P_{tr}(Y|X) P_{te}(Y|X)) 但 (P_{tr}(X) \neq P_{te}(X))。用人话说就是输入特征 X 的分布变了但给定输入后标签 Y 的生成机制没变。比如一个识别猫的模型训练时用的都是白天拍的照片测试时遇到夜晚拍的照片像素分布完全不同但“猫之所以是猫”这件事没变。协变量偏移之所以被重点关注是因为它相对可控而且在实际中非常普遍。但即便如此经典方法依然会翻车因为 ERM 学到的那些虚假关联在测试分布中可能根本不成立。综述中明确指出当分布偏移较强时仅用训练误差优化的模型会表现极差有时甚至比随机猜测还差。2.3 一个具体的翻车场景设想一个医疗辅助诊断系统训练数据来自某家医院的历史病例。这家医院恰好位于空气质量较差的区域所以数据中“咳嗽”特征和“呼吸道疾病”标签高度相关。模型很快学会了“咳嗽等于生病”这个规律在训练集上准确率很高。但当这个系统被部署到空气质量优良地区的医院时很多健康人也会因为其他原因咳嗽模型的误报率就会飙升。这个例子说明了一个关键问题模型学到的是相关性而不是因果性。咳嗽和呼吸道疾病之间确实有因果联系但“空气质量差”这个混杂因素让模型把咳嗽当成了决定性证据。在分布变化时这种依赖虚假相关的模型就会崩溃。OOD 泛化的核心目标就是让模型学到那些在不同分布下都稳定的、真正因果的规律。3. 三大类方法怎么选从表示、模型到优化的完整拼图3.1 无监督表示学习先把特征提纯无监督表示学习类方法的核心思路是在模型学习具体任务之前先让它学会一种好的特征表示。这种表示应该能把数据中真正有意义的、独立的变异因素分离开来而不是把所有信息混在一起。综述中把这类方法分为两个分支解耦表示学习和因果表示学习。解耦表示学习的目标是让学到的表示中每个维度对应数据中一个独立的变异因素。比如在人脸图像中一个维度控制表情另一个维度控制光照再一个维度控制姿态。这样当测试分布中光照条件变化时模型只需要调整光照相关的维度而不会影响对表情和姿态的识别。这就像把一团乱麻整理成几根独立的线每根线负责一件事互不干扰。因果表示学习则更进一步它试图让表示直接对应数据背后的因果结构。综述中提到这类方法利用人类先验知识来设计和约束表示学习过程使学到的表示具有某些对 OOD 泛化有帮助的性质。打个比方解耦表示学习是把一团乱麻分成几根线而因果表示学习是直接画出这些线之间的连接图告诉你哪根线拉动了哪根线。这类方法的优势在于它们从数据本身的结构入手不依赖于特定任务的标签信息。但挑战也很明显如何定义什么是“好的”解耦以及如何保证学到的因果结构在分布变化时依然成立都是尚未完全解决的问题。3.2 监督模型学习改造模型本身监督模型学习类方法直接在模型架构和训练策略上做文章让模型本身具备更强的 OOD 泛化能力。综述中把这类方法分为三个主要分支因果学习、稳定学习和领域泛化。因果学习方法的思路是让模型学习变量之间的因果关系而不是简单的统计关联。具体做法包括利用工具变量、引入干预、构建因果图等。举个例子如果模型知道“咳嗽”和“疾病”之间有一个混杂因素“空气质量”它就会在预测时对这个因素进行校正而不是盲目依赖咳嗽特征。稳定学习方法则从选择偏差的角度来建模分布偏移。它的核心思想是如果某个特征和标签之间的关系在不同子群体中都稳定存在那么这个关系就更可能是因果的。综述中提到稳定学习通过引入分布偏移来模拟选择偏差从而让模型学会关注那些稳定的特征。这就像在多个不同的数据集上训练如果某个规律在所有数据集上都成立那它大概率是可靠的。领域泛化方法则直接利用从不同领域收集的数据。它的假设是虽然测试领域未知但训练时可以看到多个不同领域的数据。模型需要从这些领域中找到共同的不变规律。比如训练数据来自多个不同医院模型需要学到“无论哪家医院都成立”的诊断规律而不是只适用于某家医院的特定模式。这三类方法的共同点是它们都试图让模型摆脱对训练分布中虚假相关的依赖。区别在于切入角度不同——因果学习从因果结构入手稳定学习从统计稳定性入手领域泛化从多领域数据入手。3.3 优化策略直接改造目标函数优化类方法不改变模型结构也不改变表示学习过程而是直接修改优化目标让模型在训练时就考虑到分布偏移的可能性。综述中重点介绍了两类方法分布鲁棒优化和基于不变性的优化。分布鲁棒优化Distributionally Robust OptimizationDRO的思路是不要求模型在训练分布上表现最好而是要求它在训练分布周围一定范围内的所有分布上都表现良好。这就像考试前不只看一本习题册而是把所有可能变形的题目都考虑进去确保无论题目怎么变你都能应对。用数学表达DRO 的目标是最小化最坏情况下的损失[ \min_\theta \sup_{P \in \mathcal{P}} \mathbb{E}{(X,Y) \sim P}[\ell(f\theta(X), Y)] ]这里的 (\mathcal{P}) 是一个分布集合通常定义为与训练分布距离不超过某个阈值的所有分布。(\sup) 表示取最坏情况。这个公式的含义是在所有可能的测试分布中找到让损失最大的那个分布然后调整模型参数让这个最大损失最小化。基于不变性的优化则从另一个角度入手它要求模型学到的预测机制在不同环境下保持不变。具体做法是同时优化多个环境上的损失并强制模型在这些环境上的表现尽可能一致。如果某个特征和标签的关系在所有环境中都成立那它就是不变的值得依赖。这两类优化方法的优势在于它们有较强的理论保证能够从数学上刻画 OOD 泛化的最优性条件。但挑战也很明显如何定义合适的分布集合 (\mathcal{P})以及如何在多个环境上高效优化都是实际应用中需要仔细权衡的问题。4. 容易混淆的几个概念OOD 泛化、领域适应与迁移学习4.1 OOD 泛化 vs 领域适应测试分布知不知道这是最容易混淆的一对概念。领域适应Domain Adaptation假设我们能拿到测试分布的数据要么有标签要么无标签。如果有无标签的测试数据领域适应方法可以通过对齐特征分布等方式让模型适应测试分布。而 OOD 泛化假设测试分布完全未知训练时根本看不到测试数据。用考试来打比方领域适应就像考前给你看了模拟题虽然没有答案你可以针对性地复习OOD 泛化则是考前什么都不知道只能靠平时学到的真本事。综述中明确指出领域适应可以看作 OOD 泛化的一个特例即我们对测试分布有一些先验知识的情况。正因为 OOD 泛化条件更苛刻它才需要更通用的方法而不是针对特定测试分布做适配。4.2 OOD 泛化 vs 迁移学习目标不同迁移学习Transfer Learning的目标是把从一个任务上学到的知识迁移到另一个相关任务上。比如在 ImageNet 上预训练的模型迁移到医学图像分类任务上。迁移学习关注的是任务之间的知识复用而 OOD 泛化关注的是同一个任务在不同分布下的表现。两者的关键区别在于迁移学习中源任务和目标任务通常是不同的但 OOD 泛化中训练和测试是同一个任务只是数据分布变了。当然两者也有交集——如果迁移学习中的源域和目标域数据分布差异很大那它也会面临 OOD 泛化问题。但它们的核心关注点不同迁移学习关心“能不能用”OOD 泛化关心“稳不稳定”。4.3 OOD 泛化 vs 分布鲁棒优化手段与目标分布鲁棒优化DRO是解决 OOD 泛化问题的一种优化方法而不是 OOD 泛化本身。OOD 泛化是问题定义DRO 是解决问题的一种手段。综述中把 DRO 归类为优化类方法与基于不变性的优化并列。初学者容易把两者混为一谈觉得 OOD 泛化就是 DRO。实际上OOD 泛化的方法体系要宽广得多包括表示学习、模型学习、优化策略三大类。DRO 只是优化策略中的一个分支。打个比方OOD 泛化是“如何让模型在未知分布上表现好”这个问题DRO 是“通过最坏情况优化来达到这个目标”的一种具体做法。4.4 OOD 泛化 vs 因果推断工具与问题因果推断Causal Inference是 OOD 泛化研究中的重要工具但不是唯一工具。综述中多次提到因果学习、因果表示学习等方法它们利用因果推断的理论来设计 OOD 泛化算法。但 OOD 泛化问题本身比因果推断更广它还涉及表示学习、优化理论、领域泛化等多个方向。把因果推断等同于 OOD 泛化就像把锤子等同于整个工具箱。因果推断提供了一种强有力的视角——通过识别不变的因果机制来实现泛化但 OOD 泛化还需要解决如何学习好的表示、如何设计鲁棒的优化目标等问题。综述中专门讨论了不同方法之间的理论联系其中因果推断是连接多个方法分支的一条重要线索但不是全部。4.5 OOD 泛化 vs 稳定学习整体与局部稳定学习Stable Learning是 OOD 泛化方法中的一个分支综述中把它归类为监督模型学习类方法。稳定学习通过模拟选择偏差来建模分布偏移强调模型在分布变化下的稳定性。但 OOD 泛化还包括无监督表示学习和优化策略两大类方法。稳定学习可以看作是 OOD 泛化的一个子集它有自己的侧重点和适用场景。如果你的问题主要是选择偏差导致的分布偏移稳定学习可能很合适但如果你的问题是测试分布完全未知且可能发生剧烈变化那可能需要结合表示学习和优化策略的方法。综述中把稳定学习与其他方法并列讨论并分析了它们之间的理论联系说明它们是互补而非替代的关系。5. 什么时候该用 OOD 泛化边界判断与一个具体例子5.1 适用场景分布会变且测试分布未知OOD 泛化方法最适合的场景有一个共同特征训练时无法获得测试分布的数据且测试分布可能与训练分布有显著差异。综述中列举了几个高风险的典型应用医疗健康、自动驾驶、军事领域。这些场景的共同点是模型部署后遇到的数据分布几乎不可能和训练时完全一致而且犯错的代价极高。具体来说如果你遇到以下情况就应该考虑 OOD 泛化方法数据采集过程存在选择偏差比如只从特定渠道收集数据数据随时间自然漂移比如用户行为随季节变化模型需要部署到与训练环境不同的新场景中。在这些情况下经典 ERM 方法学到的虚假关联会在分布变化时失效OOD 泛化方法能帮你构建更鲁棒的模型。5.2 不适用场景测试分布已知或变化不大反过来如果测试分布是已知的或者训练和测试分布差异很小那 OOD 泛化方法可能不是最优选择。比如如果你能拿到测试数据的无标签样本领域适应方法可能更直接有效。如果你的数据分布非常稳定经典 ERM 方法已经足够好引入 OOD 泛化方法反而可能增加不必要的复杂度和计算开销。综述中也提到OOD 泛化问题在一般情况下是不可解的除非对测试分布的变化方式做出假设。这意味着 OOD 泛化方法都有各自的适用条件没有一种方法能应对所有类型的分布偏移。选择方法时需要先分析你的分布偏移属于哪种类型是协变量偏移、标签偏移还是概念偏移不同类型对应不同的方法分支。5.3 一个具体例子从训练到部署的完整判断假设你在开发一个跨平台的图像识别系统训练数据来自某实验室的标准数据集但部署环境包括手机、监控摄像头、卫星图像等多种来源。训练时你无法获得部署环境的图像数据而且不同来源的图像在分辨率、光照、角度等方面差异巨大。这个场景就是典型的 OOD 泛化问题。你可以考虑以下策略首先用无监督表示学习方法学习对光照、角度等变化不敏感的特征表示其次用领域泛化方法如果训练时能收集到多个不同来源的数据让模型学习跨领域的共同规律最后用分布鲁棒优化来训练模型让它在最坏情况下也能保持较好性能。但如果你发现部署环境的图像分布其实和训练数据很接近只是分辨率略有不同那可能只需要简单的数据增强就能解决不需要动用完整的 OOD 泛化方法体系。判断的关键在于分布偏移的程度是否足以让经典方法失效以及你是否能获得关于测试分布的任何先验知识。5.4 一个踩坑教训某团队开发了一个推荐系统训练数据来自某平台的历史用户行为。模型在离线评估中表现优异但上线后点击率大幅下降。复盘时发现训练数据中某个特征和用户点击高度相关但这个特征在部署后因为数据采集流程变化而分布完全改变。模型过度依赖了这个特征导致预测失准。这个教训说明OOD 泛化不是纸上谈兵而是真实系统中必须考虑的问题。从那以后我每次做模型部署前都会强制走一遍分布偏移检查训练数据和目标场景的数据在关键特征上分布是否一致模型是否过度依赖了某些可能不稳定的特征如果答案不确定就先用 OOD 泛化方法做一轮鲁棒性训练。希望这些经验能帮到你让你在遇到分布变化时不再手足无措。本文还有配套的精品资源点击获取