关注上方深度学习技术前沿”,选择“星标公众号”

资源干货,第一时间送达!

作者:yanwan

知乎链接:https://zhuanlan.zhihu.com/p/145560220

本文仅供学习参考,如有侵权,请联系删除!

深度学习解决了特征工程和权重优化的问题,

而神经网络架构搜索解决另一个问题——网络架构自动化。

NAS在优化的过程中,考量的因素有: mAP,memory,size,flops,lantency,带宽,平台等等。

例如,在一些移动端的硬件设备上面不支持对 depthwise conv的优化,比如说Edge TPU,高通 DSPs,那么实际跑出来的速度会比普通的 conv 要慢。因此需要考虑到了不同的平台(CPU, EdgeTPU, DSP,IPU)的影响。

NAS主要有进化算法、强化学习和微分三种主要的搜索方法。

虽然强化学习、进化算法可以搜索一个好的网络架构,但会耗费大量的计算资源,不经济也不环保。

而可微分的NAS方法能够以更少的成本达到SOTA,因此,获得了很多的关注。


Differentiable NAS

DNAS经典的算法就是大名鼎鼎的DARTS,通常可以描述为一个“双层”优化的问题:

其中,a是架构的参数,w 是 a 对应的模型权重。a利用 validation data 来进行更新,w利用 training data 来进行更新。

DARTS 算法有一个严重的问题,就是当搜索轮数过大时,搜索出的架构中会包含很多的 skip-connect,从而性能会变得很差。我们把这个现象叫做 Collapse of DARTS。

DARTS 发生 Collapse 背后的原因是在两层优化中,a和 w 的更新过程存在先合作(cooperation)后竞争(competition)的问题。

在刚开始更新的时候,alpha 和 w 是一起被优化,从而 alpha 和 w 都是越变越好。

渐渐地,两者开始变成竞争关系,由于 w 在竞争中比 alpha 更有优势(比如,w 的参数量大于 alpha 的参数量),alpha 开始被抑制,因此网络架构出现了先变好后变差的结果。

因此,DARTS+ 提出了early stop的策略:

早停准则1:当一个 normal cell 中出现两个及两个以上的 skip-connect 的时候,停止搜索。

早停准则2:当各个可学习算子的架构排序足够稳定(比如 10 个 epoch 保持不变)的时候,停止搜索过。


#CVPR2020# FBNetV2:Differentiable Neural Architecture Search for Spatial and Channel Dimensions

  • 代码地址: https://github.com/facebookresearch/mobile-vision

  • 论文地址: https://arxiv.org/abs/2004.05565

在几乎不引入显存和计算量代价的情况下,FBNetV2的搜索空间相比于 FBNet 提升了将近10e14 倍,搜到了一个和 EfficientNet B0 精度接近,但是 FLOPs 小了 20% 的网络结构。

本文指出DNAS的方法有两个缺点:

(1)搜索空间比 RL,EAs方法的搜索空间要小。由于DNAS的 super graph 以及 featuremap 存在 GPU 上,显存的限制就使得 DNAS系列方法的搜索空间要小;

(2)搜索代价会随着选择增加而线性增长。增加 super graph一个新的搜索维度,搜索代价都会大幅增长,制约了搜索空间容量。

改进方向就是:使用 Channel Masking 和 Resolution Subsampling 提升搜索空间。

Channel Masking

之前的 DNAS 系列方法就是把不同的选项融进 supergraph,而作者为了减少搜索 channel 时候的计算量,构造了 channel masking的机制,把不同 channel 的最终输出,表征为和一个 mask 相乘的形式。

如上图所示,右边那个灰色的长方体表示一个 shape 为 (c, h, w) 的 tensor,和左边的 mask 向量 M 相乘的结果,M是和对应的 Gumbel Softmax 的系数的乘积和。通过调节左边的 m,就能得到等价的不同 channel 的结果。掩码乘法使用权重共享近似,可加快channel搜索速度。

