文章目录

  • 【NAS:Neural Architecture Search with Reinforcement Learning】
  • 【NASNet:Learning Transferable Architectures for Scalable Image Recognition】
  • 【MnasNet:Platform-Aware Neural Architecture Search for Mobile】
  • 【ENAS:Efficient Neural Architecture Search】

Neural Architecture Search(NAS)
https://blog.csdn.net/jinzhuojun/article/details/84698471

【NAS:Neural Architecture Search with Reinforcement Learning】

CSDN:https://blog.csdn.net/saturdaysunset/article/details/107072379

【NASNet:Learning Transferable Architectures for Scalable Image Recognition】

CSDN:https://blog.csdn.net/saturdaysunset/article/details/107144507

【MnasNet:Platform-Aware Neural Architecture Search for Mobile】

cnblogs:https://www.cnblogs.com/marsggbo/p/12229794.html
CSDN:https://blog.csdn.net/weixin_37993251/article/details/91354813
代码:https://github.com/tensorflow/tpu/tree/master/models/official/mnasnet

【优化目标】
之前的NAS算法(如DARTS,ENAS)考虑更多的是模型最终结果是否是SOTA,MnasNet则是希望搜索出又小又有效的网络结构,因此将多个元素作为优化指标,包括准确率,在真实移动设备上的延迟等,最终定义的优化函数如下:

上式中个符号含义如下:

mm表示模型(model)
ACC(m)ACC(m)表示在特定任务上的结果(如准确率)
LAT(m)LAT(m)表示在设备上测得的实际计算延迟时间
TT表示目标延迟时间(target latency)
ww表示不同场景下对latency的控制因子。当实测延迟时间LAT(m)LAT(m)小于目标延迟时间TT时,w=αw=α;反之w=βw=β
上面式子其实表示为帕累托最优,因为一般而言延迟越长,代表模型越大,即参数越大,相应地模型结果也会越好;反之延迟越小,模型表现也会有略微下降。

文中提到latency单位提升会带来5%的acc提升。也就是说假如模型A最终延迟为t,准确率为a;模型B延迟为2t,那么它的准确率应该是a(1+5%)。但是这两个模型的reward应该是相等地,套用上面的公式有

求解得到α=β=−0.7

【搜索空间】
之前的NAS算法都是搜索出一个比较好的cell,然后重复堆叠若干个cell得到最终的网络,这种方式很明显限制了网络的多样性。MnasNet做了一些改进可以让每一层不一样,具体思路是将模型划分成若干个block,每个block可以由不同数量的layer组成,每个layer则由不同的operation来表示,


可以看到搜索空间包含如下:

标准卷积,深度可分离卷积(DWConv), MBConv(即上面提到的MobileNetV2的卷积模块)
卷积核大小:3, 5, 7等
Squeeze-and-excitation ratio (SE-Ratio): 0, 0.25
Skip-connection
输出通道数
不同block中的layer数量 NiNi

【搜索算法】
和ENAS一样使用的是强化学习进行搜索,这里不做细究(其实论文里也没怎么说)。
如图1所示,搜索框架由三个部分组成:一个基于递归神经网络(RNN)的控制器、一个获取模型精度的训练器和一个用于测量延迟的基于手机的推理引擎。
我们遵循众所周知的sample-eval-update循环来训练控制器。
每一步,控制器第一批样本使用当前的参数θ,一批模型从其RNN中基于softmax logits预测令牌序列。
对于每一个采样的模型m,我们将其训练在目标任务上,得到其精度ACC(m),并在实际手机上运行,得到其推理延迟LAT(m)。
然后用公式2计算奖励值R(m)。每一步结束时,控制器的参数θ更新通过最大化期望的奖励由方程5使用近端策略优化[30]。
sample-evalupdate循环重复,直到达到最大数量的步骤或参数θ收敛。

【ENAS:Efficient Neural Architecture Search】

CSDN:https://blog.csdn.net/zhou_438/article/details/114173951
CSDN:https://blog.csdn.net/saturdaysunset/article/details/107170009
论文:https://arxiv.org/abs/1802.03268
代码(torch):https://github.com/carpedm20/ENAS-pytorch
部分代码解读:https://blog.csdn.net/saturdaysunset/article/details/107170009
ENAS论文的全称是Efficient Neural Architecture Search via Parameter Sharing,是由谷歌、CMU和斯坦福大学联合推出的论文。
从早期的两篇NAS论文(NAS、NASNet)可以看出,在搜索架构的过程中,需要动用500个GPU,这对于普通人来说根本是可望而不可及的研究领域。
ENAS的论文着重解决计算资源问题,将NAS的计算资源和搜索时间大幅降低,让一般的研究人员也能探索神经网络架构搜索的领域。

