MEAL V2:Vanilla ResNet-50 to 80%+ Top-1 Accuracy on ImageNet without Tricks
论文链接:
https://arxiv.org/abs/2009.08453
这篇文章主要介绍了一种蒸馏学习的方法,在不使用各种训练技巧的情况下可以将Resnet50的训练精度提升到超过80%。(注:作者训练原始resnet50精度为76.15%,此方法提升了4.52%,至80.67%)
本问针对蒸馏学习提出了3个新的观点:
1.可以降低甚至完全移除权重衰减,因为软标签同样有正则化的效果,
2.一个良好的初始化对学生模型至关重要,
3.当权重被较好的初始化时蒸馏过程中硬标签或one-hot不是必须的。
问题分析
作者对普通的resnet50模型与采用论文方法训练的模型进行了对比,发现当两种类别语义差距较大时(如tench和jay),效果相差不大,但当两种类别语义差距较小(如两种不同类型的贵宾犬识别)时,两个模型差距明显。
另外作者发现,当使用预训练模型初始化模型时,若使用one-hot标签,这模型较为容易产生过拟合,但当使用软标签时模型精度仍可以继续提升。
随后作者分析了蒸馏学习可以解决的问题:
1.使用蒸馏学习后可以将原本无法分开的语义相近的类别分开(如图2(2)中所示,)
2.使用蒸馏学习通过一个训练良好的教师模型的输出作为标签可以避免一个图中多个语义目标或者由随机裁剪带来的标签错误问题,如图4
模型结构
然后作者提出了论文中所使用的方法:MEAL V2。既然是V2版本,那自然就是在MEAL v1基础上发展而来的。
MEAL V1:论文链接:
https://arxiv.org/abs/1812.02425
代码链接:
https://github.com/AaronHeee/MEAL
MEAL v1主要结构如下:
主要思想是集成多个不同的教师模型对学生模型进行蒸馏。
MEAL V2的结构如下:
与MEAL 的主要不同在于,MEAL从多个教师模型中选择一个进行蒸馏,而MEAL V2则是求多个教师模型的平均值作为软标签来对学生模型进行蒸馏。
实验对比
然后作者列举了论文中使用的训练方法以及未使用的训练技巧,如下图:
除了一个较好的模型初始化外,其他训练技巧基本上都未使用。
随后作者在imagenet上对模型效果进行了对比:
使用MEAL V2后,top1 准确率相比普通的resnet50提升了4.52%,比MEAL V1提升了2.46%。可以看到在未使用众多训练技巧的情况下,效果提升还是比较明显的。
然后作者又在一些较小的模型上进行了进一步的实验,结果如下:
作者还对比了论文中的方法与现有的一些蒸馏学习方法,结果如下:
发现MEAL V2 教师模型与学生模型之间的差距,在集中不同的蒸馏方法中是最小的,说明采用这种方式的教师模型对学生模型的“教学效果”相比其他方法还是有优势的。
目前该论文已经开源,代码链接如下:
https://github.com/szq0214/MEAL-V2