公众号关注 “视学算法”

设为 “星标”,重磅干货,第一时间送达!

来源 | 机器之心

预训练是当前计算机视觉领域的主要范式,但何恺明等人先前的研究发现,预训练对目标检测和分割任务的影响有限。因而,重新探究预训练和自训练的效果成为一个非常重要的课题。在这篇谷歌团队的论文中,Quoc V. Le 等研究者发现,当具有大量的标注数据时,自训练的运行效果要优于预训练,并在 COCO 检测和 PASCAL 分割任务上实现了 SOTA 结果。

众所周知,预训练是计算机视觉领域的主导范式,研究人员也热衷于预训练。

但是,预训练真的有用吗?

早在 2018 年,何恺明等人在论文《Rethinking ImageNet Pre-training》中重新思考了 ImageNet 预训练模型。他们发现这种利用预训练模型抽取「通用」特征,并借此解决大多数视觉任务的方法是值得质疑的。因为即使在比 ImageNet 还大 3000 倍的数据集上进行预训练,它们对目标检测任务的性能提升仍然不是很大。

近日,谷歌大脑研究团队首席科学家 Quoc V. Le 公布了其团队的一项新研究,主题是「重新思考预训练和自训练」。在这篇论文中,谷歌研究者展示了当标注数据很多时,预训练不起作用。相比之下,当标注数据很多时,自训练可以运行良好,并在 PASCAL 分割和 COCO 检测数据集上实现 SOTA 效果

关于自训练,谷歌团队先前已经展开相关研究,分别是在 ImageNet 数据集上实现 SOTA 的 Noisy Student Training 和在 LibriSpeech 数据集上实现 SOTA 的 Noisy Student Training for Speech。

而这项新研究则是对先前研究成果的延续,该研究发现:在大型数据集上取得优秀结果需要自训练(w/Noisy Student)。

接下来,我们来看这项研究的具体内容。

论文链接:https://arxiv.org/pdf/2006.06882.pdf

预训练是计算机视觉领域中的主要范式。例如,监督式 ImageNet 预训练常用于初始化目标检测和分割模型的主干网络。但是,何恺明等人的研究展示了一个令人惊讶的结果,即 ImageNet 预训练对 COCO 目标检测任务的影响有限。

于是,谷歌大脑的研究人员将自训练作为另一种在相同设置上利用额外数据的方法进行研究,并将其与 ImageNet 预训练进行对比。该研究展示了自训练的通用性和灵活性,并发现以下三点洞见:

  1. 更强的数据增强和更多标注数据,却使得预训练的价值降低;

  2. 与预训练不同,在提供更强大的数据增强时,自训练通常起到积极作用,不论是在低数据机制还是高数据机制下;

  3. 在预训练有用的情况下,自训练比预训练更有用。

例如,在 COCO 目标检测数据集上,研究人员使用 1/5 的标注数据时,预训练起到积极影响,但当使用全部标注数据时,准确率反而下降。而自训练在所有数据集规模下都能带来 1.3 至 3.4AP 的性能提升,即自训练在预训练不起作用的场景下依然有效。在 PASCAL 分割数据集上(该数据集比 COCO 小很多),尽管预训练起到很大的作用,但自训练带来的性能提升更大。

在 COCO 目标检测任务中,自训练实现了 54.3AP,相比最强大的预训练模型 SpineNet 提升了 1.5AP;在 PASCAL 分割任务中,自训练实现了 90.5 mIOU,相比之前的最优结果(来自 DeepLabv3+)提升了 1.5%

如何对比预训练和自训练

方法和控制因子

这部分涉及数据增强、预训练和自训练三个方面。

1. 数据增强

该研究使用四种适用于目标检测和分割任务的不同数据增强策略,分别是:FlipCrop、AutoAugment、具备更高 scale jittering 的 AutoAugment 以及具备更高 scale jittering 的 RandAugment。(下文中,这四种数据增强策略分别写作 Augment-S1、Augment-S2、Augment-S3 和 Augment-S4。)

2. 预训练

