前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >论文笔记系列--Progressive Differentiable Architecture Search:Bridging the Depth Gap between Search and Eva

论文笔记系列--Progressive Differentiable Architecture Search:Bridging the Depth Gap between Search and Eva

作者头像
marsggbo
发布2020-06-12 10:04:16
6590
发布2020-06-12 10:04:16
举报

为方便说明,如无特殊说明后文将PDARTS来指代该篇论文。阅读本文之前需要对DARTS有一定了解。,如果还不太清楚DARTS可以阅读这篇文章

Motivation

进来有很多种NAS技术相继提出,主要有基于强化学习的,基于进化算法的,还有基于梯度下降的,不同算法有不同优缺点。本文的PDARTS就是基于梯度下降的,其实看名字也能知道它其实是对DARTS的改进算法。

DARTS算法是先在proxy dataset(如CIFAR10)上搜索cell结构,之后通过重复堆叠找到的这个cell得到最终的网络结构。直白一点就是在CIFAR10数据集上搜索一个深度为8的网络,而在ImageNet上就通过堆叠得到一个深度为20的网络,然后对这个更深的网络训练。

上述这一过程有一个很明显的缺点就是DARTS在proxy dataset上搜到的结构可能在target dataset上不是最好的,甚至表现较差。文中把这个叫做depth gap

为了解决前面提到的depth gap问题,PDARTS提出了一种渐进式搜索的方法。

和其他基于DARTS算法的区别

  • PNAS:PNAS是针对cell内部的operation做渐进式搜索,而PDARTS是对layer和cell中的operation做渐进式搜索
  • SNAS:SNAS是为了解决训练和验证之间的bias,方法是将每条edge的operation权重为one-hot形式。PDARTS则是通过逐渐增加网络层数的方式来消除这个bias。
  • ProxylessNAS:通过binary masks来选择operation进而减少GPU显存使用,而且直接在target 数据集上搜索网络,但是这样一来对于搜索空间的设置有了更高的要求。PDARTS相比而言搜索时间更快。

算法介绍

PDARTS提出在搜索过程中逐渐增加网络层数,随之而来的问题以及解决办法分别是:

  1. 计算量增大:当层数增加后,计算量也会成倍增加。因此为了解决这个问题,PDARTS提出了search space approximation策略,即每当层数增加时就会相应地减少候选操作的数量。
  2. 稳定性降低:在搜更深的网络时,skip-connection会占据主导地位,这对模型稳定性有较大影响。解决办法是对搜索空间做正则化约束(search space regularization):
    • (1) operation-level Dropout,来避免skip-connection占主导地位
    • (2) 在evaluation过程中控制skip-connection的出现次数

示意图如下,PDARTS搜索分成了3个阶段:

最开始是initial stage,网络由5个cell组成,每个cell中节点之间的候选操作有5个。对initial stage搜索若干个epoch之后进入intermediate stage,可以看到这个阶段的层数增加了6层,但是候选操作的数量减少了,这样做是为了减少GPU显存使用量,被删除的操作是前一阶段概率最低的操作。最后的final stage同理不再赘述。

Stage

#Cell

# Operation Space size

Stage 1

5

5

Stage 2

11

4

Stage 3

17

2

pdarts
pdarts

实验结果

下图展示了PDARTS在不同阶段搜索到的cell的结构,以及DARTS算法使用second-order找到的cell结构。可以看到PDARTS在后面会更加倾向于搜索那些deep connection的cell,而DARTS则是找到shallow connection的cell结构。

normal cell
normal cell

下面是具体的实验结果

  • CIFAR10&CIFAR100实验结果
CIFAR10
CIFAR10
  • ImageNet实验结果
ImageNet
ImageNet

思考

最近读了不少NAS的论文,一直有个困惑就是他们所说的搜索时间到底是怎么算的,因为这些算法的搜索epoch数量是各不相同的,比如说A算法设置的搜索epoch数量是100,而B算法只搜了5个epoch,此时B算法就会说它的搜索时间更短。但是我觉得这不太能说服我,因为有可能A算法在第5个epoch的时候也找到了不错的cell结构。另外我一直在想不同的网络结构最终的效果真的会有那么大差别吗?如果的确有差别那么不同的搜索策略则有了意义,反之如果每个cell结构最终性能都差不多,那么就还不如随机初始化一个网络,然后直接使用这个网络。

可能,这就是玄学吧(* ̄︶ ̄)。。。

MARSGGBO♥原创 微信公众号:AutoML机器学习

MARSGGBO♥原创 如有意合作或学术讨论欢迎私戳联系~ 邮箱:marsggbo@foxmail.com 2020-01-23 17:45:35

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-01-23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Motivation
  • 和其他基于DARTS算法的区别
  • 算法介绍
    • 实验结果
      • MARSGGBO♥原创 微信公众号:AutoML机器学习
  • 思考
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档