
摘要
现实世界中的数据通常遵循长尾分布,即少数主流类别占据了大部分数据,而绝大多数少数类别仅包含有限的样本。基于交叉熵最小化的分类模型在表征和识别尾部类别方面表现不佳。尽管学习无偏分类器的问题已得到广泛研究,但针对不平衡数据的表征学习方法仍缺乏深入探索。本文聚焦于不平衡数据的表征学习问题。近年来,监督对比学习(Supervised Contrastive Learning, SCL)在平衡数据上展现出优异性能。然而,通过理论分析我们发现,对于长尾数据,SCL无法形成理想的几何构型——正单纯形(regular simplex),而正单纯形正是表征学习中理想的特征分布结构。为修正SCL的优化行为,并进一步提升长尾视觉识别的性能,本文提出一种新型的平衡对比学习损失函数,即平衡对比学习(Balanced Contrastive Learning, BCL)。与SCL相比,BCL在两个方面进行了改进:一是类别平均(class-averaging),通过均衡负类别的梯度贡献,缓解类别偏差;二是类别补全(class-complement),确保每个小批量(mini-batch)中均包含所有类别。所提出的BCL方法能够满足形成正单纯形的条件,从而有效辅助交叉熵损失的优化过程。在BCL的驱动下,本文提出的双分支框架能够学习到更具判别性的特征表示,并在多个长尾基准数据集(包括CIFAR-10-LT、CIFAR-100-LT、ImageNet-LT和iNaturalist2018)上取得了具有竞争力的性能表现。相关代码已开源,地址为:https://github.com/FlamieZhu/BCL。
代码仓库
flamiezhu/bcl
官方
pytorch
基准测试
| 基准 | 方法 | 指标 |
|---|---|---|
| long-tail-learning-on-cifar-10-lt-r-10 | BCL(ResNet-32) | Error Rate: 8.9 |
| long-tail-learning-on-cifar-100-lt-r-100 | BCL(ResNet-32) | Error Rate: 46.1 |
| long-tail-learning-on-cifar-100-lt-r-50 | BCL(ResNet-32) | Error Rate: 43.4 |
| long-tail-learning-on-imagenet-lt | BCL(ResNeXt-50) | Top-1 Accuracy: 57.1 |
| long-tail-learning-on-inaturalist-2018 | BCL(ResNet-50) | Top-1 Accuracy: 71.8% |