论文链接:https://arxiv.org/pdf/1808.01097.pdf
代码链接:https://github.com/MalongTech/research-curriculumnet
1. 主要点
- 对于大规模网络图像数据的半监督学习
- 利用课程学习(curriculum learning)实现的原则性学习策略(principled learning strategy),以有效的处理大量噪声标签(noisy labels) 和数据不均衡(data imbalance) 问题.
- 设计新的课程学习方法,通过在特征空间中数据的分布密度(distribution density),评估数据的复杂度;并以无监督的方式对数据复杂度进行排名.
- 实验说明,高度噪声标签也能够作为一种正则方法,提升模型的泛化能力.
2. 目标
有效的处理大规模网络图像数据集中存在大量噪声标签和数据不均衡的问题.
3. CurriculumNet
基于课程学习的思想,其类似于人类的学习过程,模型从简单的问题开始学起,然后逐渐学习越来越复杂的任务问题.
CurriculumNet 中设计了一种无监督课程学习方法,如图 Fig.2,逐渐的增加噪声标签数据的数据量. 主要包括三步:
[1] - 初始特征生成(initial features generation);
首先,采用全部的训练数据,学习初始模型;然后,利用训练的模型计算训练数据集中每一张图像的深度特征表示(如,FC 层输出特征).
[2] - 课程设计(curriculum design);
训练的初始模型旨在粗略地将训练图像映射到特征空间,以挖掘每一类别内图像的潜在结构及潜在关系; 其提供了定义图像复杂度的有效方法.
对定义的图像复杂度进行分析,以设计学习课程. 其中,每一类别内所有图像,根据复杂度次序,被划分为多个子集.
[3] - 课程学习(curriculum learning).
基于设计的课程,进行课程学习. 即,
首先从包含全部类别的简单数据子集开始训练 CNNs 模型. 这里,假设在简单数据子集中包含更多的准确标签的干净图像.
然后,在训练过程中逐渐连续的添加复杂度越来越高的数据,来提升模型的识别能力.
3.1. 课程设计(Curriculum Design)
设计课程学习的目标是:能够以无监督的方式对训练图像由简单到复杂进行排序.
这里,采用基于密度聚类算法(density based clustering algorithm),根据数据分布密度(data distribution density) 评估训练样本的复杂度.
具体地,将全部训练数据集划分为多个数据子集,并将数据子集由简单到复杂进行排名,其中简单数据子集中包含更多标签更可靠的干净图像;而复杂数据子集则包含更多大量的噪声标签.
根据基于密度聚类算法,对每一类别图像数据集进行处理.
[1] - 首先,对全部训练数据集训练 Inception_V2 模型,作为初始模型;
[2] - 然后,基于初始模型的 fc 层特征,将每一类别内的全部图像,投影到深度特征空间. 对于每张图像.
[3] - 接着,计算欧氏距离矩阵 :
其中,n 为当前类别中图像数;表示图像和之间的相似性(值越小,则和越相似)
[3-1] - 对于每张图像,计算局部密度(local density):
其中,
是通过对中的个距离值从小到大进行排列,并选取钱k%得到的,这里k=60.
与i的距离值小于的样本数。
易知,正确标签组成的干净图像通常具有相对相似的视觉表征,其在特征投影空间里会具有较大的局部密度值.
反之,噪声图像往往具有明显的视觉差异性,在特征投影空间里一般是稀疏分布,具有较小的密度值.
[3-2] - 对于每张图像,定义距离:
即,如果存在图像,其>,则等于.其中,是数据集中与i最接近的样本. 否则,等于所有密度中的最大值,是i与数据点之间的距离,且与i的距离最大的值。
因此,具有最大局部密度值的数据点的 值最大,并被作为该类别图像的聚类中心.
对于每一类别内的图像,如果其与计算的聚类中心距离越近,则具有更高的正确标签的置信度. 因此,可以简单的采用 k-mean 算法,根据数据样本与聚类中心之间的距离,将数据样本划分为多个聚类. 其中,c cc 为聚类中心.
对于每一类的图像数据集,生成三个聚类,并将每个聚类的图像作为数据子集.
由于,每个聚类都包含一个密度值来度量其数据分布,以及不同聚类间的关系(relationship). 因此,很容易定义每个数据子集的复杂度,给定课程学习的设计规则.
具有高密度值的数据子集中,所有的图像在特征空间中更彼此接近,表明这些图像具有更强的相似性. 故,定义该数据子集为干净的,具有更多正确的类别标签;
具有低密度值的数据子集中,所有的图像具有较大的视觉表征差异性,其可能包含更多不正确标签的不相关图像. 故,定义该数据子集为噪声的.
此时,既可以得到三个复杂度不同的数据子集:clean, noisy, highly noisy. 每个图像类别包含相同的数据子集数,将其所有图像类组合为最终的课程学习数据集.
3.2. 课程学习(Curriculum Learning)
设计的课程能够以无监督的方式,基于图像的视觉表征来挖掘潜在的数据结构.
这里,设计 multi-stage 学习方案,如图 Fig.3(右). 通过连续地混合从干净数据子集到高度噪声数据子集的三个阶段,训练 CNN 模型.
[1] - 首先,仅基于干净数据子集训练 Inception_V2 模型,其中,数据子集中,每一类别图像具有更接近的视觉表征,有助于模型学习图像的基本的,及干净的视觉信息,以作为后续处理的基础特征.
[2] - [1] 中 Inception_V2 模型训练收敛后,添加噪声数据,继续学习过程. 此时,图像包含更明显的视觉差异性,使得模型能够学习困难样本的更有意义和判别性更强的特征.
虽然噪声数据包含不正确的类别标签,但其仍粗略的保持着数据的主要结构,故有助于模型能力提升.
[3] - 继续添加 highly noisy 的噪声数据,进一步训练模型. highly noisy 的数据集中包含大量的类别标签不正确的视觉不相关图像.
前两个阶段 [1] 和 [2] 课程学习的深度特征能够挖掘数据的主要潜在结构.
论文作者发现,highly noisy 的数据子集并没有对学习的数据结构产生负面影响. 相反,其可以提高模型的泛化能力,使提供一种正则化方式,使得模型避免对于干净数据出现过拟合.
当最终模型训练收敛后,三个数据子集均被利用.
此外,在训练时,对于不同数据子集的样本,在 [2] 和 [3] 阶段的训练,设置类不同的 loss 权重,对于 clean, noisy 和 highly noisy 数据子集,权重分别为 1, 0.5, 0.5.