ENAS: 基于参数共享的高效网络结构搜索

2020 年 9 月 27 日 AINLP

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

Overall

本文是参考文献[1]的阅读笔记。

ENAS,是Efficient Neural Architecture Search的缩写。跟Darts类似,基于参数共享的网络结构搜索的目的也是为了减少网络结构搜索的计算量。而解决的方法也是不要独立的训练每个生成的网络,而是能省就省,把子网络中可以共享的参数拿出来共享,从而节省很多多余的训练。

用有向图表示循环网络结构

跟强化学习与网络结构搜索系列一样,ENAS中依然会有一个LSTM来作为controller,但是ENAS中会把网络结构用有向图来表示,Controller会决定有向图中的那条边被激活。所以,首先,怎样把网络结构用有向图表示?

有向图中有边和节点,其中,每个节点表示的是操作,每条边表示的是信息的流向。

以循环神经网络的cell为例,下图用有向图表示了一个循环网络的结构单元:

在图中,红线表示网络结构。红线和黑线全部表示的则是整个搜索空间。在红线表示的结构单元中。x[t]和h[t-1]输入给节点1,节点1输入给节点2,节点2输入给节点3,节点1还输入给节点4,节点4和节点3的输出聚合得到了最后的输出。

而这个网络结构在controller上的输入输出则如下图,第一步是直接用上一步的隐含状态h[t-1]和x[t],只需要选择操作就可以了。而后面的每个节点都有两个阶段组成,第一步是选择输入,第二步则是选择操作。

在从搜索空间采样生成具体的某个结构的时候,有两条规则,

  • 第一条是在采样第N个节点时,前面N-1个节点的输出都可以被选择,因而,在搜索空间中,节点i要有指向节点i+1到节点N的N-i条边。
  • 第二条是在结束时,没有被选择到的节点的输出需要聚合起来一起输出。

为了统一起见,还需要把输入也当成一个节点考虑进来,如下图:

这里,假设搜索空间中有N个节点,且每个节点可以是四种操作。那么,搜索空间将会有4^N x N!中网络,如果N=12,那么搜索空间大小则为10^15个。

训练流程

在ENAS算法中,有两种参数,第一种是controller的参数,第二种是搜索空间里的共享参数。那么如何训练呢?

它们是交替训练的,首先训练的是用标准的反向传播训练共享参数;其次则是训练controller里的参数。

训练共享参数

在训练共享参数的时候,对于某个具体的参数而言,同时求解所有模型在这个参数上的梯度是不可能的,所以就采用了蒙特卡洛模拟的方法,采样出来N个模型,进行求解。

在实验中,发现M=1就足够了。

训练controller参数

采用的Adam优化器,Reward函数使用的是模型在验证集上ppl,共享参数的训练是在训练集,而controller用的反馈之所以用验证集上的,是因为我们要找的是泛化能力强的模型。

生成网络结构

有了控制器以后,就可以用控制器采样一个模型作为结果了。当然,也可以像NAS里面那样,采样若干个模型,用最好的那个。

用有向图表示卷积网络

跟循环网络的结构表示类似:

但跟循环网络不同的是,在卷积网络中,可能的操作是6种,每个操作的输入可能是1个或2个。因此,可能的网络结构的数目为6^L * 2^[n * (n-1)/2]个。当L=12的时候,可能的网络结构为1.6 * 10^29个。

用有向图表示卷积网络块

同样的,很多论文中选择不去采样整个卷积网络,而是去学习Normal Block和Reduction Block,

每个节点上可以是五种操作,因而Normal Cell和Reduction Cell的可能性分别是(5 x (B-2)!)^2,所以一共是(5 x (B-2)!)^4,如果B=7的话,那么搜索空间为1.3x10^11个。

实验结果

循环网络学到的结构

全卷积网络学到的结构

卷积块学到的结构

值得注意的是,上述学到的结构都是局部最优解,把里面的一个或多个操作给变化之后,结果会显著的变差。

参考文献

[1]. Pham, Hieu, et al. "Efficient neural architecture search via parameter sharing." arXiv preprint arXiv:1802.03268 (2018).




   
   
     

说个正事哈



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

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

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