为了评估预训练的效果,研究者对不同质量的 ImageNet 预训练模型检查点进行了研究。此外,为了控制模型容量,所有检查点均使用同样的模型架构,不过由于训练方法不同,它们在 ImageNet 上的准确率有所不同。

该研究使用 EfficientNet-B7 架构 [51] 作为预训练的强基线方法。EfficientNet-B7 架构有两个可用的检查点:1)使用 AutoAugment 训练的 EfficientNet-B7 检查点,它在 ImageNet 上的 top-1 准确率为 84.5%;2)使用 Noisy Student 方法训练的 EfficientNet-B7 检查点,它利用额外 300M 无标注图像,实现了 86.9% 的 top-1 准确率。该研究将这两个检查点分别写为 ImageNet 和 ImageNet++。基于随机初始化进行训练的模型即 Rand Init。

下表 1 展示了该研究所用数据增强和预训练检查点的定义:

3. 自训练

该研究使用的自训练实现基于 Noisy Student training [10],共有三个步骤:1)基于标注数据(如 COCO 数据集)训练教师模型;2)教师模型基于无标注数据(如 ImageNet 数据集)生成伪标签;3)训练学生模型,对人类标签和伪标签上的损失进行联合优化

学生模型中的主要噪声来源是数据增强和相关模型之前使用过的其他噪声扰动方法。

预训练 VS 自训练,谁赢?

数据增强和标注数据量对预训练的影响

谷歌研究人员将前述何恺明的研究进行了扩展,发现了以下几点:

1. 在使用强大的数据增强时,预训练会损伤模型性能。

研究者改变数据增强的强度,并分析对预训练的影响。如下图 1 左图所示,在使用标准数据增强(Augment-S1)时,预训练起到积极作用。但随着数据增强强度的增加,预训练的价值逐渐减退。

图 1:数据增强和数据集规模对预训练的影响。

2. 更多标注数据反倒会降低预训练的价值。

研究者分析了标注数据集规模变化时,预训练的影响。如上图 1 右图所示,在低数据机制(20%)下预训练产生积极影响,但在高数据机制下,预训练的作用是中性甚至有害的。

这一结果与何恺明的观察基本一致。不过该研究还有一项新发现:检查点质量与低数据机制下的最终性能有关(ImageNet++ 在 20% COCO 数据集上的性能最优)。

数据增强和标注数据集规模对自训练的影响

研究者对自训练展开分析,并将其与上述结果进行了对比。出于一致性的考虑,研究人员继续使用 COCO 目标检测任务,并以 ImageNet 数据集作为自训练数据源。与预训练不同,自训练将 ImageNet 数据集仅作为无标注数据。

1. 自训练在高数据 / 强数据增强的机制下能够起到积极作用,而预训练则不能。

研究者首先分析了数据增强强度对目标检测器性能的影响。下表 2 展示了使用四种数据增强策略时自训练的性能变化,并将这些结果与监督学习(Rand Init)和预训练(ImageNet Init)进行了比较。

表 2:使用四种数据增强方法时自训练的性能变化,以及与监督学习和预训练的比较。

2. 自训练适用于不同规模的数据集,是对预训练的补充。

研究者接下来分析了不同 COCO 标注数据集规模对自训练性能的影响。

如下表 3 所示,自训练在小数据集和大数据集上都对目标检测器起到积极作用。最重要的是,在 100% 标注数据集规模的高数据机制下,自训练显著提升了所有模型的性能,而预训练则损害了模型性能。

表 3:自训练可以在所有规模的标注数据集上提升模型性能,而预训练无法实现该效果。

自训练在高数据/强数据增强机制下起到积极作用,自监督预训练则不能

研究者还研究了另一种流行的预训练方法:自监督学习。

如下表 4 所示,自监督预训练检查点在 COCO 数据集上对性能的损害与监督预训练方法相当。与使用随机初始模型(randomly initialized model)相比,自监督和监督预训练模型的性能均下降了 0.7AP。相较于它们,自训练模型将性能提升了 0.8AP。

此外,尽管自监督学习和自训练都忽略了标签,但在使用无标注 ImageNet 数据增强 COCO 数据集方面,自训练似乎更有效。

