Self-training with Noisy Student

目录

  • Self-training with Noisy Student improves ImageNet classification
    • 1、数据集简介
    • 2、性能
    • 3、模型策略
    • 4、实验策略
    • 5、Other

Self-training with Noisy Student improves ImageNet classification

该篇论文作者之一 Quoc Le 11.13 日在 twitter 上说到,
【图 1】

想要提高模型的精度和鲁棒性,尝试考虑使用无标注数据!他们在无标数据数据上使用自学习机制将 ImageNet Top-1 的识别结果调高到 87.4%,这比之前最先进最牛逼的模型提高了约 1%,在 Image-A/C/P 较难的基准数据集上较之前结果有质的突破。

实际在普通的 ImageNet 数据集上,近年来的模型不断在刷新 Top-1 识别率,幅度不高,趋近于饱和,但是该模型在一些鲁棒性测试数据集上的提高确实惊人的。

1、数据集简介

Image-A/C/P 是三种不同的鲁棒性测试数据集。

Image-A1: A 是 Adversarial,对抗的意思。从真实世界搜集了 7500 张未经修改、完全自然生成的图片作为对抗样本测试常规 ImageNet 下训练的模型鲁棒性,以 DenseNet-121 为例,其测试准确率仅为 2%,准确率下降了约 90%,由此可知该数据集的难度。
【图 2】

其中红色的是标签是 ResNet-50 模型给出的,黑色的标签是实际真实标签,而且以很高的信任度识别错误,要注意虽然这些样本是对抗样本,但都是来自真实世界未加对抗调整的自然图片。

Image-C/P2:C 是 Corruption 腐蚀、污染的意思,即在图片中引入 75 种不同的噪音形式,测试模型的抗击能力。
【图 3】

这里给出 15 种不同类型的算法干扰,如引入噪声,模糊处理,模仿天气因素干扰以及基于色彩空间数字化干扰等;P 是 Perturbations 扰动的意思,它与 C 差不多,但是会在一个连续的时间步内连续对一个干净的原始图像做处理,且每一次处理都是微小的扰动,比如平移像素点,旋转,缩放以及 C 中使用的干扰模糊等扰动。


2、性能

【图 4】

上图在 P 数据集上主要是尺度缩放和旋转,该模型保持稳定性,而之前的模型则预测结果多次翻转,很不稳定。
【图 5】

上图是该模型与以往的 ImageNet 常规模型对比,从模型大小上看,似乎没有什么优势,毕竟现在轻量化是一个很重要的趋势,识别精度上提高了一个百分点。因此,这篇论文的主要看点在于鲁棒性测试以及噪音自学习机制的证明。

3、模型策略

【图 6】

方法真的超级 Easy:

对于一些有标签数据集 { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯   , ( x n , y n ) } \{(x_1, y_1), (x_2, y_2), \cdots, (x_n, y_n)\} {(x1,y1),(x2,y2),,(xn,yn)} 和一些无标注数据集 { x ~ 1 , x ~ 2 , ⋯ x ~ m } \{\tilde x_1, \tilde x_2,\cdots \tilde x_m\} {x~1,x~2,x~m}

第一步:在有标签数据集上训练一个模型,称为 teacher,模型的参数为 θ \theta θ,模型使用交叉熵损失:

1 n ∑ i = 1 n l ( y i , f ( x i , θ ) ) \frac{1}{n}\sum^n_{i=1}l(y_i, f(x_i, \theta)) n1i=1nl(yi,f(xi,θ))

这里论文给出的是 f n o i s e d f^{noised} fnoised 是不准确的,在训练 teacher 模型中仅仅是基于有标签数据集训练的,没有引入噪声,噪声的引入只发生在训练 student 模型阶段

第二步:利用第一步得到的模型 f f f 在未标注数据集上进行标签预测,预测最后一层 softmax 给出的是概率分布,我们称为软标签,因为它只给出每个类别的信任度而非指定为具体某个类别,而硬标签就是 one-hot 形式的 max 后的结果便签,实验证明软标签更好一些。

y ~ = f ( x ~ i , θ ) , ∀ i = 1 , … m \tilde y = f(\tilde x_i, \theta), \forall_i=1,\dots m y~=f(x~i,θ),i=1,m

你不需要关心每个 y ~ \tilde y y~ 都被预测成什么了,ImageNet 才 1000 个类别,而随便的无标注图片类别都指不定是什么,此处我们假定 y ~ \tilde y y~ 就是准确的就好了,因为接下来的目的是让学生模型也要预测成这个结果。