感谢支持,比心


欢迎加入AINLP技术交流群
进群请添加AINLP小助手微信 AINLPer(id: ainlper),备注NLP技术交流

推荐阅读

这个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),备注工作/研究方向+加群目的。


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

登录查看更多
1

相关内容

专知会员服务
46+阅读 · 2020年12月2日
专知会员服务
37+阅读 · 2020年11月24日
基于改进卷积神经网络的短文本分类模型
专知会员服务
25+阅读 · 2020年7月22日
[ICML-Google]先宽后窄:对深度薄网络的有效训练
专知会员服务
34+阅读 · 2020年7月5日
专知会员服务
73+阅读 · 2020年5月21日
【Google】利用AUTOML实现加速感知神经网络设计
专知会员服务
29+阅读 · 2020年3月5日
【GNN】图神经网络入门之GRN图循环网络
深度学习自然语言处理
17+阅读 · 2020年5月9日
ICLR2019 图上的对抗攻击
图与推荐
17+阅读 · 2020年3月15日
【论文笔记】基于LSTM的问答对排序
专知
12+阅读 · 2019年9月7日
概述自动机器学习(AutoML)
人工智能学家
19+阅读 · 2019年8月11日
精选论文 | 网络结构搜索-单目标跟踪【附打包下载】
人工智能前沿讲习班
3+阅读 · 2019年7月2日
论文浅尝 | 面向知识图谱补全的共享嵌入神经网络模型
开放知识图谱
31+阅读 · 2019年4月7日
深度解析LSTM神经网络的设计原理
数盟
4+阅读 · 2018年6月22日
神经网络理论基础及 Python 实现
Python开发者
6+阅读 · 2017年7月15日
A Survey on Edge Intelligence
Arxiv
51+阅读 · 2020年3月26日
Meta-Transfer Learning for Few-Shot Learning
Arxiv
4+阅读 · 2019年4月9日
LARNN: Linear Attention Recurrent Neural Network
Arxiv
5+阅读 · 2018年8月16日
Arxiv
3+阅读 · 2018年6月24日
Arxiv
14+阅读 · 2018年5月15日
Arxiv
7+阅读 · 2018年3月22日
VIP会员
相关VIP内容
专知会员服务
46+阅读 · 2020年12月2日
专知会员服务
37+阅读 · 2020年11月24日
基于改进卷积神经网络的短文本分类模型
专知会员服务
25+阅读 · 2020年7月22日
[ICML-Google]先宽后窄:对深度薄网络的有效训练
专知会员服务
34+阅读 · 2020年7月5日
专知会员服务
73+阅读 · 2020年5月21日
【Google】利用AUTOML实现加速感知神经网络设计
专知会员服务
29+阅读 · 2020年3月5日
相关资讯
【GNN】图神经网络入门之GRN图循环网络
深度学习自然语言处理
17+阅读 · 2020年5月9日
ICLR2019 图上的对抗攻击
图与推荐
17+阅读 · 2020年3月15日
【论文笔记】基于LSTM的问答对排序
专知
12+阅读 · 2019年9月7日
概述自动机器学习(AutoML)
人工智能学家
19+阅读 · 2019年8月11日
精选论文 | 网络结构搜索-单目标跟踪【附打包下载】
人工智能前沿讲习班
3+阅读 · 2019年7月2日
论文浅尝 | 面向知识图谱补全的共享嵌入神经网络模型
开放知识图谱
31+阅读 · 2019年4月7日
深度解析LSTM神经网络的设计原理
数盟
4+阅读 · 2018年6月22日
神经网络理论基础及 Python 实现
Python开发者
6+阅读 · 2017年7月15日
相关论文
A Survey on Edge Intelligence
Arxiv
51+阅读 · 2020年3月26日
Meta-Transfer Learning for Few-Shot Learning
Arxiv
4+阅读 · 2019年4月9日
LARNN: Linear Attention Recurrent Neural Network
Arxiv
5+阅读 · 2018年8月16日
Arxiv
3+阅读 · 2018年6月24日
Arxiv
14+阅读 · 2018年5月15日
Arxiv
7+阅读 · 2018年3月22日
Top
微信扫码咨询专知VIP会员