本文提出了一种噪声学生模型(Noisy Student)自训练的方法,通过这种方法提高ImageNet的分类精度,并在EfficientNet-L2的网络上达到了state-of-the-art的水平。为了训练学生模型,先在ImageNet上训练一个老师模型,然后用这个老师模型在300万张无标签的数据上产生伪标签,用这个有标签和伪标签的数据共同来训练学生网络,如此循环几次,产生一个最终训练好的网络。
训练Noisy Student的主要算法步骤是:
用老师模型在有标签数据集(ImageNet)训练网络,损失函数是cross entropy loss使用步骤1中训练好的老师模型,在无标签数据集(JFT)上产生软伪标签(soft pseudo labels)使用有标签数据集和步骤2中产生的软伪标签数据集一起训练一个不小于老师模型的学生模型,损失函数是两种数据集总的cross entropy loss将步骤3中的学生模型作为老师模型,执行步骤2,迭代循环下去在训练的过程中,作者为了提高模型的鲁棒性,让学生模型比老师模型更好、给训练方法加了两种噪声:
输入噪声:使用数据增强(Data Augment)和RandAugment模型噪声:使用dropout和随机深度(stochastic depth)当然,作者还加入了其他一些tricks,比如对低置信度的数据进行过滤,以及均衡数据(标签过少的数据进行复制,多余标签的只保留较高置信度的数据)。
作者在EfficientNet-L2网络上训练出了最佳模型,采用的方法是:
先用B7训练出一个老师模型;将L2作为学生模型,无标签数据的batch size是有标签数据的14倍;以步骤2中的L2作为老师模型,训练一个新的L2学生模型;以步骤3中的L2学生模型作为老师模型,再训练一个新的L2学生模型,这一次的无标签数据的batch size是有标签数据的28倍。步骤4训练出来的L2学生模型即为最佳模型,在ImageNet数据集上达到了top-1 88.4%、top-5 98.7%的准确率。