论文阅读:Dynamic Curriculum Learning

论文名称:Dynamic Curriculum Learning for Imbalanced Data Classification

图像分类模型训练的时候经常会遇到类目图片数量不平均的情况。这篇文章提出了一种新的框架-动态课程学习(Dynamic Curriculum Learning),能够在线自适应调整单batch的采样策略和损失学习,从而实现更好的泛化特征向量,并对类目做更好地区分。

DCL框架包括两个level的课程学习方案:

  1. Sampling Scheduler:调整训练集的数据分布,将采样数据集的样本分布从原先的不平衡调整到后期的平衡状态。
  2. Loss Scheduler:调整两个Loss(分类Loss和度量学习Loss)的权重,从一开始倾向于拉大不同类目之间特征的距离(度量学习Loss),到后期倾向于对特征做分类(分类Loss)。

介绍安排

本文首先具体介绍着两个level的课程学习方案,然后实验验证其有效性,最后给出我的看法。

Sampling Scheduler

这部分工作:不直接从训练集中进行采样分批处理样本(batch sample),用于模型训练;而是从训练集中采样出采样数据集(sampling dataset),然后从采样数据集中采样分批处理样本(batch sample),用于模型训练。

基本思想:直接将训练集作为采样数据集,能够学习数据的主要特性。而将训练集中数据按类目平均采样样本作为采样数据集,能够学习到样本量少的类目的特性。为了能够兼顾学习这两种特性,DCL首先直接将训练集直接作为采样数据集,随着模型训练的进行,慢慢地,减少训练集主要类目(类目图片数量多)的样本采样量,直到所有类目被采样的样本数量相等为止。

具体步骤:

  • 统计数据:统计训练集中各个类目的样本数量,并对其升序排序, C_{min}表示样本数量最小的类目,# C_{min} 表示 C_{min} 类目的样本数量, K 表示类目数量。下式给出了其他类目与 C_{min} 类目之间的样本数量比,这 K个数组成训练样本分布信息 D_{train}
  • 采样样本:根据训练样本分布信息Dtrain,生成采样数据集D(l),l表示current epoch。举个例子,若# C_{min}=5 , # C_{1}=30 , 那么 D_{train}[1]=30/5=6 ,当 l=0 时, g(l)=1 , D(l)[1] = 6 ,这里 D(l)D_{train} 等长,此时类目C1的采样数量等于其在训练集中的样本数量。当 l=max epochg(l)=0 , D(l)[1] = 1 ,此时类目 C_{1} 的采样数量等于类目 C_{min} 在训练集中的样本数量。

g() 函数的设置,影响到采样数据集分布的变化,文章给出了四种函数,分别是:

  • 凸函数,表明学习速度从慢到快
  • 线性函数,表明常量学习速度
  • 凹函数,表明学习速度从快到慢
  • 组合函数,表明学习速度从慢到快又到慢


函数g()的四种不同形式

Loss Scheduler

损失函数包括两种:分类损失,以及度量学习损失

分类损失

分类损失使用交叉熵损失,并且,这里考虑当前epoch的样本分布与前一个epoch的样本分布的关系,认为主要类目的样本权重会不断降低,次要类目(样本数量少)的样本权重相对地会不断增长。

N 表示batch size, M 表示类目数量, W_{j} 表示属于类目j的样本的样本权重。 D_{j}(l) 表示 epoch=1 时类目 j 的样本数量, B_{j} 表示 epoch=l-1 时的类目 j 的样本数量,当两者的比值小于1时,文章为占比 D_{j}(l)/B_{j} 的类目 j 样本赋值权重1,其他样本赋值权重0。

度量学习Loss

文章提出了一种新的度量学习Loss, 名为TEA,它是改进版本的triplet loss,挖掘triplet sample时,它只考虑次要类目的easy anchor,目的是增大次要类目图像特征与其他类目图像特征之间的距离,使得次要类目的图像特征能更好地学习到。easy anchor指的是与postive sample距离比negative sample距离更近的样本。这里,我也不大理解,作者说是为了防止学习学乱了。这里TEA loss的公式

x_{easy,j} 表示类目 j 的easy anchor, x_{+,j} 表示类目 j 的postive sample, x_{-,j} 表示类目 j 的negative sample, T 表示挖掘到的triplet sample的对数。

positive sample的两种选择:

  • 当前模型下,预测到该类目的概率小的样本,概率最小的 k 个样本
  • 当前模型下,预测到的与anchor距离最远的 k 个样本

negative sample的两种选择:

  • 当前模型下,其他类目图片预测到该类目的概率值最大的 k 个样本
  • 当前模型下,其他类目图片预测到的与该anchor距离最近的 k 个样本

两种Loss的动态组合

TEA Loss让不同类目的图像区分地更开,DSL Loss用于学习不同类目的图像特征。

模型训练初期,DCL框架考虑将不同类目的图像区分地更开,模型训练后期,考虑类目分地更准。

函数f()的值分布

实验数据集

实验数据集:CelebA,RAP

实验结果

总结

我觉得该方法拥有较强的可解释性,并且,从论文给出的数据来看,该方法的实验效果也不错。网上没有开源论文的代码,这里,我用pytorch对其进行了代码复现,并用在了实际的图像分类模型训练过程中。若上述描述存在遗漏或者错误之处,欢迎与我联系。

编辑于 2019-07-18