论文阅读十一:BagofTricks-LT 解决数据不均衡的各种trick

论文阅读十一:BagofTricks-LT 解决数据不均衡的各种trick_第1张图片
论文:BagofTricks-LT
code: BagofTricks-LT

这个论文有点像技术book,里面对解决数据不平衡的各种trick都做了很多对比实验,对于我们这些混迹在工业界,每天在各种论文中搜索能够解决自己手头项目里具体问题的小菜们,这个呈现简直太丰盛了,为我们减少了很多实验,有些结论直接用,大大的赞!

一、 为什么会存在不平衡的现象?
其实很好理解,一个通用的解释就是特定类别的数据是很难收集的。拿Species分类来说(参考大型数据集iNaturalist),特定种类(如猫,狗等)非常常见,但是有的种类(如高山兀鹫,随便举的例子…)就非常稀有。再比如对自动驾驶,正常行驶的数据会占大多数,而真正发生异常情况/存在车祸危险的数据却极少。再比如对医疗诊断,患有特定疾病的人群数相比正常人群也是极度不平衡的。对于healthcare data来说另一个可能原因是和privacy issue有关,特定病人可能都很难采集数据。

二、不平衡或长尾数据会有什么问题?
简单来说,如果直接把类别不平衡的样本丢给模型学习,显然模型会在major classes的样本上的学习效果更好,而在minor classes上泛化效果差,因为其看到的major classes的样本远远多于minor classes。

三、数据不平衡常规解决方法?

  • 重采样(re-sampling):更具体可分为对少样本的过采样(over-sampling),或是对多样本的欠采样(under-sampling)。但因过采样容易过拟合,无法学到更鲁棒易泛化的特征,往往在非常不平衡数据上表现会更差;而欠采样则会造成major class严重的信息损失,导致欠拟合发生。
  • 数据合成(synthetic samples):即生成和少样本相似的“新”数据。经典方法SMOTE,思路简单来讲是对任意选取的少类样本,用K近邻选取其相似样本,通过对样本线性插值得到新样本。这里会想到和mixup很相似,于是也有imbalance的mixup版本出现。
  • 重加权(re-weighting):对不同类别(甚至不同样本)分配不同权重。注意这里的权重可以是自适应的。此类方法的变种有很多,有最简单的按照类别数目的倒数来做加权,按照“有效”样本数加权,根据样本数优化分类间距的loss加权,等等。
  • 两阶段训练(decoupling representation & classifier):最近的研究发现将特征学习和分类器学习解耦,把不平衡学习分为两个阶段,在特征学习阶段正常采样,在分类器学习阶段平衡采样,可以带来更好的长尾学习结果。这也是目前的最优长尾分类算法

四、数据集介绍

  • Long-Tailed CIFAR:是由CIFAR数据集指数式减少每个类别的样本生成的,包含类别数为10的CIFAR-10-LT和类别数为100的CIFAR-10-LT。
  • iNaturalist 2018:大型物种分类数据集,有437513张图片,涉及8142种类别,另外类别之间非常不平衡。

五、各种tricks,以及实验结果分析

5.1、 重加权法(re-weighting)

特点:不同的类别,赋予不同的权重,从而引导网络着重学习少数类别。

  • Softmax cross-entropy loss (CE)
    论文阅读十一:BagofTricks-LT 解决数据不均衡的各种trick_第2张图片交叉熵损失函数,不做任何处理时,采用该损失函数。

  • Cost-sensitive softmax cross-entropy loss(CS_CE)
    论文阅读十一:BagofTricks-LT 解决数据不均衡的各种trick_第3张图片 n m i n n_{min} nmin最少的类的样本数, n c n_{c} nc类别c的样本数

  • Focal loss
    在这里插入图片描述通过减少易分类样本的权重,从而使得模型在训练时更专注于难分类的样本。

  • Class -balance focal loss (CB_Focal)
    在这里插入图片描述

  • Class-balanced softmax cross-entropy(CB_CE)
    在这里插入图片描述
    Class-balanced loss 使用真正有效的数据

    re-weighting 实验
    论文阅读十一:BagofTricks-LT 解决数据不均衡的各种trick_第4张图片分析:
    1、re-weighting 各种方法在CIFAR-10-LT上整体是减少错误率的,但是在CIFAR-100-LT上整体是增加错误率的,至少在这个实验上说明,re-weighting在类别数少的数据集上可以看到正面效果;
    2、CB_Focal 在CIFAR-10-LT上的top1错误率最低;

5.2、 重采样法(re-Sampling)
从原始数据集中采样得到一个均匀分布的训练集。

  • Random over-sampling
    随机复制样本数比较少的类别,从而减少样本之间的不平衡,这种方法是有效的,但是会导致过拟合。

  • Random under-sampling
    样本数比较多的类别,采取随机剔除法,直到类别之间平衡,这种会导致欠拟合。

  • Class-balanced sampling
    每次取数据,先均匀的在C个类别中选择一个类,然后再在所选择的类里面均匀的选择一个样本。

  • Square-root sampling
    类别的选择不是均匀的,而是 q 1 / 2 q^{1/2} q1/2的概率,是为了模拟一个不平衡度比较轻的数据集。

  • Progressively-balanced sampling
    逐步改变类别的抽样概率,从不平衡抽样到类别平衡抽样。

    re-sampling 实验
    论文阅读十一:BagofTricks-LT 解决数据不均衡的各种trick_第5张图片
    分析:
    1、采用re-sampling不管是在CIFAR-10-LT还是在CIFAR-100-LT数据集上,整体上增加了错误率;
    2、P-B sampling 在CIFAR-100-LT上轻微的效果,减少top1的错误率。

5.3、 Mixup Training
Mixup Training是数据增广的一个trick,目的是使CNN正则化。

  • Input mixup
    对输入图片进行mixup

  • Manifold mixup
    对中间特征层进行mixup

  • Fine-Tuning after Mixup Training
    先用mixup训练出来一个模型,然后去掉mixup再在这个模型上进行fintune

Input mixup 和 Manifold mixup 实验
FC代表 “fully-connected”,MM代表"Manifold mixup"
论文阅读十一:BagofTricks-LT 解决数据不均衡的各种trick_第6张图片Fine-Tuning after Mixup Training 实验
论文阅读十一:BagofTricks-LT 解决数据不均衡的各种trick_第7张图片

分析:
1、三种形式的mixup ,在CIFAR-10-LT和CIFAR-100-LT上都能减少top1的错误率;
2、Fine-Tuning after Mixup Training 在CIFAR-10-LT和CIFAR-100-LT数据集上效果最好。

5.4、 Two-Stage Training
两阶段训练,第一阶段是在原始数据集上训练一个模型,然后使用各种trick,解决数据不平衡,然后再finetuning。根据finetuning 的方法可以分为两种,一种是re-sampling(DRS),一种是re-weighting(DRW)。

  • DRS:先在原始数据集上训练出一个模型,然后再在该模型上使用re-sampling进行finetuning,另外作者在这个阶段提取了CAM-based sampling ,即使用第一个阶段的模型,生成图片对应的CAM,然后利用图片的均值分出前景和背景,背景保持不变,前景图片进行水平翻转、旋转、比例缩放等操作,生成一个新的训练样本。
  • DRW:先在原始数据集上训练出一个模型,然后再在该模型上使用re-weighting进行finetuning。

DRS实验
论文阅读十一:BagofTricks-LT 解决数据不均衡的各种trick_第8张图片
分析:
1、在第二个阶段使用re-sampling比单独使用top1错误率低;
2、基于CAM-based的采样比re-sampling的错误率低;
3、 CAM-based balance-sampling的错误率最低。

5.5、 Trick Combinations

把各种tricks结合在一起,找到了一个最佳的组合,即input mixup + DRS with CAM-based balance-sampling,然后mixup training 之后fine-tuneing ,这些tricks结合到一起,可以将长尾数据集的错误率降低10%论文阅读十一:BagofTricks-LT 解决数据不均衡的各种trick_第9张图片

你可能感兴趣的:(paper,深度学习,人工智能)