Dynamic Curriculum Learning for Imbalanced Data Classification
动态课程学习用于样本不均衡分类
对于数据不平衡,可以用重采样和代价平衡(cost-sensitive),但它们需要先验知识。为了解决这一问题,本文提出DCL框架,用于每个batch中在线自适应调节采样策略和损失学习,其泛化性能和判别能力更强。受CL启发,DCL由两级课程调度组成:1、采样调度器,在每个batch中选择更有意义的样本,不仅将数据分布由不平衡变成平衡,同时也从容易到难;2、损失调度器,控制分类和度量损失之间的重要性。
样本数目少的类别分类器对其分类效果较差。重采样可能出现过拟合现象,降采样会使得有用信息丢失;代价平衡是给错分的样本数目少的类别更大的损失,但难决定给的meaningful 损失。
DCL出发思想是:教体系先学习所有类好的表达,然后是正确分类,很好的平衡class bias acc(正确预测数/总数)和class balance acc(每一类的平均准确率);交叉熵损失(CE)和度量损失结合(ML),但贡献不同。因为训练时让他俩同等地位,则无法充分利用深度CNN的判别能力。CE更多的关注分配标签的分类,而ML则更关注学习特征嵌入去分不同的样本(不需要分配标签,如验证)。
3.1. Scheduler Function Design
设计四种调度函数:凸函数,cos学习速度由慢到快;线性函数,linear常数学习速度;凹函数,exp学习速度有快到慢;混合函数,学习速度由慢到快再到慢。(L是总迭代次数)
SF是从1到0变化的函数
3.2. Sampling Scheduler
DSL
规定目标分布用于选择学习不能同时解决class bias acc和class balance acc问题。
DSL则解决该问题。具体地,我们定义了不平衡的数据分布的第j个元素为第j类样本数除以少数类样本数。K是类数。
初始分布:
对于每个batch的目标分布D在训练的开始被设置为所有训练集的分布Dtrain,是一个不平衡分布。
D定义为:
l是当前迭代次数,g(l)是3.1中的任意函数,随着迭代次数的增加,分布中所有类别都趋近于1(x^(0.n),x>1)。
个人理解,分布为一个batch中每个类的样本比重。
DSL损失函数为:
N是batchsize,Nj是第j类对应的样本数,M是类别数,是真实标签,wj是权重,Dj(l)是第l次迭代时j类的分布,Bj是j类在该次迭代前的分布。当
时,该类中百分之
的样本权重为1,剩下的权重为0。
假设某类的分布值为1.5,当前迭代次数2,总迭代次数10,调度函数为linear,选择则对应的权重为1.33/1.44<1,其中93%的样本权重为1,剩下的样本权重为0。
对于非minority类,每次得到的分布值都会小于前面,所以每次都在减少权重。
从样本选择和损失权重整体看,样本选择增加minority的样本数,同时损失函数降低majority的权重(由于直接设置为0,也可以看做减少了样本数目)而minority的权重大于1,增加了权重值。
3.3. Metric Learning with Easy Anchors
triplet loss
CRL中的triplet loss
mj为类j的边缘,Xall,j为j类所有样本,x+为正样本,x-为负样本,T是样本对。
CRL中所有的minority样本都被选择作为anchor,难例为正负样本,容易将简单正样本pull到负样本。
本文则使用简单样本作为anchor。公式为:
个人理解,triplet loss 的核心思想是让难例负样本离正anchor远一些,难例正样本离正anchors近 一些。由于难例正负样本离分界线较近,若选择难例为anchor,容易压线或超线。当选择简单样本作为anchor时,由于简单样本离分界线较远,所以离它更近或更远时能让难例离分界线更远。(若理解的不对希望指出)可以参照论文中的图理解下。
3.4. Loss Scheduler
为了产生好的特征,然后利于分类,提出调度器f(l)去平衡两个损失函数。
f(l)可以是3.1中任意函数,p属于[0,1],加入不为0的是保证在前面几次迭代中网络仍然能保证从前面阶段学习特征结构。(是不是让TEA的损失比重大于DSL,有益于网络的学习,有待研究原因【捂脸】)
论文中的g(),f()函数为是两级课程调度器。保证网络训练时很多权重都处于一种学习状态,目前的调度函数都是固定形式的,没有学习参数,可以添加参数,让网络自己学习调度方式。
实验
评价指标:class balanced accuracy
融合实验: