半监督学习——数据精馏(论文阅读)

论文地址:https://arxiv.org/pdf/1712.04440.pdf

1. 论文与摘要

      《Data Distillation: Towards Omni-Supervised Learning

        摘要:作者提出一种特殊的半监督学习方法,取名为数据精馏。该方法通过利用标注的数据和未标注的数据一起训练模型,最终超越了全监督最好的模型。作者在人体关键点和通用目标检测任务上做了实验,精度均有提升。

2. 主要方法

Caption

       如上图所示,作者首先用全监督的方法训练模型A,随后用模型A测试不同数据增强的图片,最后将测试结果进行融合得到图片的标签。在训练student model时,把人工标注的图片和通过模型A生成标签的图片一起送进神经网络,得到训练好的student model。transform的方法主要是多尺度测试和水平翻转。作者的方法比较简单,一旦生成了标注数据,就把该数据当做真实标签,不需要对网络结构和其他部分做较大修改。

3. 实现细节

      1. 在没有标签的数据上生成label

Caption

             如上图所示,模型首先预测图片(图片经过了不同的变化),最后将前面的预测结果进行融合,得到生成的标签。如果是目标检测任务,不同的目标要设置不同的阈值。标签生成以后,就把生成的标签当做真实标签。

        2. 训练细节

              (1) 在训练学生模型时,要保证每个minibatch中同时包含手工标注的数据和自动生成的数据,这样能使模型训练得更好。作者训练模型时,手工标注的数据和自动生成数据的比例为6:4。

              (2) 由于增加了自动生成的数据,在训练模型时,应该使用更多的迭代次数,使模型收敛更好。     

4. 消融实验

       1. 用数据精馏的对比试验

Caption

            该实验说明:当训练数据较少(35K)时,用数据精馏能有效的提高模型精度(54.9-->60.2)。但是如果将这些无标签的数据进行人工标注后一起训练时,模型的精度能提高更多(54.9-->65.1)。

        2.  不同迭代次数的对比

Caption

             该实验说明:当使用数据精馏时,更多的训练迭代次数能使模型收敛得更好,从而提高模型在测试集上的精度。

       3. 老师模型对学生模型的影响

Caption

                该实验说明:教师模型越好,训练出来的学生模型也会越好。

          4. 学生模型用测试数据增强

Caption

                该实验说明:学生模型用测试数据增强,也能提高模型的精度。

                有意思的是:学生模型运用测试数据增强时,达到了68.9AP,其精度比教师模型还要高(教师模型67.8AP)。作者认为,学生模型不仅学到了变换信息,还从额外的数据中学到了新的知识。

5. 总结

       作者通过实验证明,运用额外的无标签数据,通过半监督学习能达到更好的效果(相比与仅用标注的数据)。

如需交流,请在下方留言!

猜你喜欢

转载自blog.csdn.net/Guo_Python/article/details/107791286