第三步:训练一个新的模型称为 student 模型,将有标注数据集和无标注数据集(带有伪标签了现在),然后基于这个大数据集进行训练,仍然使用的是交叉熵损失,

1 n ∑ i = 1 n l ( y i , f n o i s e d ( x i , θ ′ ) ) + 1 m ∑ i = 1 m l ( y ~ i , f n o i s e d ( x ~ i , θ ′ ) ) \frac{1}{n}\sum^n_{i=1}l(y_i, f^{noised}(x_i, \theta'))+\frac{1}{m}\sum^m_{i=1}l(\tilde y_i, f^{noised}(\tilde x_i, \theta')) n1i=1nl(yi,fnoised(xi,θ))+m1i=1ml(y~i,fnoised(x~i,θ))

第四步:将学到的 student 当做 teacher 重新对无标注数据集进行打标签,回到第二步中,迭代即可。

4、实验策略

对于标准数据集,仍使用 ImageNet 2012 基准数据集,其中未标注数据集来自于 JFT 数据集,它实际含有大约 3 亿张图片,尽管这些图片实际有真实标签,但我们此处不需要,只当做无标记图片数据集即可。为了实现无标签图片类别的平衡,作者拿在 ImageNet 上训练的 EfficientNet-B0 对 JFT 数据集打标签,并剔除了标签信任度低于 0.3 的图片,对于每个类别,挑选具有最高信任度的 13 万张图片,对于不足 13万张的类别,随机再复制一些,这样总量在 1.3 张照片的级别。

问题:

1、为什么要大于 0.3,拿 ImageNet 训练的模型在别的数据集上打标签,为什么要求伪标签信任度大于0.3?应该是让 teacher 具有标签稳定性吧,如果标签信任度过于均匀,这种照片会很难识别。

2、JFT 实际标签类别有 18291 个,此处根据结果可知是选了 1K 个类别应该?

teacher 和 student 模型架构可以相同也可以不同,但是要想使噪音学生模型学习的好,模型容量必须足够大,以拟合大量的无标注数据集,因此推荐使用 EfficientNet 家族模型。这里使用的是基准模型是 EfficentNet-B7,即第一次老师和学生模型均使用的 EfficentNet-B7,而后迭代分别训练了 L0、L1和 L2 模型,L0 在 B7 的基础上加宽加深但分辨率低,L1 在 L0 基础上进一步加宽,L2 在所有维度上拓展。

在训练阶段,作者提到 batch 大小设置为 512、1024、2048 在性能上没啥区别,对于大模型,在无标注数据集上的 batch 是有标准数据集的 3 倍,在小模型上则是一样的,最后引入了一个固定训练集-测试集分辨率差异性的技术3,首先在小分辨率图片下正常训练 350 个周期,然后基于未进行数据增强的大分辨率图片下微调训练1.5 个周期,微调阶段浅层被固定。

训练阶段被引入的噪音主要有三种:

  • 随机深度:幸存概率因子为 0.8
  • dropout:分类层引入 0.5 的丢弃率
  • 随机增强:应用两个随机运算,其震级设置为 27

5、Other

首先这是基于 Self-training 框架训练的,主要区别在于验证了噪声的重要性,噪声的引入可以使 student 更好。另外与知识蒸馏的区别在于知识蒸馏没有考虑到无标注数据的使用,其目标也不是为了提高 student 模型的。

TODO

  • mean corruption error
  • mean flip rate
  • 随机深度4
  • 随机增强5
  • FGSM 对抗攻击
  • EfficientNet 家族模型

  1. Dan Hendrycks, Kevin Zhao, Steven Basart, Jacob Steinhardt, and Dawn Song. Natural adversarial examples. arXiv preprint arXiv:1907.07174, 2019. ↩︎

  2. Dan Hendrycks and Thomas G Dietterich. Benchmarking neural network robustness to common corruptions and perturbations. In International Conference on Learning Representations, 2019. 1 ↩︎

  3. Hugo Touvron, Andrea Vedaldi, Matthijs Douze, and Herve´ Jegou. Fixing the train-test resolution discrepancy. ´ arXiv preprint arXiv:1906.06423, 2019 ↩︎

  4. Gao Huang, Yu Sun, Zhuang Liu, Daniel Sedra, and Kilian Q Weinberger. Deep networks with stochastic depth. In European conference on computer vision, pages 646–661. Springer, 2016. ↩︎

  5. Ekin D Cubuk, Barret Zoph, Jonathon Shlens, and Quoc V Le. Randaugment: Practical data augmentation with no separate search. arXiv preprint arXiv:1909.13719, 2019. ↩︎

你可能感兴趣的:(CNN与图像分类,self-trian,noisy,student)