长尾数据分布
该论文是一篇CVPR 2020 oral的文章。
PDF: BBN: Bilateral-Branch Network with Cumulative Learning
for Long-Tailed Visual Recognition
code: https://github.com/Megvii-Nanjing/BBN
Motivation
1. 长尾数据分布定义
少数类别占据了总样本数的大部分,而相比之下大部分类别只有少量样本。即存在类别分布不均的问题。
2. 现有方法
(1)类别重均衡策略(class re-balancing strategies ):主要包括re-weighting 和 re-sampling
(2)直接训练通过设置交叉熵损失
但是resampling存在一个问题:即会对尾部类数据过拟合(因为oversampling),对整个数据集分布欠拟合(因为under-sampling),然后作者发现了一个现象:
作者将网络的训练过程分成了两个阶段,即将表示学习和分类器学习两部分分开。发现,当固定表示学习部分(即竖着看),训练分类器时,重采样和重加权都能降低误差;但是当固定分类器(横着看),重采样和重加权操作反而会带来更大的误差。因此,作者认为重采样和重加权过程虽然能对分类器进行更好的学习,但严重影响了表示学习部分的特征分布。
Proposed method
核心是:将 representation learning 和 classifier learning分开,本文设计了一个双分支的结构,在训练方式和数据采样方式上做了相应的改进。
1. 网络结构
令x表示训练样本,y·∈{1,2,3。 。 。 ,C}是其对应的标签,其中C是类数。 对于双边分支,我们分别对它们分别应用普通的和反向采样器,并获得两个样本(xc,yc)和(xr,yr)作为输入数据,其中(xc,yc)用于常规学习分支,而( xr,yr)用于重新平衡分支。两个分支使用相同的残差网络结构,并共享除最后一个残差块以外的所有权重。
2. 两种采样方式
上下两个分支分别采用了不同的采样器:
(1)上分支采样器保持均匀采样,是为了维持特征学习,保持原有数据分布。
(2)倒置采样器是根据样本出现频率逆着采样,即高频样本较小的采样权重。目的是为了减轻样本的不平衡,提升尾部类别的分类精确度
3. 训练方式
两个分支训练过程中,通过一个权重参数a来进行调节,a的计算方式为(随着不同的轮次进行改变,不是网络自己学习的):
测试的时候,a固定为0.5。
两个分支fc层后的特征经过a加权组合得到z:
由于上下两个分支输入的样本不同,则类别也不同,因此,损失也需要进行加权:
其中,p为softmax的输出结果:
Experiments
思考
文章中数据采样部分,双分支不同偏向学习部分,可以借鉴。
(recoded by xt)