从域适应角度重新思考长尾视觉识别的类平衡问题
摘要
现实世界中的对象频率往往遵循幂律,导致机器学习模型所看到的具有长尾类分布的数据集与我们对模型在所有类别上都表现得很好的期望不匹配。我们从域适应的角度分析这种不匹配。首先,我们将用于长尾分类的现有类平衡方法与目标转移联系在一起,这是领域适应中经过充分研究的方案。 连接表明,这些方法隐式地假设训练数据和测试数据共享相同的类条件分布,这通常不成立,尤其是对于尾类。 虽然head class可能包含丰富多样的训练示例,这些示例可以很好地表示推理时的预期数据,但尾部类通常缺少代表性的训练数据。 为此,我们建议通过使用元学习方法显式估计类条件分布之间的差异来增强经典类平衡学习。 我们使用六个基准数据集和三个损失函数来验证我们的方法。
1. 简介
大型精选数据集,深度学习和前所未有的计算能力通常被称为视觉识别最新进展的三大支柱[32、44、37]。 但是,随着我们继续构建大数据集支柱,幂律成为不可避免的挑战。 现实世界中的物体频率通常呈现出长尾分布,其中少数类别占主导地位,例如动植物[51,1],全球地标[41]以及背景中常见和不常见的物体[35, 23]。
在本文中,我们建议从域适应的角度研究长尾视觉识别。 长尾挑战本质上是机器学习模型看到的具有长尾类分布的数据集与我们对模型的期望在所有类上都表现良好(而不偏向头类)之间的不匹配问题。 常规的视觉识别方法,例如通过交叉熵损失训练神经网络,过度拟合了优势类,而未能通过代表性不足的尾类而失败。因为它们隐式的假定了测试集是来自与长尾训练集相同的基础分布。 域自适应明显地打破了假设[46、45、21]。 当机器学习模型从训练数据(源域)学习时,它向机器学习模型公开了推理时间数据或分布(目标域)。
用Ps(x,y)和Pt(x,y)分别表示源域和目标域的分布,其中x和y分别是实例及其类标记。 在长尾视觉识别中,源域的边际类分布Ps(y)是长尾的,但是目标域的类别分布Pt(y)更加平衡,例如均匀分布。
在通用域适应中,两个域之间可能存在不匹配的多种原因。 协变量移位[46]导致输入边际分布上的域差异,即Ps(x)≠ Pt(x),但通常在各个域上保持相同的预测函数,即Ps(y | x)= Pt(y | x)。 在目标偏移原因[58]下,域仅因类分布而不同,即Ps(y)≠ Pt(y)和Ps(x | y)= Pt(x | y),部分解释了 设计类平衡权重以应对长尾挑战[7,38,13,62,40,8,3,12,39,14]。
这些类平衡方法使尾类在确定模型的决策边界时,可以发挥比其大小建议更大的作用。 类别权重与类别规模成反比[26、40、38]。 另一种方法是,可以从将一个类别的示例错误分类为另一类别的成本中得出这些权重[13,62]。 崔等。 通过计算每类示例的“有效数量”,[7]提出了一种有趣的加权方案。 最后,过采样/欠采样头/尾类[8、39、3、12、14]实际上与类平衡权重属于同一家族,尽管它们导致实际上不同的训练算法。 第2节回顾了应对长尾挑战的其他方法。
一方面,上面回顾的大量工作表明目标转移通常是一个合理的假设,比如 P s ( y ) ≠ P t ( y ) and P s ( x ∣ y ) = P t ( x ∣ y ) \mathrm{P}_{s}(y) \neq P_{t}(y) \text { and } P_{s}(x | y)=P_{t}(x | y) Ps(y)=Pt(y) and Ps(x∣y)=Pt(x∣y),基于此,人们可以设计有效的算法来从具有长尾类分布的训练集中学习无偏模型。但是,另一方面,我们的直觉挑战了目标转变假设的第二部分。换句话说, P s ( x ∣ y ) = P t ( x ∣ y ) P_{s}(x | y)=P_{t}(x | y) Ps(x∣y)=Pt(x∣y)可能不成立。虽然训练集的头类(例如Dog)可以包含丰富和多样的示例,很好地表示推理时的预期数据,但尾类(例如KingEider)通常是缺乏代表性的训练实例。 因此,从源域的条件分布Ps(x|Dog)中提取的训练示例可能很好地近似于目标域的条件分布Pt(x|Dog),但这两个域的条件分布Ps(x|KingEider)和Pt(x|KingEider)之间的差异很大,因为很难收集KingEider的训练示例(Cf)。 图1) .
为此,我们建议通过放宽源域和目标域共享相同条件分布PS(x|y)和Pt(x|y)的假设来增强类平衡学习。通过明确考虑它们之间的差异,我们为每个训练示例得出了两个分量的权重。 第一部分继承了经典的逐类加权,并在各种应用中保持了有效性。 第二部分对应于条件分布,我们通过元学习框架对其进行估计以重加权实例[43]。 我们对该框架进行了两项重要的改进。 一种是,由于对长尾问题进行了分析,因此我们对二分量权重有充分的先验知识,因此可以将权重初始化为接近最佳值的权重。 另一个是我们从框架中删除了两个约束,以使搜索空间足够大,以更大的机会覆盖最优条件。
在人工构造的长尾数据集上做实验,包括long-tailed CIFAR [31], ImageNet [10], and Places-2 [61],和自然的长尾数据集上iNaturalist 2017 and 2018。用三种不同的损失函数(cross-entropy,focal loss,a label-distribution-aware margin loss)测试了我们的方法. 结果表明,我们的双分量加权比类平衡方法更有利。
2. 相关工作
我们的工作与第1节中简要回顾的类平衡方法密切相关。在本节中,我们讨论领域适应和其他类型的解决长尾视觉识别的工作。
度量学习,hinge loss,以及头尾知识迁移。hing loss和度量学习是一个人处理长尾问题的灵活工具[4,26,57,59,24,54]。 他们大多是两个主要步骤。 一种是对感知长尾性质的数据进行抽样或分组,另一种是构造large margin损失。我们的方法是损失无关的,我们证明它可以在实验中受益不同的损失函数。 另一项研究是将知识从头类转移到尾部。 尹等人 将类内方差从头转移到尾[56].Liu等人。 在神经网络中添加一个内存模块来传输语义特征[36],Wang等人使用元网络来回归不同类之间的网络权重[53]。
难例挖掘和加权。硬示例挖掘在对象检测中很普遍并且有效[14、39、44、34]。 尽管它不是专门为长尾识别而设计的,但是它可以间接地将模型的焦点转移到尾部类,尾部类通常是困难示例的来源(参见[7,11,16]和我们的实验)。 尽管如此,这样的方法可能对异常值敏感,或者不必要地使少数例子主导了训练。 最近通过元学习方法提出的实例加权[43,47]缓解了这些问题。 遵循一般的元学习原则[15、28、33],他们搁置了一个验证集,以指导如何通过梯度下降权衡训练示例。 从嘈杂数据中学习时也使用了类似的方案[29、9、52]。
域适应。在实际应用中,出于各种原因,训练数据和测试数据的分布之间经常存在不匹配的情况[49、17、60]。域自适应方法旨在减轻失配,从而使学习的模型可以很好地推广到推理时间数据[46、45、21、20]。有一些方法可以处理域自适应中的不平衡问题。邹等文献[63]通过使用按类别归一化的置信度得分控制伪标签的学习和生成来处理类别不平衡问题。严等[55]使用加权最大均值差异来处理无监督域自适应中的类不平衡。我们从领域适应的角度理解视觉识别中的长尾挑战。虽然领域适应方法需要访问大量未标记的(有时也只是标记的一小部分)目标域数据,但我们不访问我们的任何推理时间数据在我们的方法中。与领域自适应中现有的加权方法[5、27、58]不同,我们通过元学习权重。
3. 类平衡作为域自适应
在本节中,我们从域适应的角度介绍了用于长尾视觉识别的类平衡方法[26、38、7、8、39]的详细分析。
假定有一个训练集(源域) ,来自长尾分布 ,更精确的说,类的边际分布 是重尾的,因为在视觉识别中,通常很难为罕见的类收集示例。 尽管如此,我们还是希望学习一种视觉识别模型,尽可能在所有类别上少犯错误:
error = E P ( x , y ) L ( f ( x ; θ ) , y ) \text { error }=E_{P_{(x, y)}} L(f(x ; \theta), y) error =EP(x,y)L(f(x;θ),y) 我们期望一个目标域Pt(x,y),其边缘类分布Pt(y)在推理时更平衡(例如,均匀分布), 是由 参数化的识别模型, 是0-1损失。 我们稍微滥用了符号L(•,•),让它成为训练过程中可微的代理损失(即交叉熵)。
接下来, 我们应用重要性抽样技巧将期望误差与长尾源域连接起来
error = E P t ( x , y ) L ( f ( x ; θ ) , y ) = E P s ( x , y ) L ( f ( x ; θ ) , y ) P t ( x , y ) / P s ( x , y ) = E P s ( x , y ) L ( f ( x ; θ ) , y ) P t ( y ) P t ( x ∣ y ) P s ( y ) P s ( x ∣ y ) : = E P s ( x , y ) L ( f ( x ; θ ) , y ) w y ( 1 + ϵ ~ x , y ) \begin{aligned} & \text { error }=\mathbb{E}_{P_{t}(x, y)} L(f(x ; \theta), y) \\ =& \mathbb{E}_{P_{s}(x, y)} L(f(x ; \theta), y) P_{t}(x, y) / P_{s}(x, y) \\ =& \mathbb{E}_{P_{s}(x, y)} L(f(x ; \theta), y) \frac{P_{t}(y) P_{t}(x | y)}{P_{s}(y) P_{s}(x | y)} \\ :=& \mathbb{E}_{P_{s}(x, y)} L(f(x ; \theta), y) w_{y}\left(1+\tilde{\epsilon}_{x, y}\right) \end{aligned} ==:= error =EPt(x,y)L(f(x;θ),y)EPs(x,y)L(f(x;θ),y)Pt(x,y)/Ps