表 4:在 COCO 数据集上,自监督 / 监督预训练与自训练对模型性能的影响。

探索自训练和预训练的极限

研究者结合了数据增强、自训练和预训练的相互作用来提升 SOTA 结果,具体如下表 5 和下表 6 所示:

表 5:在 COCO 目标检测数据集上的结果。

表 6:在 PASCAL VOC 语义分割数据集上的结果。

重新思考预训练和自训练

重新思考预训练和通用特征表示

计算机视觉的目标之一是开发能够解决多项任务的通用特征表示。而该研究实验通过预训练和自训练的性能差异,展示了在分类和自监督任务中学习通用表示的局限性。

研究人员对预训练性能较弱的直观见解是,预训练无法感知要处理的特定任务,因而无法进行适应。而在任务发生变化时,这样的适应是必要的。例如,适合 ImageNet 的特征可能缺失对 COCO 数据集有用的位置信息。

谷歌研究者得出的结论是:将自训练目标和监督学习进行联合训练,更有利于适应特定任务。这或许能够使自训练产生更普遍的积极影响。

联合训练的意义

自训练机制的优势在于,它能联合训练监督和自训练目标,从而解决二者之间的不匹配。那么,联合训练 ImageNet 和 COCO 是否也能解决这种不匹配呢?

下表 7 展示了将 ImageNet 分类和 COCO 目标检测联合训练的结果:

表 7:预训练、自训练和联合训练在 COCO 数据集上的对比结果。

自训练的优势:可扩展性、通用性和灵活性

实验结果表明自训练具备以下优势:

  • 灵活性:自训练可以很好地应对实验中的每一种设置,如低数据、高数据、弱数据增强和强数据增强。同时自训练对不同的架构(ResNet、EfficientNet、SpineNet、FPN、NAS-FPN)、数据源(ImageNet、OID、PASCAL、COCO)和任务(目标检测、分割)都有效;

  • 通用性:对于预训练失败或成功的场景,自训练都能够应对;

  • 可扩展性:在使用更多标注数据和更好模型时,自训练也能实现优秀的性能。

机器学习领域的一个苦涩教训是:在具备更多标注数据、更多算力或更好的监督训练方法时,大部分方法会失败,不过这种情况并没有出现在自训练这里。

自训练的局限性

现有的自训练方法也有局限。相比基于预训练模型进行微调,自训练需要更多算力。根据预训练模型的质量、数据增强的强度和数据集规模,预训练可实现 1.3 至 1.8 倍的加速。此外,低数据应用(如 PASCAL 分割)也需要优秀的预训练模型。

