兴趣所致,关注了一些AutoML的知识,主要是AutoML中的网络结构搜索的部分,特记录下来希望能形成体系。以下是要写的文章列表。
本文是参考文献[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个节点,且每个节点可以是四种操作。那么,搜索空间将会有4^N x N!中网络,如果N=12,那么搜索空间大小则为10^15个。
在ENAS算法中,有两种参数,第一种是controller的参数,第二种是搜索空间里的共享参数。那么如何训练呢?
它们是交替训练的,首先训练的是用标准的反向传播训练共享参数;其次则是训练controller里的参数。
在训练共享参数的时候,对于某个具体的参数而言,同时求解所有模型在这个参数上的梯度是不可能的,所以就采用了蒙特卡洛模拟的方法,采样出来N个模型,进行求解。
在实验中,发现M=1就足够了。
采用的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技术交流 推荐阅读
征稿启示| 200元稿费+5000DBC(价值20个小时GPU算力)
完结撒花!李宏毅老师深度学习与人类语言处理课程视频及课件(附下载)
模型压缩实践系列之——bert-of-theseus,一个非常亲民的bert压缩方法
文本自动摘要任务的“不完全”心得总结番外篇——submodular函数优化
斯坦福大学NLP组Python深度学习自然语言处理工具Stanza试用
关于AINLP
AINLP 是一个有趣有AI的自然语言处理社区,专注于 AI、NLP、机器学习、深度学习、推荐算法等相关技术的分享,主题包括文本摘要、智能问答、聊天机器人、机器翻译、自动生成、知识图谱、预训练模型、推荐系统、计算广告、招聘信息、求职经验分享等,欢迎关注!加技术交流群请添加AINLPer(id:ainlper),备注工作/研究方向+加群目的。
阅读至此了,分享、点赞、在看三选一吧🙏