深度学习之如何处理样本不平衡?

    技术2022-07-13  87

    什么是样本不平衡?

    在计算机视觉(CV)任务里常常会碰到类别不平衡的问题, 例如:

    图片分类任务:有的类别图片多,有的类别图片少检测任务:现在的检测方法如SSD和RCNN系列,都使用anchor机制。 训练时正负anchor的比例很悬殊.分割任务:背景像素数量通常远大于前景像素。 从实质上来讲, 它们可以归类成分类问题中的类别不平衡问题:对图片/anchor/像素的分类。

    再者,除了类不平衡问题, 还有easy sample overwhelming的问题。easy sample如果太多,可能会将有效梯度稀释掉。 这两个问题通常都会一起出现。 如果不处理, 可能会对模型性能造成很大伤害.用Focal Loss里的话说,就是训练不给力, 且会造成模型退化.

    样例数目较多的类别在反向传播时对权重占主导地位。这一现象会使网络训练初期,快速的降低数目较多类别的错误率,但随着训练的迭代次数增加,数目较少类的错误率会随之上升

    解决样本不平衡问题的方法?

    常见的方法有online的, 也有非online的;有只处理类间不平衡的,有只处理easy example的, 也有同时处理两者的。 Hard Negative Mining, 非online的mining/boosting方法 Mini-batch Sampling,以Fast R-CNN(2015)和Faster R-CNN(2016)为代表。Fast RCNN在训练分类器, Faster R-CNN在训练RPN时,都会从N = 1或2张图片上随机选取mini_batch_size/2个RoI或anchor, 使用正负样本的比例为1:1。若正样本数量不足就用负样本填充。 Online Hard Example Mining, OHEM(2016)。将所有sample根据当前loss排序,选出loss最大的N个,其余的抛弃。这个方法就只处理了easy sample的问题。 Oline Hard Negative Mining, OHNM, SSD(2016)里使用的一个OHEM变种, 在Focal Loss里代号为OHEM 1:3。在计算loss时, 使用所有的positive anchor, 使用OHEM选择3倍于positive anchor的negative anchor。同时考虑了类间平衡与easy sample。 Class Balanced Loss。计算loss时,正负样本上的loss分别计算, 然后通过权重来平衡两者。 Focal Loss(2017), 最近提出来的。不会像OHEM那样抛弃一部分样本, 而是和Class Balance一样考虑了每个样本, 不同的是难易样本上的loss权重是根据样本难度计算出来的。

    这些方法都是在计算loss时通过给样本加权重来解决不平衡与easy example的问题。不同的是,OHEM使用了hard weight(只有0或1),而Focal Loss使用了soft weight(0到1之间).

    现在依然常用的方法特性比较如下:

    Method是否处理Class Inbalance是否处理Easy Example权值方式OHEMNoYesHardOHNM(OHEM 1:3)YesYesHardClass Balanced LossYesNoSoftFocal LossNoYesSoft

    简要说明

    从损失函数,数据处理,网络训练,梯度下降简要说明. 损失函数:计算loss时,正负样本上的loss分别计算, 然后通过权重来平衡两者 数据处理:数据扩充,针对样本数量较少的类别进行数据扩增 网络训练:采样策略,增加样本数量较少的类别的选中概率

    mean squared false error (MSFE) loss

    Processed: 0.017, SQL: 9