21

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

 3 years ago
source link: http://mp.weixin.qq.com/s?__biz=MjM5ODkzMzMwMQ%3D%3D&%3Bmid=2650416703&%3Bidx=2&%3Bsn=04764e3e8d418933e550f21aa8726fa5
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Znui6v.jpg!mobile

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

Overall

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

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

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

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

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

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

YBZVjqa.png!mobile

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

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

JNji6vI.png!mobile

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

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

  • 第二条是在结束时,没有被选择到的节点的输出需要聚合起来一起输出。

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

eaAne2u.png!mobile

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

训练流程

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

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

训练共享参数

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

ZjIruqn.png!mobile

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

训练controller参数

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

生成网络结构

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

用有向图表示卷积网络

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

v6Nnia7.png!mobile

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

用有向图表示卷积网络块

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

mmQ7bqe.png!mobile

uUFvqi.png!mobile

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

实验结果

Jnaqauq.png!mobile

AjIJFzF.png!mobile

循环网络学到的结构

FVFreez.png!mobile

全卷积网络学到的结构

6RvAV3B.png!mobile

卷积块学到的结构

ZZ3AVb2.png!mobile

RZVJbyN.png!mobile

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

参考文献

[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技术交流

yi6vEbV.jpg!mobile

推荐阅读

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

yamaeu.jpg!mobile

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK