
-
半监督学习 --- 也即利用更多的无标签数据; -
自监督学习 --- 不利用任何其他数据,仅通过在现有的不平衡数据上先做一步不带标签信息的自监督预训练(self-supervised pre-training)。
研究背景
不同数据集的标签呈长尾分布。图片来源:https://liuziwei7.github.io/projects/LongTail.html
为什么会存在不平衡的现象?
那么,不平衡或长尾数据会有什么问题?
那么,对于不平衡学习问题有哪些解决方法?
我自己总结的目前主流方法大致分为以下几种:
重采样(re-sampling):更具体可分为对少样本的过采样[3],或是对多样本的欠采样[8]。但因过采样容易overfit到minor class,无法学到更鲁棒易泛化的特征,往往在非常不平衡数据上表现会更差;而欠采样则会造成major class严重的信息损失,导致欠拟合发生。
数据合成(synthetic samples):即生成和少样本相似的“新”数据。经典方法SMOTE[9],思路简单来讲是对任意选取的少类样本,用K近邻选取其相似样本,通过对样本线性插值得到新样本。这里会想到和mixup[10]很相似,于是也有imbalance的mixup版本出现[11]。
重加权(re-weighting):对不同类别(甚至不同样本)分配不同权重。注意这里的权重可以是自适应的。此类方法的变种有很多,有最简单的按照类别数目的倒数来做加权[12],按照“有效”样本数加权[1],根据样本数优化分类间距的loss加权[4],等等。
迁移学习(transfer learning):这类方法的基本思路是对多类样本和少类样本分别建模,将学到的多类样本的信息/表示/知识迁移给少类别使用。代表性文章有[13][14]。
度量学习(metric learning):本质上是希望能够学到更好的embedding,对少类附近的boundary/margin更好的建模。有兴趣的同学可以看看[15][16]。
元学习/域自适应(meta learning/domain adaptation):分别对头部和尾部的数据进行不同处理,可以去自适应的学习如何重加权[17],或是formulate成域自适应问题[18]。
解耦特征和分类器(decoupling representation & classifier):最近的研究发现将特征学习和分类器学习解耦,把不平衡学习分为两个阶段,在特征学习阶段正常采样,在分类器学习阶段平衡采样,可以带来更好的长尾学习结果[5][6]。这也是目前的最优长尾分类算法。
研究动机和思路
于是,我们尝试系统性的分解并且分别分析上述两种不同的角度。我们的结论表明对于正面的和负面的角度,不平衡标签的价值都可被充分利用,从而极大的提高最后分类器的准确性:
从正面价值的角度,我们发现当有更多的无标签数据时,这些不平衡的标签提供了稀缺的监督信息。通过利用这些信息,我们可以结合半监督学习去显著的提高最后的分类结果,即使无标签数据也存在长尾分布。
从负面价值的角度,我们证明了不平衡标签并非在所有情况下都是有用的。标签的不平衡大概率会产生label bias。因此在训练中,我们首先想到“抛弃”标签的信息,通过自监督的学习方式先去学到好的起始表示形式。我们的结果表面通过这样的自监督预训练方式得到的模型也能够有效的提高分类的准确性。
半监督框架下的不均衡学习
我们首先从半监督的不均衡学习说起,通过一个简单的理论模型分析来建立直观的解释(省去了许多细节;可以直接跳到解释部分),之后展示一些有意思的实验结果。
理论分析:我们先从一个简单的toy example入手。考虑一个不同均值,
和
,但是相同方差的Guassian mixture模型,我们可以很容易验证其贝叶斯最优分类器为:
。因此为了更好的分类,我们希望学习到他们的平均均值,
。假设我们已有一个在不平衡的训练集上得到的基础分类器
以及一定量的无标签的数据,我们可以通过这个基础分类器给这些数据做pseudo-label。令
和
代表pseudo-label为正和为负的数据的数量。为了估计
,最简单的方法我们可以通过pseudo-label给这些对应的没有标签的数据取平均得到
。假设
代表基础分类器对于两个类的准确度的gap。这样的话我们推出以下定理:
那么直观理解,对于这样一个toy example,这个定理告诉了我们以下两点很有意思的结论:
原始数据集的不平衡性会影响我们最后estimator的准确性。越不平衡的数据集我们expect 基础分类器有一个更大的
。越大的
影响我们的estimator
到理想的均值之间的距离。无标签数据集的不平衡性影响我们能够得到一个好的estimator的概率。对于还不错的基础分类器,
可以看做是对于无标签数据集的不平衡性的近似。我们可以看到,当
,如果无标签数据很不平衡,那么数据少的一项会主导另外一项,从而影响最后的概率。
半监督的不平衡学习框架:我们的理论发现表明,利用pseudo-label伪标签(以及训练数据中的标签信息)可以有助于不平衡学习;而数据的不平衡程度会影响学习的结果。受此启发,我们系统地探索了无标记数据的有效性。我们采用最简单的自训练(self-training)的半监督学习方法,即对无标记数据生成伪标签(pseudo-labeling)进而一起训练。准确来讲,我们首先在原始的不平衡数据集
上正常训练获得一个中间步骤分类器
,并将其应用于生成未标记数据
的伪标签
;通过结合两部分数据,我们最小化损失函数
以学习最终模型
。
值得注意的是,除了self-training之外,其他的半监督算法也可以通过仅修改损失函数轻松地并入我们的框架中;同时,由于我们未指定
和
的学习策略,因此半监督框架也能很轻易的和现有类别不平衡的算法相结合。
实验:到了激动人心的实验部分了 ,首先说一下实验的setting --- 我们选择了人工生成的长尾版本的CIFAR-10和SVHN数据集,因为他们均有天然对应、且数据分布相似的无标记数据:CIFAR-10属于Tiny-Images数据集,而SVHN本身就有一个extra dataset可用来模拟多余的无标记数据。这部分更加细节的setting请详见我们的文章;我们也开源了相应的数据供大家使用测试。对于无标记数据,我们也考虑到了其可能的不平衡/长尾分布,并显式的比较了不同分布的无标记数据的影响(
和
的典型分布如下):
典型的原始数据分布,以及可能的无标记数据分布
而具体的实验结果如下表所示。我们可以清楚看到,利用无标记数据,半监督学习能够显著提高最后的分类结果,并且在不同的 (1) 数据集,(2) base学习方法,(3) 标记数据的不平衡比率,(4) 无标记数据的不平衡比率下,都能带来一致的提升。
此外,我们在附录里还提供了 (5) 不同半监督学习方法的比较,以及不同data amount的ablation study。
最后展示一下定性的实验结果。
我们分别画出了不使用/使用无标签数据,在训练集和测试集上的t-SNE可视化图。从图中可以直观看出,使用未标记数据有助于建模更清晰的类边界,并促成更好的类间分离,尤其是对于尾类的样本。这样的结果也符合我们的直观理解,对于尾类样本,其所处区域的数据密度低,模型在学习过程中不能对这些low-density区域很好建模边界,从而造成模糊性(ambiguity)导致较差的泛化;而无标记数据则能有效提高低密度区域样本量,加上了更强的regularization使得模型重新更好地建模边界。
首先,无标签数据与原始数据的相关性对于半监督学习的结果有很大的影响。举个栗子,对于CIFAR-10(10类分类)来说,获得的无标签数据可能并不属于原本10类中的任何一类(比如高山兀鹫...),这时多余的信息则可能对训练和结果造成不小影响。为了验证这一观点,我们固定无标签数据和原始训练数据有相同的不平衡比率,但是通过改变无标签数据和原始训练数据的相关性去构造不同的无标签数据集。从Figure 2中我们可以看出,无标签数据的相关性需要达到将近60%以上才能过对不平衡学习有正面的帮助。
既然原始训练数据是不平衡的,能够采集到的无标签数据也大概率是极度不平衡的。譬如医疗数据中,你构建了自动诊断某类疾病的数据集,其中正例(患病)很少,只占总体1%,但因为此病得病率就在1%左右,即使大量搜集无标签数据,其中真正患病数据大概率还是很少。那么,在同时考虑相关性的前提下,如Figure 3所示,我们首先让无标签数据集有足够的相关性(60%),但改变无标签数据的不平衡比率。
这个实验中,我们固定原始训练数据的不平衡比率为50。可以看到对于无标签数据,当无标签数据过于不平衡(本例中不平衡比率高于50)时,利用无标签数据反而可能让结果变得更差。
上述问题在某些特定的实际不平衡学习任务中,可能是非常普遍的。比如医疗/疾病诊断的应用,对于可能获得的无标记数据,其绝大多数大概率也都是从正常样本上采集的,这首先造成了数据的不平衡;其次,即使是患病的样本,也很可能由很多其他混杂因素(confounding factors)导致,而这会降低与本身研究病症的相关性。因此,在一些很难利用半监督学习的极端情况下,我们需要完全不同的但是也行之有效的方法。非常自然的,我们接下来从不平衡标签负面价值的角度去入手,阐述另一思路 --- 自监督学习带来的好处。
自监督框架下的不均衡学习
同样地,我们首先通过一个简单的理论模型分析来直观理解自监督对不平衡学习所带来的影响(同样也可以直接跳到解释部分),之后展示有意思的实验结果,以及总结思考。
理论分析:我们同样考虑一个
维Guassian mixture的toy example。这次我们考虑两个类有相同的均值(都为0)但是不同的方差,
和
。其中,我们假设负类是主要的类(mix 概率
)。我们考虑线性的分类器
,
,并且用标准的error probability,
,作为分类器的衡量标准。在正常的训练中,公式里的feature代表的是raw data,
。在这种情况下,我们可以首先证明上述的线性分类器一定会有至少1/4的error probability(详见文章)。接下来我们考虑当有self-supervision的情况。假设一个好的self-supervised task帮助我们学习到了新的representation,
,
。我们考虑用
作为线性分类器的输入。在上述的分类器范围内, 我们可以得到一个分类器,
,
,满足下面的定理:
同样的,我们尝试直观的解释这个定理的意义。我们发现在这样简单的情况下,如果通过一个好的self-supervised task学习到了有用的表达形式,我们能得到:
有很高的概率,我们能得到一个更好的分类器。这个分类器的error probability随数据维度
的增加而指数型减小。对于如今常见的高维数据(如图像)这种性质是我们希望得到的;训练数据的不平衡性会影响我们能够得到这样一个好的分类器的概率。上文中,
和
代表训练数据里不同类的数量。从
和
这两项中我们可以发现,当数据越多且越平衡,我们就有更高的概率得到一个好的分类器。
自监督的不平衡学习框架:为利用自监督来克服固有的“label bias”,我们提出在长尾学习的第一阶段先放弃标签信息,并进行自监督预训练(self-supervised pre-training,SSP)。此过程旨在从不平衡数据集中学到更好的、与标签无关的初始化特征信息。在此阶段后,我们可以使用任何标准的训练方法,去训练得到最终的模型。由于预训练与正常训练阶段所采用的学习方法无关,因此这种策略可与任何现有的不平衡学习算法兼容。一旦自监督产生良好的初始化,网络就可以从预训练任务中受益,并最终学习到更通用的表示形式。
实验:那么又一次到了激动人心的实验部分 ;) 这次由于不需要额外数据,我们除了在长尾的CIFAR-10/100上验证算法,也在大型数据集ImageNet的长尾版本,以及一个真实的大型长尾数据集iNaturalist[7]上进行测试,并和相应state-of-the-art对比。对于自监督算法,我们采用了经典的Rotation prediction[19]和最新的对比学习方法MoCo[20]。在Appendix里我们也提供了更多ablation study,比较了4种不同自监督方法的效果,以及不同的Imbalance Type。
具体实验结果如以下两表格所示。一言以蔽之,使用SSP能够对不同的 (1) 数据集,(2) 不平衡比率,以及 (3) 不同的基础训练算法,都带来了一致的、肉眼可见的提升,并且在不同数据集上都超过了之前最优的长尾分类算法。
最后同样展示一下自监督下的定性实验结果。与之前一样,我们分别画出了训练和测试集的特征t-SNE投影。从图中不难发现,正常CE训练的决策边界会很大程度被头类样本改变,从而导致在(平衡的)测试集中尾类样本的大量“泄漏”,无法很好泛化。相比之下,使用SSP可以保持清晰的分离效果,并减少尾类样本的泄漏,尤其是在相邻的头类和尾类之间。这样的结果同样也能直观理解:自监督学习通过额外的task来约束学习过程,对数据空间的结构学习的更完整、提取的信息更全面,相比不平衡的标签信息带来的语义信息的不平衡,其能有效减轻网络对高层语义特征的依赖,以及对尾部数据的过拟合,学到的特征表示会更鲁棒易泛化,从而在下游任务中表现更好。
GitHub地址:https://github.com/YyzHarry/imbalanced-semi-self
参考
-
^abYin Cui, Menglin Jia, Tsung-Yi Lin, Yang Song, and Serge Belongie. Class-balanced loss based on effective number of samples. In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, pages 9268–9277, 2019. -
^Tsung-Yi Lin, Priya Goyal, Ross Girshick, Kaiming He, and Piotr Dollár. Focal loss for dense object detection. In ICCV, pages 2980–2988, 2017. -
^abSamira Pouyanfar, et al. Dynamic sampling in convolutional neural networks for imbalanced data classification. -
^abLearning Imbalanced Datasets with Label-Distribution-Aware Margin Loss. NeurIPS, 2019. -
^abBBN: Bilateral-Branch Network with Cumulative Learning for Long-Tailed Visual Recognition. CVPR, 2020. -
^abDecoupling representation and classifier for long-tailed recognition. ICLR, 2020. -
^abiNatrualist 2018 competition dataset. https://github.com/visipedia/inat_comp/tree/master/2018 -
^He, H. and Garcia, E. A. Learning from imbalanced data. TKDE, 2008. -
^Chawla, N. V., et al. SMOTE: synthetic minority oversampling technique. JAIR, 2002. -
^mixup: Beyond Empirical Risk Minimization. ICLR 2018. -
^H. Chou et al. Remix: Rebalanced Mixup. 2020. -
^Deep Imbalanced Learning for Face Recognition and Attribute Prediction. TPAMI, 2019. -
^Large-scale long-tailed recognition in an open world. CVPR, 2019. -
^Feature transfer learning for face recognition with under-represented data. CVPR, 2019. -
^Range Loss for Deep Face Recognition with Long-Tail. CVPR, 2017. -
^Learning Deep Representation for Imbalanced Classification. CVPR, 2016. -
^Meta-Weight-Net: Learning an Explicit Mapping For Sample Weighting. NeurIPS, 2019. -
^Rethinking Class-Balanced Methods for Long-Tailed Recognition from a Domain Adaptation Perspective. CVPR, 2020. -
^Spyros Gidaris, Praveer Singh, and Nikos Komodakis. Unsupervised representation learning by predicting image rotations. arXiv preprint arXiv:1803.07728, 2018. -
^Kaiming He, Haoqi Fan, Yuxin Wu, Saining Xie, and Ross Girshick. Momentum contrast for unsupervised visual representation learning. arXiv preprint arXiv:1911.05722, 2019.

阅读原文,直达“NeurIPS2020”会议专题,了解更多会议论文!

