Distributionally Robust Optimization
了解分布鲁棒优化(DRO)如何为机器学习模型应对合理的数据偏移做好准备,并探索实际的计算机视觉示例与评估技巧。
分布鲁棒优化(DRO)是在数据的概率分布不确定时训练模型或做出决策的一种方法。与仅针对平均训练样本进行优化不同,分布鲁棒优化会考虑一组合理的分布,并寻求在其中最具挑战性的分布下表现良好的解决方案。其直觉是很实际的:如果摄像头在训练期间看到的日光镜头远多于夜间镜头,那么强大的平均性能可能会掩盖黑暗之后的糟糕结果。
分布鲁棒如何工作#
普通训练将期望损失最小化:即在假设数据分布下预测错误的平均惩罚。在分布鲁棒优化中,未知的现实世界分布由模糊集表示,这是一组在给定可用数据的情况下被认为合理的分布。然后,训练将最小化该集中分布的最高期望损失。这可以防御特定种类的的不确定性,而不是模型可能遇到的所有变化。
模糊集决定了“鲁棒”的含义。它可能允许已知群体的比例发生变化,例如夜间图像多于白天图像。或者,它包含在观测分布的选定统计距离内的分布。SciPy的Wasserstein距离文档大致测量了需要移动多少概率质量以及移动多远才能将一个分布变成另一个分布,这提供了直观的一维解释。康奈尔数据驱动鲁棒优化指南为从数据构建不确定性描述提供了更多背景信息。
较大的模糊集为更多变化做好了准备,但可能会牺牲典型条件下的性能。太小的模糊集可能会错过重要的转变。因此,选择其范围需要了解可能部署的条件,而不仅仅是方便的数学设置。
分布鲁棒优化与相关方法的区别#
分布鲁棒优化介于两个熟悉的概念之间。传统的鲁棒优化为不确定输入的困难值做好准备,可能会将特定的极端输入视为最坏情况。分布鲁棒优化转而考虑最坏合理的概率分布下的预期结果。普通的经验训练将观察到的分布视为其平均损失的基础。
它也不同于数据增强。增强会创建修改后的训练示例,例如较暗或旋转的图像;它本身不会对模糊集进行优化。当这些变化合理地代表部署条件时,分布鲁棒优化可以补充增强。同样,数据漂移描述了随时间在数据中观察到的变化。分布鲁棒优化在部署前预测选定的变化,而漂移监视检查之后实际发生的情况。这两种方法不能互相替代。
它在计算机视觉中的重要性#
考虑一个识别车辆和行人的道路摄像头目标检测系统。其镜头可能以清晰的白天场景为主,而雨夜则不常见但很重要。分布鲁棒优化目标可以将记录的光照和天气条件的不用混合视为合理的,从而防止模型通过忽略困难条件来获得良好的整体分数。然而,它不能保证识别出数据和所选模糊集中都没有的危险。
在制造缺陷检测中,摄像头和光照在不同的生产线之间可能会有所不同。仅通过平均检查准确率选择的模型可能会错过代表性较弱的线上的缺陷。如果这些线被识别为群体,则基于群体的鲁棒目标可以在其比例与训练样本不同时强调性能。这与数据集偏差有关,但分布鲁棒优化不会修复不正确的标签或创建从未记录的缺陷示例。
对于任何一种应用,在评估迁移到新站点时,请将来自同一摄像头或站点的相关图像放在一起。群感交叉验证有助于避免因为几乎相同的场景同时出现在训练和验证数据中而看起来很强的评估。
实用的Ultralytics工作流#
一个明智的起点是在考虑自定义分布鲁棒优化目标之前建立一个普通的训练和验证基线。文档记录的Ultralytics YOLO26训练工作流支持使用内置COCO8演示数据集的这个简短示例:
from ultralytics import YOLO
# Load pretrained detection weights.
model = YOLO("yolo26n.pt")
# Train a small baseline on the built-in example dataset.
model.train(data="coco8.yaml", epochs=3)
# Evaluate on the dataset's validation split.
metrics = model.val(data="coco8.yaml")
print(metrics.box.map)输出是整体检测平均精度均值(mAP),而不是分布鲁棒优化分数或鲁棒性证明。COCO8对于练习工作流很有用,但不能用于估计实际部署条件下的性能。对于真实项目,准备具代表性的、单独标记的条件;在每个相关的保留集上使用YOLO验证模式并比较整体和条件特定的结果。
实现实际的分布鲁棒优化目标需要定义模糊集并改变训练损失的优化方式。文档记录的自定义训练器工作流提供了扩展点,但上面的基线代码并未实现分布鲁棒优化。管理云端标注、训练和部署的团队可以使用Ultralytics Platform来组织更广泛的工作流。
选择和检查正确的保护#
从一个具体的问题开始:*哪些转变是合理的,它们会导致什么错误?*从相关的摄像头、站点或条件收集示例;保留独立的测试组;并比较最坏条件结果以及平均值。谷歌关于泛化的指导解释了为什么没有代表性的训练集会产生误导,而NIST人工智能风险管理框架的测量指导强调了与上下文相关的评估。
部署后,监控训练和提供数据之间的变化。当分布鲁棒优化反射出可信的不确定性时,它是最有用的;它不能替代健全的数据收集、仔细的评估或持续的监控。









