专栏首页量子位谷歌开源预训练新范式BiT,准确率提高近25%!网友评价:CV界的BERT

谷歌开源预训练新范式BiT,准确率提高近25%!网友评价:CV界的BERT

鱼羊 发自 凹非寺 量子位 报道 | 公众号 QbitAI

BERT在NLP界无往不利,大大提高了自然语言模型的性能,那么,在计算机视觉领域,有没有可能一个CNN打天下?

现在,谷歌大脑给出了一个答案——开源CV预训练新范式BiT

BiT(Big Transfer),简而言之,是一个可以作为任意视觉任务起点的预训练ResNet。

在这项研究中,谷歌大脑证明:用大量通用数据进行预训练的情况下,简单的迁移策略就能让CV模型在下游任务上获得良好的性能。

研究人员希望,BiT能取代现在常用的ImageNet预训练模型,推动计算机视觉研究的发展。

甚至有网友这样评价:BiT是CV界的BERT。

预训练的ResNet

所以BiT具体是怎么一回事呢?

首先,要说到研究人员的3个新发现。

其一,是数据集大小和模型容量之间的关系。

研究人员利用经典的ResNet架构,在ILSVRC-2012(1.28M)、ImageNet-21K(14M)和JFT(300M)这三个数据集上,分别训练了从标准的50层R50x1,到4倍宽、152层深的R152x4等几个变体。

观察结果显示,想要在更大的数据集上获得更好的预训练效果,就需要增加模型容量。

另外,在较大的数据集上进行预训练,不一定会提高性能。但是,通过增加计算预算和训练时间,性能能得到明显的改善。

第二个发现更加重要:训练时间的长短至关重要。

如果在不调整计算预算的情况下,在一个较大的数据集上进行预训练,训练时间越长,性能反而可能变差。

而针对新的数据集调整训练时间,改进效果会非常显著。

另外,研究人员还发现,用组归一化(GN)取代批归一化(BN),对大规模预训练而言是有益的。

首先,BN的状态,包括神经激活的均值和方差,需要在预训练和迁移之间进行调整,而GN是无状态的,从而绕开了这个问题。

其次,BN使用的是批处理级统计,当大模型不可避免地出现小每设备(per-device)批处理量时,BN就会变得不可靠。

由于 GN 不计算批处理级统计,因此它也从侧面回避了这个问题。

所以,研究人员们提出了这样的预训练策略:采用标准ResNet,增加深度和宽度,用GNWS替换BN,并在大型通用数据集上进行更多迭代。

迁移学习

接下来,就是针对下游任务微调预训练BiT模型。

研究人员介绍,BiT只需要预训练一次,此后在针对下游任务进行微调时,成本很低。

微调涉及到很多超参数,比如学习率、权重衰减等。

对此,研究人员提出了BiT-HyperRule方法。该方法仅基于高级数据集特征,如图像分辨率和标注样本数量等。也就是说,BiT并不会对每个下游任务都进行超参数调整。这能有效地降低任务适应成本。

并且,对BiT模型进行预训练后,即使下游任务只有少量标注样本,模型一样表现良好。

研究人员还观察到,在这种情况下,增加用于预训练的通用数据量和架构容量,所产生的模型适应新数据的能力也将大幅提高。

实验结果

为了验证BiT的表现是否具有普遍性,研究人员在VTAB-1k上进行了实验。

VTAB-1k是由19个不同任务组成的任务套件,每个任务只有1000个标注样本。

BiT-L模型(在JFT-300M上进行预训练)迁移到这些任务上后,获得了76.3%的总得分,比此前的SOTA方法提高了5.8%。

另外,BiT-L在标准CV基准Oxford Pets、Flowers、CIFAR上的结果也表明,这种大规模预训练 + 简单迁移的策略在数据量适中的情况下也是有效的。

为了进一步评估BiT的鲁棒性,研究人员还在基于真实照片的ObjectNet数据集上对模型进行验证。

BiT-L模型的top-5精度刷新记录,达到80%,比此前的SOTA方法提高将近25%。

关于作者

这篇论文有三位共同一作。

Alexander Kolesnikov,谷歌大脑研究软件工程师,于2018年在奥地利科技学院获机器学习与计算机视觉博士学位。

Lucas Beyer ,谷歌大脑研究工程师,2018年博士毕业于德国亚琛工业大学。

翟晓华,谷歌大脑高级研究工程师,博士毕业于北京大学。研究方向是表征学习、自监督学习、GAN等。

传送门

谷歌博客: https://ai.googleblog.com/2020/05/open-sourcing-bit-exploring-large-scale.html

论文地址: https://arxiv.org/abs/1912.11370

本文分享自微信公众号 - 量子位(QbitAI),作者:关注前沿突破

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-05-22

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 一文看懂如何搭建AI应用:10周学会深度学习,还赢下5千美元

    春节后第一个休息日,量子位给大家准备了一个不一样的故事。 在这个故事里,主人公David Brailovsky(就叫阿D吧)参加了一场计算机视觉比赛。这个挑战赛...

    量子位
  • 腾讯开源首个医疗AI项目,业内首个3D医疗影像大数据预训练模型

    旗下顶级AI实验室腾讯优图,对外开源了腾讯首个医疗AI项目——深度学习预训练模型MedicalNet。

    量子位
  • Kaggle大牛小姐姐自述:我是怎么成为竞赛中Top 0.3%的 | 干货攻略

    天天跟数据打交道的研究人员,都有一个成为Kaggle顶级大师(Grandmaster)的梦想。

    量子位
  • 使用 VS Code 上手体验 Flutter

    Flutter 目前支持 Android Studio/Intellij/Visual Studio Code/终端&文本编辑器 四种方式来编写, AS 我已经...

    程序亦非猿
  • Java 如何抛出异常、自定义异常

    1、定义 : 一个方法不处理这个异常,而是调用层次向上传递,谁调用这个方法,这个异常就由谁来处理。

    Java编程指南
  • 论文赏析[NAACL18]神经成分句法分析器的一些分析

    What's Going On in Neural Constituency Parsers? An Analysisgodweiyang.com

    godweiyang
  • 手撸 Java Web RBAC 权限管理

    权限管理是在项目中经常要使用到的模块,有着极其重要的功能。 在 Java 帝国中有两个比较出名的权限框架,分别为 Shiro 和 Spring Security...

    一份执着✘
  • sanic(2):创建handler

    上文说到已经创建了app,但是此时的项目里只有两个光秃秃的文件。要完成一个完整的网站,还需要在上面添加handler和templates。

    超级大猪
  • WordPress文章中插入HTML、PHP等代码被误执行的解决方法

    我们在WordPress写文章时,如果想引用一段PHP,HTML,CSS或js等代码,有时发现代码被自动处理了,无法正常显示。

    叮当叮
  • 深度学习工程模板:简化加载数据、构建网络、训练模型和预测样本的流程

    注意:支持在训练中调用callbacks,额外添加模型存储、TensorBoard、FPR度量等。

    朱晓霞

扫码关注云+社区

领取腾讯云代金券