【基本思想】
(1)用controller RNN去预测每一个网络层(layer)的卷积参数;
(2)将controller RNN的输出作为强化学习中的action作用于搜索空间,设计子网络;
(3)在训练完子网络后,将数据验证集的精度作为强化学习的reward去训练controller RNN的参数

【Controller RNN结构】

RNN是递归循环网络,上一个序列的RNN输出和隐藏层状态会作为下一个序列RNN的输入状态。本论文的controller RNN是一个2层的LSTM(长短时记忆,RNN中的一种),每层有35个隐节点。
每一次输出都是卷积操作的其中一种参数(例如:卷积核长度、宽度、步长等等),从第一层卷积层开始预测,逐步迭代预测到最后一层。
假设第一层的卷积操作有5种参数,网络共有10个卷积层,那么controller RNN总共要预测50个序列。
论文在controller的输出上还添加了一个anchor point,用于预测从前面某一层layer来的跳跃连接(skip connection)。
在预测出所有卷积层的参数后,把这些参数用来构建子网络模型
。将训练数据分成验证集和训练集两部分,训练集用于训练子网络模型,在训练结束后,子网络模型计算在验证集上的精度,并把精度值作为reward反馈给强化学习,强化学习进而去优化controller RNN的参数。
之所以会采用强化学习的方法去训练controller RNN的参数,是因为controller RNN的输出到子网络生成验证集的精度不是可导函数的计算过程,从验证集上获得的Loss无法通过梯度下降的方法传递到controller RNN的输出上。
由于每预测出一个子网络后,均需要在数据集上训练一段时间,为了加速controller RNN的训练过程,需要在集群上训练子网络和controller RNN。
论文采用parameter server的方式将K个controller的参数共享,每个controller一次共生成m个子网络,每个GPU训练一个子网络模型。将m个子网络的精度作为minibatch的数据分布式训练controller参数

【设计思想】
采用NAS论文controller RNN和强化学习的思想
采用NASNet的Cell和Block的设计
将搜索的模型参数共享,所有子网络共享同一份模型参数
在前两点上,借鉴了NAS论文方法和NASNet论文方法,都是采用controller RNN去预测Cell里面Block的input和operation等,Cell的种类也和NASNet一样,分为Normal和Reduction两种。
论文最大的改进在于第3点。之前的强化学习方法每次选择子网络后,都是重新开始训练一遍子网络模型,再从验证集上获得模型的精度。而ENAS的Cell模型空间参数只有一份,每次选择子网络后,都是在已训练的模型参数上继续训练。
比如说,Cell的第一个Block第一次选择的是3 × 3 3\times33×3的卷积和5 × 5 5\times55×5的卷积,在第一次训练完后,会反馈一次验证集的精度给controller RNN,如果第二次选择到了3 × 3 3\times33×3的depthwise卷积和5 × 5 5\times55×5卷积,那么3 × 3 3\times33×3的depthwise卷积从初始化开始训练,而5 × 5 5\times55×5的卷积则是在上一次训练后保存的基础上继续训练,就不用从初始化开始重新训练。
这种方法可以节省大量的子网络训练时间,因为很多参数重新训练的过程都是相似而冗余的,大量的计算时间浪费在同样的训练过程。ENAS通过参数共享的方式,让之前的子网络训练得到充分利用,在节省分布式计算资源的同时,也节省了大量的搜索时间。
在视觉分类的实验上,ENAS以Cifar-10为搜索数据集,在同时搜索整个网络架构的macro搜索空间(NAS论文方法)上,ENAS只使用了1个GPU(GTX1080Ti),用时7个小时;在只搜索Cell的micro搜索空间(NASNet论文方法)上,ENAS同样也只用了1个GPU,搜索了11.5个小时。