Resolution Subsampling

X是网络的中间输出特征映射。使用最近邻从X进行子采样,再将A列中蓝色像素处的值组合为特征映射B。接下来运行F操作。最后,C中的每个值都放回D中的一个更大的特征映射。

通过上述的Channel masking 和 Resolution subsampling 机制,FBNet V2的搜索空间就可以在 channel 和 spatial 维度搜索了。最后的实验结果如下


#CVPR2020# MiLeNAS: Efficient Neural Architecture Search via Mixed-Level Reformulation

  • 论文地址:https://arxiv.org/abs/2003.12238

  • 代码地址:https://github.com/chaoyanghe/MiLeNAS

针对神经结构方法搜索的双层优化,未能收敛到最优解这一问题,本文提出了一个混合级别的有效的优化方法MiLeNAS。结果表明,即使在Mixed-Level Reformulation上使用简单的一阶方法,MiLeNAS也可以为NAS问题实现更低的验证错误。

此外,MiLeNAS提出了一个框架超过了DARTS,它通过基于模型大小的搜索和early stop策略仅需5h完成网络的搜索。

Mixed level Reformulation

单层优化,可能导致对a的过度拟合。因为α完全取决于训练数据,而训练集合测试集之间是存在差异的。

因此在综合了单层和双层优化后,选取一个折中方案,最终mixed-level优化变公式:

Beyond the DARTS Framework

Gradient-based Search Spaces

MiLeNAS分别对mixed-operation search space和sampling search space进行了评估,证明了MiLeNAS的适应性。

Model Size-based Searching

在一次运行中搜索不同模型大小的最优结构。具体地说,在搜索过程中,每一个epoch,我们跟踪模型大小和它的最佳验证精度,然后评估每一个epoch中最优架构的模型。

其优点是只需一个运行就可以得到多个不同参数大小的体系结构。

实验结果如下,可见精度和速度都有提升。


推荐阅读

(点击标题可跳转阅读)

  • Yolov3&Yolov4核心基础知识完整讲解

  • 【目标检测基础积累】常用的评价指标

  • 超越MobileNetV3!Facebook提出更轻更快的FBNetV2

  • 【AAAI 2020】NAS+目标检测:SM-NAS 论文解读

  • 谷歌 NAS + 目标检测:SpineNet论文详解

  • 【汇总】一大波CVPR2020开源项目重磅来袭!

重磅!DLer-NAS交流群已成立!

欢迎各位Cver加入NAS微信交流群,本群旨在交流模型压缩/量化/剪枝、NAS、迁移学习、自监督学习、无监督学习、元学习等内容。欢迎对这些研究方向感兴趣的小伙伴加群一起交流学习!

