Distributionally Robust Optimization
分布鲁棒优化通过模糊集或群体 DRO,针对最糟糕的合理数据分布训练模型,而不是针对平均分布训练。
分布鲁棒优化(DRO)是一种训练和决策方法,它不只针对训练分布,而是在一组合理的数据分布中针对最差分布最小化期望损失。标准训练称为经验风险最小化(ERM),它假定未来数据会与训练数据相似,并最小化平均损失。DRO 则假定真实数据会以可界定的方式发生变化,并针对该界限内的最难情况进行优化。由此得到的模型会牺牲少许平均准确率,以便在条件变化时保持更稳定的性能,例如训练期间摄像头采集的白天画面远多于夜间画面。
歧义集#
DRO 所防范的分布集合称为歧义集或不确定集,其形状决定了模型能获得何种鲁棒性:
- 散度球:包含与训练数据之间的 KL 散度或卡方散度不超过固定值的所有分布。针对这些分布进行优化会提高损失最高的训练样本的权重,让模型无法忽略最难处理的样本。一个密切相关的目标是条件风险价值,它只对每个样本损失中最差的一部分取平均。
- Wasserstein 球:包含通过在输入空间中有限距离移动概率质量可达的分布。由于距离衡量了概率质量移动的数量和距离,这些集合能够涵盖输入本身的小幅扰动。
- 群组混合:包含对已知子群体进行的任意重新加权,例如白天和夜间图像,或来自不同医院的扫描图像。此时最坏情况就是表现最差的群组。
Wasserstein DRO 与针对对抗攻击的对抗训练关系密切,两者都会针对邻近输入中的最坏情况进行优化。集合的大小是 DRO 的核心超参数:集合太大,会让模型针对不切实际的数据进行准备,降低其典型准确率;集合太小,则会遗漏部署中重要的数据变化。
群体 DRO#
Group DRO 由 Shiori Sagawa、Pang Wei Koh、Tatsunori Hashimoto 和 Percy Liang 提出,并发表于 2020 年,是深度学习中应用最广泛的形式。它最小化表现最差群组的损失,而不是所有样本的平均损失。实际操作中,它会为每个群组保留一个权重,并在不同批次之间延续这些权重;当前损失最高的群组会获得更高权重,随后反向传播群组加权损失:
import torch
# Per-image losses from one training batch and the condition each image came from
losses = torch.tensor([0.20, 0.30, 0.25, 0.90, 1.10, 0.15])
groups = torch.tensor([0, 0, 0, 1, 1, 0]) # 0 = daytime, 1 = nighttime
group_losses = torch.stack([losses[groups == g].mean() for g in (0, 1)])
# Empirical risk minimization optimizes the average loss over all images
print(f"ERM loss: {losses.mean():.2f}, daytime loss: {group_losses[0]:.2f}, nighttime loss: {group_losses[1]:.2f}")
# Group DRO shifts its group weights toward high-loss groups with an exponentiated-gradient step
group_weights = torch.tensor([0.5, 0.5]) # carried over from earlier batches
group_weights = group_weights * torch.exp(1.0 * group_losses) # step size 1.0
group_weights = group_weights / group_weights.sum()
dro_loss = (group_weights * group_losses).sum() # the loss that is backpropagated
print(f"Group weights: day {group_weights[0]:.2f}, night {group_weights[1]:.2f}, group DRO loss: {dro_loss:.2f}")0.48 的平均损失看起来不错,但两张夜间图像的平均损失为 1.00,而白天图像为 0.22。一次更新会将群组权重从各 0.50 调整为白天 0.32、夜间 0.68,因此反向传播的损失升至 0.76,且梯度主要来自夜间图像。经过多个批次后,权重会持续流向表现落后的群组。
Group DRO 是应对捷径学习的直接方法。在 Waterbirds 基准测试中,大多数水鸟训练照片都以水域为背景,因此标准训练会学到背景特征,并在水鸟出现在陆地上的照片中失效。作者通过强正则化,将最差群组的测试准确率从 ERM 的 21.3% 提升到 group DRO 的 84.6%,平均准确率也从 95.7% 提升到 96.6%。正则化很重要,因为大型网络可以将每个群组的训练损失都降至零,让 DRO 目标失去优先处理对象。
Group DRO 需要知道每个训练样本所属的群组。如果群组未知,可以用卡方散度球代替:Tatsunori Hashimoto 及其同事于 2018 年证明,最小化这类散度球中的最坏情况损失,无需知道哪些样本属于哪个群组,也能保护任何规模足够大的子群体。
寻找表现最差的群组#
重要群组通常可以从错误中发现。对于在已保存数据集版本上训练的 YOLO26目标检测模型,Ultralytics Platform会添加逐图诊断,根据逐图 F1 分数对验证图像排序,分析 F1 与图像大小、宽高比和实例数量之间的关系,并列出最常出现在表现最差图像中的类别。这些功能结合起来,可以将单个平均精度均值(mAP)拆分成候选群组,以便收集、过采样或加权。
DRO 的用途也远不止视觉领域:
- 子群体公平性:当群组由人口统计属性定义时,最小化表现最差群组的损失可以直接缩小性能差距。
- 真实世界分布偏移:斯坦福大学推出的 WILDS 基准测试会评估模型在不同医院的组织图像、不同地区和年份的卫星图像等分布偏移下的表现,并将 group DRO 列为标准基线之一。
- 运筹学:DRO 应用于电网调度、供应链规划和投资组合选择等领域。在这些场景中,决策面临需求或价格不确定的问题,仅针对历史平均值制定的计划可能会在异常年份严重失效。
DRO、数据增强与漂移监控#
数据增强和 DRO 从相反方向解决同一个问题。数据增强会用训练图像的合成变体扩充模型见到的数据,而 DRO 则会调整优化目标,让少见但真实的变化获得更高权重。两者结合效果很好:数据增强提供多样化样本,DRO 目标则避免模型将其中最难的样本平均掉。领域自适应采取第三种方法,使用来自一个已知目标分布的无标签数据进行适配。部署后,监测数据漂移可以发现任何不确定集合都未预料到的变化,这些新情况将成为下一批需要收集并加权的群组。










