BigNAS: 一次学习,各种尺寸小模型应有尽有

2020 年 11 月 6 日 AINLP

兴趣所致,关注了一些AutoML的知识,主要是AutoML中的网络结构搜索的部分,特记录下来希望能形成体系。以下是要写的文章列表。

Overall

现在,在网络结构搜索上,为了效果和速度,大家倾向于一次性的训练一个总模型,比如上面文章列表中的Darts和ENAS。然后再从总模型上采样得到符合条件的最优子模型。之后再重新训练、微调或者其他办法进行处理。

在得到总模型后,后续生成子模型后的处理比较耗时,给整个流程增加了额外的计算量和复杂度。BigNAS的出现则解决了这一问题,使得在大模型训练完成后,可以不用后续处理,直接生成各种尺寸的子模型就能达到最优的效果。

以下是三种从总模型到子模型的方法,其中,左图是得到总模型后,采样或者用某种策略得到子模型,然后再进行重新训练。中图则是得到总模型后,进行蒸馏,压缩得到各种各样的子模型。右图则是本文提出的方法,直接一步到位,训练得到总模型,然后总模型生成能够直接使用的子模型。

要做成这个事情,就需要在训练总模型的时候,能够同时将总模型中能够采样出来的大模型和小模型训练好,注意,此时大模型和小模型是有参数共享的。

这个问题很难,难在什么地方?比如:

  • 如果没有正确的初始化,损失函数会爆炸。
  • 步调不一致:小模型还没训练好,大模型可能已经过拟合了。
  • 大模型更倾向于在训练数据集上过拟合,而小模型一般不会。

BigNAS则针对这些问题提出了很多改进的手段。总体来说,生成子模型需要两步:

  1. 训练得到一个总模型,从这个总模型中可以通过采样,切片等方式生成直接可用的子模型。
  2. 对于一定的资源限制条件,在总模型上从粗粒度到细粒度的进行筛选,得到符合条件的最好模型。

训练总模型

在训练总模型的时候,使用了如下技巧:

三明治法则

在训练的时候,从总模型中采样出最大模型,最小模型以及随机的N个模型(实验中N=2)。然后在几个模型上分别训练得到梯度,梯度进行聚合再更新总模型。

在这里,总模型大小是由输入图像大小、模型宽度、模型深度、核大小等参数决定的;每个参数都有自己的值集合,比如输入图像大小就是从[128, 196, 256, 384]中任选一个值。最小模型就是指最小的输入图像,最浅最窄的模型等等。通过这种方式,使得总模型中的大小模型都被训练了。

原地蒸馏

在训练的过程中,最大模型的损失是和ground truth去计算,其他小模型的损失则是和大模型预测的soft Label去计算,只用蒸馏的损失。此时注意,给大模型和小模型的输入,需要是图像中的同一个patch。用了原地蒸馏后,模型效果增加了0.3%。

初始化

在训练过程中,发现训练非常不稳定,将学习率降低到30%后,可以收敛,但是最后top-1的准确率低1%。

于是采用了如下手段,鉴于我们训练的模型都是残差网络,所以我们在这里会通过设置残差网络中每个block的最后的Batch Normalizaiton的系数γ=0,来确保经过残差网络的block后,方差不变。这个技巧在文献[2]中被提出,在它们那里只是有了提升,而在BigNAS里确实必需。

收敛行为

在实验中,发现大模型和小模型的收敛行为很不一致,大模型过拟合了小模型才刚刚收敛,如下图左。

为了解决这个问题,对学习率进行了改进,将其变为指数衰减+常量结尾,即最后的学习率是一个常量,常量值是最初值的5%。如上图右。有了更大的学习率后,大模型会在最优解上左右摇摆,但不会过拟合,小模型会加快收敛。从而解决这个问题。

正则化

一般来说,大模型容易过拟合而小模型不会,所以,我们需要将应对过拟合的手段加在大模型上而小模型不用,这样就增大了复杂度,因为大模型和小模型是共享参数的。

