Darts: 可微结构搜索

2020 年 9 月 26 日 AINLP

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

Overall

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

之前给大家介绍过基于RL的网络结构搜索,基于遗传算法的网络结构搜索。这些方法有一个问题,那就是训练时间太长。因而诞生了许多以节省时间为目的,同时保证效果的算法,比如共享参数的ENAS,比如使用了超网络的SMASH(算是隐式的共享参数),比如performance predictor(通过预估来把不必要的训练给放弃掉)等。本文所介绍的Darts也是其中的一种。

基于遗传算法还有基于RL的算法之所以耗时比较长,是因为在这两种算法中,网络结构跟网络结构对应的参数是两回事,网络结构是离散的,要先确定网络结构,然后再去训练网络结构所对应的参数。因而耗时就长了。

Darts则不然,Darts,是Differentiable Architeture Search的缩写。在Darts中,网络结构的确定是可微的,即可以把梯度传递下去的,这样,就使得网络结构的学习跟网络结构对应参数的学习在一起了。其实,在读了下文中的算法细节后,大家会发现,Darts也做到了不同结构间的参数共享。

搜索空间

在Darts中,网络结构单元被表示成一个有向图,节点表示数据,而边表示在数据上的操作。每个单元有两个输入还有一个输出。然后把若干个单元叠加起来就组成了一个完整的网络。

对于卷积网络而言,每个单元的输入可以是之前的任意一个单元的输出。而对于循环网络而言,每个单元的输入则是当前步的输入还有上一步的输出。每个单元的输出则是把单元中每个中间节点的输出都聚合起来(一般是拼接)。而每一个中间节点则是计算它所有的父节点上得到的值。

如下图中的a图所示,a图中每个边还没确定,我们可以先假设它已经确定了,那么可以看到,节点2是从0节点和1节点上分别做一个操作得到的。

那么,Darts是如何做到在结构搜索上可微的呢?这一点是通过把选择概率化做到的,即在之前的很多算法中,选择一个操作就是选择一个操作,但在Darts里,选择是一个可以通过softmax进行计算的概率,如上图中的b图,节点之间可以有多个操作,这些操作通过概率聚合起来。概率公式如下:

在公式中,可以看到,对于每一个边上的经过操作后的值o(x),都会用Softmax得到一个概率,然后它们的加权平均就是训练时节点上的值。

在经过训练后,节点间的这些边就会有概率的大小之分,如上图中的c图所示。此时,概率大的边就是我们需要的边,把其他的边砍掉,再重新训练,就得到了最后的网络结构,即上图中的d图。

损失函数与优化

在这样的方法下,有两类参数,一类是与操作相关的参数,比如各种卷积操作等,一类是与边选择相关的参数,即计算边的概率的alpha,因而,我们的问题就变成了:

即在训练集上找到最优的参数w,然后在测试集上找到最优的参数alpha。

但是,完美的解决这个损失函数是不现实的,因为内层寻找最优w的操作是非常耗时的,因而,Darts算法做了一个近似,即循环学习alpha和w:

  • alpha保持固定,优化w
  • w固定,优化alpha

其中,优化alpha的公式可以展开:

其中,

然后,二阶项可以被近似:

此时,如果ξ = 0,那么此时二阶的导数不起作用,此时实验结果表明,速度变快但是效果变差。

实验

在Cifar10, ImageNet的实验效果如下:

在PTB和WT2数据上的实验效果如下:

给CNN和RNN学到的网络结构如下

参考文献

[1]. Liu H, Simonyan K, Yang Y. Darts: Differentiable architecture search[J]. arXiv preprint arXiv:1806.09055, 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),备注工作/研究方向+加群目的。


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

登录查看更多
0

相关内容

【NeurIPS 2020 】神经网络结构生成优化
专知会员服务
20+阅读 · 2020年10月24日
【经典书】概率理论:科学逻辑,95页pdf
专知会员服务
77+阅读 · 2020年10月18日
《神经架构搜索NAS》最新进展综述
专知会员服务
55+阅读 · 2020年8月12日
【CVPR2020-CMU】无数据模型选择,一种深度框架潜力
专知会员服务
22+阅读 · 2020年4月12日
自动结构变分推理,Automatic structured variational inference
专知会员服务
38+阅读 · 2020年2月10日
图机器学习经典算法 louvain 完全解读
图与推荐
10+阅读 · 2020年8月10日
【NeurIPS 2019】7篇自动化神经网络搜索(NAS)论文简读
中国人工智能学会
15+阅读 · 2019年9月13日
NAS发展史:从放弃到入门
极市平台
20+阅读 · 2019年8月31日
精选论文 | 网络结构搜索-单目标跟踪【附打包下载】
人工智能前沿讲习班
3+阅读 · 2019年7月2日
神经网络架构搜索(NAS)综述 | 附AutoML资料推荐
神经网络bp算法推导
统计学习与视觉计算组
11+阅读 · 2017年11月17日
[深度学习] AlexNet,GoogLeNet,VGG,ResNet简化版
机器学习和数学
20+阅读 · 2017年10月13日
Arxiv
0+阅读 · 2020年12月1日
Arxiv
0+阅读 · 2020年11月30日
Adaptive Neural Trees
Arxiv
4+阅读 · 2018年12月10日
Arxiv
3+阅读 · 2018年6月24日
Arxiv
5+阅读 · 2017年9月8日
VIP会员
相关VIP内容
【NeurIPS 2020 】神经网络结构生成优化
专知会员服务
20+阅读 · 2020年10月24日
【经典书】概率理论:科学逻辑,95页pdf
专知会员服务
77+阅读 · 2020年10月18日
《神经架构搜索NAS》最新进展综述
专知会员服务
55+阅读 · 2020年8月12日
【CVPR2020-CMU】无数据模型选择,一种深度框架潜力
专知会员服务
22+阅读 · 2020年4月12日
自动结构变分推理,Automatic structured variational inference
专知会员服务
38+阅读 · 2020年2月10日
相关资讯
图机器学习经典算法 louvain 完全解读
图与推荐
10+阅读 · 2020年8月10日
【NeurIPS 2019】7篇自动化神经网络搜索(NAS)论文简读
中国人工智能学会
15+阅读 · 2019年9月13日
NAS发展史:从放弃到入门
极市平台
20+阅读 · 2019年8月31日
精选论文 | 网络结构搜索-单目标跟踪【附打包下载】
人工智能前沿讲习班
3+阅读 · 2019年7月2日
神经网络架构搜索(NAS)综述 | 附AutoML资料推荐
神经网络bp算法推导
统计学习与视觉计算组
11+阅读 · 2017年11月17日
[深度学习] AlexNet,GoogLeNet,VGG,ResNet简化版
机器学习和数学
20+阅读 · 2017年10月13日
相关论文
Top
微信扫码咨询专知VIP会员