加群请备注:研究方向+学校/公司+昵称(如NAS+上交+小明

???? 长按识别添加,邀请您进群!

【CVPR2020】可微分的NAS方法汇总相关推荐

  1. 近红外光谱预处理方法汇总

    近红外光谱预处理方法汇总 由于使用近红外光谱探测器所获取的数据信号除含被测样本待测成分信息外,还包括各种仪器的噪声,如高频随机噪声.基线漂移.杂散信息.样本背景背景等无关信息.因此,在数据分析前,首先 ...

  2. 用python下载文件的若干种方法汇总

    压缩文件可以直接放到下载器里面下载的 you-get 连接 下载任意文件 重点 用python下载文件的若干种方法汇总 写文章 用python下载文件的若干种方法汇总 zhangqibot发表于Met ...

  3. 二、深度学习数据增强方法汇总

    深度学习模型训练数据增强方法汇总 一.随机裁剪 二.RGB-->BGR通道互换 三.仿射变换(缩放) 三.随机旋转 四.对比度调整 五.随机抠图 六.bound box 中心点随机抠图 七.随机 ...

  4. 特征点匹配+特征检测方法汇总

    特征点匹配+特征检测方法汇总 特征提取与匹配---SURF:SIFT:ORB:FAST:Harris角点 匹配方法 匹配函数 1. OpenCV提供了两种Matching方式: • Brute-for ...

  5. 何恺明等人新作:效果超ResNet,利用NAS方法设计随机连接网络 | 技术头条

    点击上方↑↑↑蓝字关注我们~ 「2019 Python开发者日」,购票请扫码咨询 ↑↑↑ 译者 | 刘畅 编辑 | 一一 出品 | AI科技大本营(ID:rgznai100) 受人工设计的启发,用于图 ...

  6. 统计计量 | 统计学中常用的数据分析方法汇总

    来源:数据Seminar本文约10500字,建议阅读15+分钟 统计学中常用的数据分析方法汇总. Part1描述统计 描述统计是通过图表或数学方法,对数据资料进行整理.分析,并对数据的分布状态.数字特 ...

  7. js如何操作表格(常用属性方法汇总)

    js如何操作表格(常用属性方法汇总) 一.总结 一句话总结: 二.表格相关的属性和方法 1.1 Table 对象集合 cells[] 返回包含表格中所有单元格的一个数组. 语法:tableObject ...

  8. IE问题解决方法汇总

    1.发送错误报告 [故障现象]在使用IE浏览网页的过程中,出现"Microsoft Internet Explorer遇到问题需要关闭--"的信息提示.此时,如果单击"发 ...

  9. winform打开cad图纸_CAD打开图纸的方法汇总

    打开文件属于最基本的操作,大家都会,但每个人的习惯不一样,采用的方法也不完全相同,这里简单地将打开文件的各种方法汇总一下. 一.打开(OPEN)命令 这是最基本也是最常用的方法,但调用方法有很多种,可 ...

最新文章

  1. Repeater控件的分页问题
  2. GCC strict aliasing – 嫉妒就是承认自己不如别人
  3. 关于百度网盘限速第三方客户端的提醒
  4. 成为年薪50W+的NLP工程师,需要哪些技能?
  5. 笔记本计算机死机后如何启动,电脑戴尔死机如何重新启动的解决方法
  6. eclipse如何运行html文件,eclipse中applet嵌入html文件
  7. pdo 连接操作数据库
  8. 华为scp快充协议详解_1A1C多协议快充,倍思30W PD PPS双口充电器(BS-CH905)评测...
  9. ROS:ModuleNotFoundError: No module named ‘rospkg‘
  10. Unity3D C#数学系列之求点到直线的距离
  11. 如何使用bibtex插入参考文献(基于WinEdit)
  12. Android简历知识点模板
  13. java mat类型_JVM MAT使用分析详解
  14. python项目二:多种验证码及二维码输出
  15. 初学者建模和布线技巧
  16. UnhandledPromiseRejectionWarning: MongoError: command insert requir es authentication
  17. 逆向分析CrackMe系列——CrackMe004之注册码算法分析
  18. 腾讯云自定义配置购买云服务器图文操作教程 新手必看!
  19. 编写一个有两个线程的程序, 第一个线程用来计算2~100000之间的素数的个数, 第二个线程用来计算100000~200000之间的素数的个数,最后输出结果
  20. Leetcode刷题 Day4~Day5

热门文章

  1. 黑色星期五c语言,求黑色星期五问题~
  2. 字符串数组-获取两个字符串中最大的相同子串(最大相同子串有且只有一个)
  3. python axis=0 axis=1的区别
  4. Pytorch:transforms的二十二个方法
  5. numpy meshgrid用法
  6. Linux平台下Eclipse的安装
  7. 模型越大,真的越香吗?千亿参数之后是万亿,万亿之后呢?
  8. 演讲实录 | DevOps 2021年度洞察
  9. Adobe公司Flex首席产品经理作序推荐
  10. pytorch cycleGAN代码学习1