但是,BigNAS中采用了一种简单但有效的方法,即只对最大的子模型做正则化。采用的手段就是dropout和权重衰减。

批归一化校准

批归一化的统计参数并没有被累积,因为训练阶段是多模型训练,所以这些统计值的定义有问题。在模型训练结束后,会重新对BN的统计量做校准,此时并不需要重新训练模型

从粗到细的结构选择

给定计算资源的限制后,需要从总模型中找到最优的子模型。在这个选择过程中,首先定义一个受限的参数集合,然后评估这个首先参数中所有子模型得到benchmark,这是粗粒度选择。

在得到benchmark后,定义一个更加细粒度的参数集合,从上面粗粒度过程中得到的最好模型上做参数选择的更新。

最后,选定参数后,直接使用总模型里的参数初始化,得到网络结构。这个过程不需要重新训练。

实验

实验使用的搜索空间如下,这个空间基于MobileNetV2。

得到的结果如下,可以看到,在每个参数量级上,BigNAS都能得到最好的结果。

初始化的不同带来的模型收敛的不同,结果如下,左侧为小模型,右侧为大模型。这张图是模型训练开始不久后的。

同样的,如果关注模型最后的结果,如下图,可见,使用新的初始化方法+原来的学习率,可以学的更快更好。

学习率加上恒定结尾后,曲线如下,可见,大模型和小模型的训练步调变的一致了。

正则化的影响如下:

总结与思考

勤思考,多提问是Engineer的良好品德。

在训练过程中需要从总模型中采样小模型,这个步骤需要对图做修改,但是TPU上的图在训练过程中是不允许修改的,那么如何实现呢?

参考文献

  • [1]. Yu, Jiahui, et al. "Bignas: Scaling up neural architecture search with big single-stage models." arXiv preprint arXiv:2003.11142 (2020).
  • [2]. Goyal, Priya, et al. "Accurate, large minibatch sgd: Training imagenet in 1 hour." arXiv preprint arXiv:1706.02677 (2017).



由于微信平台算法改版,公号内容将不再以时间排序展示,如果大家想第一时间看到我们的推送,强烈建议星标我们和给我们多点点【在看】。星标具体步骤为:

(1)点击页面最上方"AINLP",进入公众号主页。

(2)点击右上角的小点点,在弹出页面点击“设为星标”,就可以啦。

感谢支持,比心

欢迎加入推荐系统交流群
进群请添加AINLP小助手微信 AINLPer(id: ainlper),备注推荐系统

推荐阅读

这个NLP工具,玩得根本停不下来

征稿启示| 200元稿费+5000DBC(价值20个小时GPU算力)

完结撒花!李宏毅老师深度学习与人类语言处理课程视频及课件(附下载)

从数据到模型,你可能需要1篇详实的pytorch踩坑指南

如何让Bert在finetune小数据集时更“稳”一点

模型压缩实践系列之——bert-of-theseus,一个非常亲民的bert压缩方法

文本自动摘要任务的“不完全”心得总结番外篇——submodular函数优化

Node2Vec 论文+代码笔记

模型压缩实践收尾篇——模型蒸馏以及其他一些技巧实践小结

中文命名实体识别工具(NER)哪家强?

学自然语言处理,其实更应该学好英语

斯坦福大学NLP组Python深度学习自然语言处理工具Stanza试用

关于AINLP

AINLP 是一个有趣有AI的自然语言处理社区,专注于 AI、NLP、机器学习、深度学习、推荐算法等相关技术的分享,主题包括文本摘要、智能问答、聊天机器人、机器翻译、自动生成、知识图谱、预训练模型、推荐系统、计算广告、招聘信息、求职经验分享等,欢迎关注!加技术交流群请添加AINLPer(id:ainlper),备注工作/研究方向+加群目的。


阅读至此了,分享、点赞、在看三选一吧🙏

登录查看更多
0

相关内容

