查看原文
其他

【源头活水】长尾数据真的百害而无一利吗?

“问渠那得清如许,为有源头活水来”,通过前沿领域知识的学习,从其他研究领域得到启发,对研究问题的本质有更清晰的认识和理解,是自我提高的不竭源泉。为此,我们特别精选论文阅读笔记,开辟“源头活水”专栏,帮助你广泛而深入的阅读科研文献,敬请关注。

作者:知乎—kid丶

地址:https://zhuanlan.zhihu.com/p/373053356

BBN: Bilateral-Branch Network with Cumulative Learning for Long-Tailed Visual Recognition. (CVPR,2020)

https://openaccess.thecvf.com/content_CVPR_2020/papers/Zhou_BBN_Bilateral-Branch_Network_With_Cumulative_Learning_for_Long-Tailed_Visual_Recognition_CVPR_2020_paper.pdf

在腾讯实习期间的 mentor 提起过这篇文章的想法,组会上再次听到这篇文章时,觉得有必要讲一讲这个简单有效的方法,以及其一些有意思的实验现象。本文深度考虑一个问题,长尾数据是否真的百害而无一利吗?长尾数据的信息该怎么利用上?文章发在2020年的CVPR,目前引量54。

01

长尾分布(Long-Tailed Distribution)

首先还是简单啰嗦一下长尾分布,自然界中收集的样本通常呈长尾分布,即收集得到的绝大多数样本都属于常见的头部类别(例如猫狗之类的),而绝大部分尾部类别却只能收集到很少量的样本(例如鳄鱼、熊猫),这造成收集得到的数据集存在着严重的类别不平衡问题(Class-Imbalanced),从而使得训练得到的模型严重的过拟合于头部类别。


02

存在的问题(Motivation)
对于解决长尾分布的方法有很多,例如重采样 (Re-Sampling) 以及重加权 (Re-Weighting)等等,这些方法的核心目的是为了让数据集能够“重新平衡”,本文将其统称为Re-Balancing。然而,在Re-Balancing之后,通常会造成以下两点问题:
1. 在Re-Balancing之后,分类器会倾向于去正确分类尾部类别样本,即模型对尾部类别过拟合以及对头部类别欠拟合。
2. Re-Balancing 方法会显著的促进分类器的学习,但却会意外地损害学习到的深度特征的表示能力。如上图所示, 在使用Re-Balancing之后,学到的模型虽然能够有效的将头尾样本分开,但是学到的表示却更加发散了(右图),相对来说左图的表示会更好。


03

一个有趣的消融实验(Ablation Study)
作者做了一个有意思的消融实验,这个实验大致做了这么一件事。首先,作者在CIFAR10和CIFAR100构造的两个Long-Tailed数据集上进行实验,并将整个模型训练过程分为表示学习(Representation learning manner,图中横轴)和分类器学习(Classifier learning manner,图中纵轴)两部分。换句话来说,就是先训练模型的表示层,再训练模型的最后几层分类器。
有意思的是,对于每个步骤,均会使用CE(Cross-Entropy)、RW(Re-Weighting)、RS(Re-Sampling)三个不同的方法对训练集进行处理。具体来说,CE是用上所有长尾数据使用常规的交叉熵进行更新(更新模型表示或分类器),RW是对长尾数据使用重加权的方式(头尾类别样本分别赋予更低、更高的权重)进行更新,RS则是对长尾数据通过重采样的方式进行模型更新。图中记录了不同组合下实验得到的模型的错误率,颜色越深代表错误率越低,即效果越好。
实验现象表明:
对于表示学习部分(横着看),使用CE的效果是最好的,即正常使用上所有的长尾数据有助于模型特征表示的学习。
对于分类器学习部分(竖着看),使用重采样的效果是最好的(左上角),即平衡的数据有利于学习更为有效的分类器。
结论:长尾数据虽然对最后学得的模型有害,会导致学得的模型存在很大的类别不平衡问题,但不妨碍它能学得一个非常好的特征表示;另一方面,训练网络最后几层全连接层的分类器,使用类别平衡的数据是最有效的。换句话来说,当我们使用所有长尾数据训练得到一个好的特征表示后,再使用重采样等方式来训练分类器,最后将会得到一个尽可能利用上所有数据学得的一个类别平衡的模型。

04

方法(Method)
在得到上一节的实验现象以及结论后,方法的提出就很简单了,咱们看图说话。蓝色虚框的目的是训练模型表示  ,红色虚框的目的是训练分类器  ,绿色虚框的目的可理解成把特征学习和分类器学习分成两步骤的一种软化方式。对于蓝框,首先对长尾数据进行均匀采样得到样本  经过卷积层得到特征表示  ;接着对于红框,从长尾数据中进行逆采样(Reversed Sampling,即平衡头尾数据的采样方式)得到样本  经过卷积层得到特征表示  。接着,对于两个不同样本的特征  和  通过各自的分类器  和  得到逻辑值相加并经过softmax得到 
 接着将  与ground-truth产生损失如下所示:
 其中  是常规的交叉熵损失,  从大到小产生衰变,使得模型从主要优化特征表示逐渐转变到主要优化分类器  。注意到,这里说的“主要优化”是因为即使  为0后也会使用平衡后的数据优化分类器  以及微调特征表示  。此外,为0后  是不优化的,因为这部分最后是丢掉的。细品,再细品,还是有点小巧妙的 : )

05

实验效果(Experiments)
实验效果就不再重复赘述了,不过据说该方法好像被实际应用到一个著名的类别不平衡图像分类比赛中,确确实实的拿了个冠军,还被报道过,足以证明该方法的有效性了。

06

讨论
首先,我个人非常喜欢这种类型的文章,不仅仅是其方法上简单有效,更因为它能从一些基础的实验现象中发现一些有意思的规律以及结论,从而逐步推出方法。
一些深度思考:
1. 这篇文章的核心贡献是,长尾数据并不是百害而无一利的,其能帮助训练得到很好的特征表示,再平衡数据去学分类器即可。本文的方法通过引入是对拆分为两步方法的软化。
2. 这篇文章其实还能带来一些其它方面的思考,例如在带噪学习中,带有噪声标记的样本确实有害,但也许其对学习特征表示还是有贡献的,这也许能解释dividemix这一类半监督数据增强的方法在带噪学习中取得SOTA的原因吧。
3. 此外,在自监督任务中,是否也存在着相似的联系?通过大量的未标记样本进行自监督学习表示并应用到下游任务上,提供少量的有标记样本即能达到甚至超过全监督的效果。也许特征表示才是大头,需要大量的数据,而分类器可能只需要几个有代表性的样本稍微拟合一下就可以了。

本文目的在于学术交流,并不代表本公众号赞同其观点或对其内容真实性负责,版权归原作者所有,如有侵权请告知删除。


“源头活水”历史文章


更多源头活水专栏文章,

请点击文章底部“阅读原文”查看



分享、在看,给个三连击呗!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存