Self-training with Noisy Student improves ImageNet classification

本文提出了一种噪声学生模型(Noisy Student)自训练的方法,通过这种方法提高ImageNet的分类精度,并在EfficientNet-L2的网络上达到了state-of-the-art的水平。为了训练学生模型,先在ImageNet上训练一个老师模型,然后用这个老师模型在300万张无标签的数据上产生伪标签,用这个有标签和伪标签的数据共同来训练学生网络,如此循环几次,产生一个最终训练好的网络。

训练Noisy Student的主要算法步骤是:

  1. 用老师模型在有标签数据集(ImageNet)训练网络,损失函数是cross entropy loss
  2. 使用步骤1中训练好的老师模型,在无标签数据集(JFT)上产生软伪标签(soft pseudo labels)
  3. 使用有标签数据集和步骤2中产生的软伪标签数据集一起训练一个不小于老师模型的学生模型,损失函数是两种数据集总的cross entropy loss
  4. 将步骤3中的学生模型作为老师模型,执行步骤2,迭代循环下去

在训练的过程中,作者为了提高模型的鲁棒性,让学生模型比老师模型更好、给训练方法加了两种噪声:

  1. 输入噪声:使用数据增强(Data Augment)和RandAugment
  2. 模型噪声:使用dropout和随机深度(stochastic depth)

当然,作者还加入了其他一些tricks,比如对低置信度的数据进行过滤,以及均衡数据(标签过少的数据进行复制,多余标签的只保留较高置信度的数据)。

Self-training with Noisy Student improves ImageNet classification_第1张图片

作者在EfficientNet-L2网络上训练出了最佳模型,采用的方法是:

  1. 先用B7训练出一个老师模型;
  2. 将L2作为学生模型,无标签数据的batch size是有标签数据的14倍;
  3. 以步骤2中的L2作为老师模型,训练一个新的L2学生模型;
  4. 以步骤3中的L2学生模型作为老师模型,再训练一个新的L2学生模型,这一次的无标签数据的batch size是有标签数据的28倍。

步骤4训练出来的L2学生模型即为最佳模型,在ImageNet数据集上达到了top-1 88.4%、top-5 98.7%的准确率。

你可能感兴趣的:(图像分类,Deep,Learning)