大模型是基于海量多源数据打造的预训练模型,是对原有算法模型的技术升级和产品迭代,用户可通过开源或开放API/工具等形式进行模型零样本/小样本数据学习,以实现更优的识别、理解、决策、生成效果和更低成本的开发部署方案。
【AAAI2021】面向交通需求预测的耦合层图卷积
专知会员服务
45+阅读 · 2021年1月31日
专知会员服务
37+阅读 · 2020年11月24日
专知会员服务
182+阅读 · 2020年11月23日
【NeurIPS2020 】 数据扩充的图对比学习
专知会员服务
48+阅读 · 2020年11月9日
【KDD2020】TAdaNet: 用于图增强元学习的任务自适应网络
专知会员服务
17+阅读 · 2020年9月21日
【KDD2020】最小方差采样用于图神经网络的快速训练
专知会员服务
27+阅读 · 2020年7月13日
【ICLR2020-哥伦比亚大学】多关系图神经网络CompGCN
专知会员服务
49+阅读 · 2020年4月2日
CVPR2020 | 单目深度估计中的不确定度探究
基于Pre-trained模型加速模型学习的6点建议
深度学习与NLP
5+阅读 · 2018年5月26日
基础|Word2vec的原理介绍
全球人工智能
10+阅读 · 2018年1月4日
GAN做图像翻译的一点总结
PaperWeekly
4+阅读 · 2017年12月26日
深度图像先验:无需学习即可生成新图像
论智
45+阅读 · 2017年12月4日
[学习] 这些深度学习网络调参技巧,你了解吗?
菜鸟的机器学习
7+阅读 · 2017年7月30日
Arxiv
0+阅读 · 2021年2月2日
Sparse Sequence-to-Sequence Models
Arxiv
5+阅读 · 2019年5月14日
Parsimonious Bayesian deep networks
Arxiv
5+阅读 · 2018年10月17日
Arxiv
8+阅读 · 2018年5月17日
Arxiv
3+阅读 · 2018年5月11日
Arxiv
4+阅读 · 2017年7月25日
VIP会员
相关VIP内容
【AAAI2021】面向交通需求预测的耦合层图卷积
专知会员服务
45+阅读 · 2021年1月31日
专知会员服务
37+阅读 · 2020年11月24日
专知会员服务
182+阅读 · 2020年11月23日
【NeurIPS2020 】 数据扩充的图对比学习
专知会员服务
48+阅读 · 2020年11月9日
【KDD2020】TAdaNet: 用于图增强元学习的任务自适应网络
专知会员服务
17+阅读 · 2020年9月21日
【KDD2020】最小方差采样用于图神经网络的快速训练
专知会员服务
27+阅读 · 2020年7月13日
【ICLR2020-哥伦比亚大学】多关系图神经网络CompGCN
专知会员服务
49+阅读 · 2020年4月2日
相关资讯
CVPR2020 | 单目深度估计中的不确定度探究
基于Pre-trained模型加速模型学习的6点建议
深度学习与NLP
5+阅读 · 2018年5月26日
基础|Word2vec的原理介绍
全球人工智能
10+阅读 · 2018年1月4日
GAN做图像翻译的一点总结
PaperWeekly
4+阅读 · 2017年12月26日
深度图像先验:无需学习即可生成新图像
论智
45+阅读 · 2017年12月4日
[学习] 这些深度学习网络调参技巧,你了解吗?
菜鸟的机器学习
7+阅读 · 2017年7月30日
相关论文
Arxiv
0+阅读 · 2021年2月2日
Sparse Sequence-to-Sequence Models
Arxiv
5+阅读 · 2019年5月14日
Parsimonious Bayesian deep networks
Arxiv
5+阅读 · 2018年10月17日
Arxiv
8+阅读 · 2018年5月17日
Arxiv
3+阅读 · 2018年5月11日
Arxiv
4+阅读 · 2017年7月25日
Top
微信扫码咨询专知VIP会员