神经网络结构搜索 NAS相关推荐

  1. 神经网络结构搜索NAS简述

    导读:自动化机器学习(AutoML)变得越来越火,是机器学习下个发展方向之一.其中的神经网络结构搜索(NAS)是其中重要的技术之一. 这是小编的其他文章,希望对大家有所帮助,点击即可阅读 人工智能常用 ...

  2. 【深度学习】神经网络结构搜索(NAS)与多模态

    [深度学习]神经网络结构搜索(NAS)与多模态 文章目录1 概述 2 经典的NAS方法2.1 搜索空间2.2 搜索策略2.3 性能评估 3 多模态 4 多模态表示学习 Multimodal Repre ...

  3. 一文详解神经网络结构搜索(NAS)

    本文作者为东北大学自然语言处理实验室 2018 级研究生胡驰,他的研究方向包括神经网络结构搜索.自然语言处理.雷锋网 AI 科技评论经作者授权发表本文章. 近年来,深度学习的繁荣,尤其是神经网络的发展 ...

  4. 《神经架构搜索NAS》最新进展综述,25页pdf

    点击上方,选择星标或置顶,不定期资源大放送! 阅读大概需要5分钟 Follow小博主,每天更新前沿干货 来源于:专知 [导读]本文为大家整理了神经架构搜索NAS的最新进展综述,神经架构搜索(NAS)自 ...

  5. 详解随机神经网络结构搜索 (SNAS)

    本文出自商汤研究院(SenseTime Research).原论文发表于ICLR 2019,及arXiv:1812.09926 神经网络结构搜索(Neural Architecture Search, ...

  6. 布朗大学和FAIR开源LA-MCTS,及其在神经网络结构搜索的应用

    ©PaperWeekly 原创 · 作者|王林楠 学校|布朗大学博士 研究方向|人工智能和系统 大家好,我们开源了在 NeurIPS-2020 所提出一个,基于蒙特卡洛树搜索(MCTS)的全新黑盒优化 ...

  7. enas 参数共享_CVPR2020 | CARS: 华为提出基于进化算法和权值共享的神经网络结构搜索,CIFAR10上仅需单卡半天...

    点击上方"CVer",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转载自:晓飞的算法工程笔记 为了优化进化算法在神经网络结构搜索时 ...

  8. 神经架构搜索(NAS)2020最新综述:挑战与解决方案

    终于把这篇NAS最新的综述整理的survey放了上来,文件比较大,内容比较多.这个NAS的survey是A Comprehensive Survey of Neural Architecture Se ...

  9. 万字解读商汤科技ICLR2019论文:随机神经网络结构搜索

    雷锋网 AI 科技评论消息,日前,商汤科技研究院论文<随机神经网络结构搜索>(SNAS,stochastic neural architecture search)被深度学习顶级会议 IC ...

最新文章

  1. ASP.NET网络编程中常用到的27个函数集
  2. mysql第一二章笔记_MYSQL必知必会读书笔记 第一章(基础)
  3. SpringBoot v2.2.6版本遇到的坑------Thymeleaf的sec:authorize标签无效
  4. 3.1.3 操作系统覆盖技术与交换技术的思想
  5. es6中的块级作用域
  6. Quick BI v3.0版本全新起航——2018杭州云栖大会
  7. 我的世界服务器linux加mod,在Linux下搭建带MOD 我的世界(Minecraft)服务器
  8. 一个员工的离职成本有多恐怖!
  9. Makefile(1):基本使用
  10. Git下修改提交的author和email信息
  11. 关于Shell 脚本的export语句
  12. 微信小程序利用腾讯云IM即时通讯发送文字+表情开发
  13. GreenPlum ANALYZE
  14. html给图片加个放大效果鼠标经过,网页制作-如何在制作鼠标经过时图片放大效果...
  15. cesium 模型实体平移
  16. 小米10pro搭载鸿蒙,国产手机性能排名:华为全军覆没,小米10Pro垫底,新黑马诞生...
  17. 51单片机驱动P10单元板
  18. pppoe拨号.bat
  19. Vue移动端H5生成二维码功能(qrcodejs2)
  20. [NOI2005] 聪聪与可可

热门文章

  1. [异常检测] Regularity Learning via Explicit Distribution Modeling for Skeletal Video Anomaly Detection
  2. EventEmitter has used unknown event type: “pullingUp“, should be oneof
  3. certbot申请通配符域名证书
  4. 记录回家第一天的bug解决和心理过程
  5. aws没有免费套餐服务数据可用
  6. 春招+秋招面试经历汇总,今天我们聊聊程序员应该进大厂还是国企(Java后端方向)
  7. 北漂9年了,37岁的我跳槽进了国企,开启了一段新的人生旅程
  8. Office 2019离线安装ISO镜像
  9. SHT30使用的学习过程1SHT30工作模式介绍
  10. 我,35岁程序员,离职前是这么做的