现在我们来考虑分类器对一个负类输出值的求导,两种损失函数对应梯度的差别如上式所示。对于 CE Loss,当同一样本中的正类输出足够高时,对负类输出求导的梯度值也会随之减小,而对 BCE Loss 来说,构造上的独立性导致只有不断降低负类输出值本身才能够降低自身梯度值,从而在训练后期该输出将稳定在一个相对更低的位置上。 这个过程的二者的可视化对比如下图所示。(注意这里是损失函数的梯度函数,梯度值的大小影响优化速度)然而,对于一个特定类别(尤其是尾部),数据集中绝大多数都是它的负样本,当分类器被海量负样本包围,且被要求对每一个负样本都输出一个足够低的预测值时,分类器向量在训练过程中将被迫远远偏离大量自然样本的分布,而仅仅过拟合在它的个别正样本上。 可以想像分类器预测值在特征向量(feature vector)空间中的分布具有一个尖锐的波峰,泛化性能很差。
过度惩罚不可取,点到为止 第二个问题我们在文中称为负样本的过度抑制(over-suppression of negative labels),一个简单粗暴的解决思路便是,不要对负样本持续施加过重的惩罚,而是点到为止。 我们只需要对分类器的负类输出进行一个简单的线性变换就能够实现上述功能,不要忘记加上正则化系数约束梯度值的范围。变换后函数请见后文的整体公式,它对负类输出的梯度与 CE 和 BCE 一同对比如下图所示。
特别的,我们还测试了递进实施每一步骤后,每一类别的指标增量(mAP increment),来分析每个技术对长尾分布的不同位置处类别的影响,具体结果以及更多的 Ablation study 可以参考原文。
展望
这篇文章关注的是长尾分布下的多标签分类问题,并从已经较为成熟的单标签不平衡分类方法中得到启发,从二者的差别入手,提出了一个简单而有效的方法。深度学习发展到今天,学术界默认采用的单一域平衡数据集已无法反映 AI 算法的真正泛化能力。 我们邀请大家一起来攻关这个新兴且更符合现实数据的领域,开放世界学习(Open World Learning),既包含类别分布上的复杂性 [1],也包含数据域分布上的复杂性 [5]。 最后,欢迎大家关注我们的工作,提出宝贵的建议!
参考文献
[1] Liu et al., Large-Scale Long-Tailed Recognition in an Open World, in CVPR 2019 (Oral), liuziwei7.github.io/pro [2] Cui et al., Class-Balanced Loss Based on Effective Number of Samples, in CVPR 2019 [3] Kang et al., Decoupling Representation and Classifier for Long-Tailed Recognition, in ICLR 2020 [4] Zhou et al., BBN: Bilateral-Branch Network with Cumulative Learning for Long-Tailed Visual Recognition, in CVPR 2020 (Oral) [5] Liu et al., Open Compound Domain Adaptation, in CVPR 2020 (Oral), liuziwei7.github.io/p