论文地址:https://arxiv.org/pdf/1911.04252v1.pdf
这篇文章实现了自训练方法,使用部分带标签数据进行训练,在ImageNet上top-1为87.4%。
方法:
1. 为有标签和无标签的图片。
2. 使用有标签的数据、标准交叉熵损失训练了一个EfficientNet作为教师网络。
3. 用这个教师网络,在无标签数据上生成伪标签,伪标签可以是soft label(持续分布),或者hard label(one-hot分布)。文章说软标签效果更好。
4. 在有标签和无标签数据下,使用交叉熵训练一个学生网络。
5. 通过把学生网络视为教师网络,迭代以上步骤,生成新的伪标签,并训练学生网络。
软标签和硬标签,举个例子,比如图片A,输入一个分5类的网络。软标签[0.7, 0.3, 0, 0, 0],硬标签[1, 0, 0, 0, 0]。
算法如下:
算法基于半监督学习,主要的困难在于:训练学生网络的时候添加更多的噪声,在教师网络生成标签时把这些噪声移除。使用的噪声有:dropout,随机深度,数据增广。如果使用数据增广,学生必须保证被转换的图片和未转换的图片有相同的标签。如果使用dropout,教师表现更像模型集成(生成伪标签时不使用dropout),学生表现更像单一模型。
对于Noisy Student,为了更好的效果,学生模型必须足够大以适应更多的数据(有标签和伪标签),因此文章使用了EfficientNet(比ResNet大)。此外,为了让学生学一个更高效的模型,使学生网络比教师网络大,这和模型压缩里的教师-学生网络不一样,因为模型压缩的目标是压缩。
作者还发现,数据平衡(data balancing)效果好。因为ImageNet里的标签基本是平衡的,因此需要让无标签的数据也基本平衡。对于数据不够多的类别,复制。对于数据很多的类别,取置信度最高的。
实验:
有标签数据集:ImageNet 2012ILSVRC。无标签数据集:JFT dataset。虽然这个数据集实际上是有标签的,但是无视标签。
数据清洗:先跑EfficiNet-B0,对JFT数据集的每个数据预测一个标签,然后挑选置信度高于0.3的图片。对每类的图片,得到了置信度最高的130k的图片。对于不到130k的类,随机复制。
架构:EfficientNets
来源:CSDN
作者:Chen_Swan
链接:https://blog.csdn.net/Chen_Swan/article/details/103476166