预、自训练之争:谷歌说预训练虽火,但在标注数据上自训练更有效相关推荐

  1. Pytorch:NLP 迁移学习、NLP中的标准数据集、NLP中的常用预训练模型、加载和使用预训练模型、huggingface的transfomers微调脚本文件

    日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) run_glue.py微调脚本代码 python命令执行run ...

  2. 将公平注入AI:机器学习模型即使在不公平数据上训练也能产生公平输出

    来源:ScienceAI 本文约1800字,建议阅读9分钟 如何迫使深度度量学习模型首先学习好的特征? 如果使用不平衡的数据集训练机器学习模型,比如一个包含远多于肤色较浅的人的图像的数据集,则当模型部 ...

  3. keras笔记(3)-猫狗数据集上的训练以及单张图片多张图片的测试

    之前也写过关于使用tensorflow在猫狗数据集上的训练,想要学习的可以看一下 数据集下载 猫狗数据集:https://pan.baidu.com/s/13hw4LK8ihR6-6-8mpjLKDA ...

  4. AI 图片截取、ffmpeg使用及安装, anaconda环境,图片标注(labelme),模型训练(yolov5),CUDA+Pytorch安装及版本相关问题

    AI 图片截取(ffmpeg), anaconda环境,图片标注(labelme),模型训练(yolov5),CUDA+Pytorch安装及版本相关问题 一.截取有效图片 录制RTSP视频脚本 #!/ ...

  5. 谷歌BERT预训练源码解析(一):训练数据生成

    目录 预训练源码结构简介 输入输出 源码解析 参数 主函数 创建训练实例 下一句预测&实例生成 随机遮蔽 输出 结果一览 预训练源码结构简介 关于BERT,简单来说,它是一个基于Transfo ...

  6. 完胜BERT!谷歌NLP预训练利器:小模型也有高精度,单个GPU就能训练 | 代码开源...

    十三 发自 凹非寺 量子位 报道 | 公众号 QbitAI 这款NLP预训练模型,你值得拥有. 它叫ELECTRA,来自谷歌AI,不仅拥有BERT的优势,效率还比它高. ELECTRA是一种新预训练方 ...

  7. 线上直播丨KDD 2021预训练Workshop,谷歌MSRA等5位顶尖研究者参与研讨

    近年来,机器学习领域最激动人心的进展,莫过于预训练方法的兴起,尤其是超大规模预训练模型的出现.各种领域,预训练方法都取得了一定的成功,如自然语言处理.计算机视觉.语音识别和图学习. 预训练的宗旨是利用 ...

  8. 《预训练周刊》第9期:TABBIE:表格数据的预训练表示、「视觉预训练神作」:不用图片却训出图像识别SOTA?...

    No.09 智源社区 预训练组 预 训 练 研究 观点 资源 活动 关于周刊 超大规模预训练模型是当前人工智能领域研究的热点,为了帮助研究与工程人员了解这一领域的进展和资讯,智源社区整理了第9期< ...

  9. 自然语言处理--gensim.word2vec 模块加载使用谷歌的预训练模型googlenews-vectors-negative300.bin.gz

    词向量将词的语义表示为训练语料库中上下文中的向量,可以把词向量看作是一个权重或分数的列表,列表中的每个权重或分数都对应于这个词在某个特定维度的含义. 很多公司都提供了预训练好的词向量模型,而且有很多针 ...

最新文章

  1. C#.NET通用权限管理在DB2数据库上运行的脚本参考 - 序列创建脚本参考
  2. 文巾解题 113. 路径总和 II
  3. HDU Problem - 4292 Food(最大流, 建边)
  4. Swift--变量和常量
  5. mysql stragg_如何在MySQL中將子查詢行的結果顯示為一列?
  6. 使用Lambda在AWS云上使用Java
  7. 升级PowerShell至4.0版本
  8. mysql 杂记(二)
  9. JDBC数据库驱动的下载、安装与连接
  10. dz中footer.php在哪找,去掉DZ顶部标题,美化底部左下方版权,详细教程
  11. XShell rz、sz命令
  12. 理论计算机科学 维基百科,多元智能理论(维基百科的比较全面的介绍).pdf
  13. netty--关于NIO和OIO
  14. 微内核和宏内核的区别是什么
  15. springboot2.0.5集成mybatis(PageHelper分页插件、generator插件使用)
  16. RK3568平台开发系列讲解(驱动篇)驱动开发之RTC 使用
  17. Netapp存储FTP功能配置
  18. AD7656调试记录
  19. ssd处理灰度图_ECCV 引用量最高的10篇论文!SSD登顶!何恺明ResNet改进版位居第二...
  20. vscode中对flake8(python静态代码检查工具)和yapf(python代码格式化工具)的设置

热门文章

  1. 刻意练习:机器学习实战 -- Task01. K邻近算法
  2. 技术图文:NumPy 的简单入门教程
  3. 芯片刀片服务器,使用“刀片服务器”其实不难
  4. Pandas 数据类型概述与转换实战
  5. 人类偏好的“可塑性”,从博弈说起
  6. 30年间,软件开发行业为何Bug纷飞?
  7. 人工智能灵魂注入,燃烧你的卡路里——2018,你AI了吗!?
  8. 图灵奖得主Raj Reddy:以历史的视角重新审视“人工智能”
  9. AI时代,如何缓解CMO的决策焦虑?
  10. 重要更新 | 谷歌发布 TensorFlow 1.4,迁移Keras,支持分布式训练