论文笔记:ProxylessNAS: Direct Neural Architecture Search on Target Task and Hardware
ProxylessNAS: Direct Neural Architecture Search on Target Task and Hardware
2019-03-19 16:13:18
Paper:https://openreview.net/forum?id=HylVB3AqYm
Code:https://github.com/MIT-HAN-LAB/ProxylessNAS
1. Background and Motivation:
先来看看算法的名字:ProxylessNAS,将其拆分之后是这么个意思: Proxy(代理)Less(扣除)NAS(神经结构搜索),难么很自然的就可以读懂了:不用代理的神经网络搜索。那么问题来了,什么是代理呢?这就要提到本文的动机:NAS 可以自动设计有效的网络结构,但是由于前期所提出算法计算量太大,难以在大型任务上执行搜索。于是,出现了可微分的NAS,大大的降低了 GPU 的运算时间,但是也有一个需要较大 GPU memory 消耗的问题(grow linearly w.r.t. candidate set size)。所以,这些算法就只能在 proxy task 上,例如在较小的数据集上训练,或者仅用几个 blocks 进行学习,或者仅仅训练几个 epoch。这就可能引出如下的问题,算法在小数据上的搜索出来的模型,可能在 target task 上并不是最优的。所以,本文就提出 ProxylessNAS 来直接在 large-scale target tasks 或者 目标硬件平台上进行结构的学习。

本文作者将 NAS 看做是 path-level pruning process,特别的,我们直接训练一个 over-parameterized network,其包含所有的候选路径(如图 2 所示)。在训练过程中,我们显示的引入结构化参数来学习哪条路径是冗余的,这些冗余的分支在训练的最后,都被移除,以得到一个紧凑的优化结构。通过这种方式,在结构搜索过程中,我们仅仅需要训练一条网络,而不需要任何其他的 meta-controller (or hypernetwork)。
但是简单的将所有的候选路径都包含进来,又会引起 GPU 显存的爆炸,因为显存的消耗是和 选择的个数,呈现线性增长的关系。所以,GPU memory-wise,我们将结构参数进行二值化(1 或者 0),并且强制仅仅有一条路径,在运行时,可以被激活。这样就将显存需求将为了与训练一个紧凑的模型相当的级别。我们提出一种基于 BinaryConnect 的基于梯度的方法来训练二值化参数。此外,为了处理不可微分的硬件目标,如 latency,在特定的硬件上,来学习特定的网络结构。我们将 network latency 建模成连续的函数,并且将其作为正则化损失来进行优化。另外,我们也提出 REINFORCE-based algorithm 作为另外一种策略来处理硬件度量。

2. Method:
作者首先描述了 over-parameterized network 的构建,然后引入如何利用 binarized architecture parameters 来降低显存消耗。然后提出一种基于梯度的方法,来训练这些 binarized architecture parameters。最终,提出两种基础来处理不可微分的目标(e.g. latency),使其可以在特定的硬件上处理特定的神经网络。
2.1 Construction of Over-Parameterized Network:
==
论文笔记:ProxylessNAS: Direct Neural Architecture Search on Target Task and Hardware的更多相关文章
- 论文笔记:Fast Neural Architecture Search of Compact Semantic Segmentation Models via Auxiliary Cells
Fast Neural Architecture Search of Compact Semantic Segmentation Models via Auxiliary Cells 2019-04- ...
- 论文笔记:Progressive Neural Architecture Search
Progressive Neural Architecture Search 2019-03-18 20:28:13 Paper:http://openaccess.thecvf.com/conten ...
- 论文笔记系列-Efficient Neural Architecture Search via Parameter Sharing
Summary 本文提出超越神经架构搜索(NAS)的高效神经架构搜索(ENAS),这是一种经济的自动化模型设计方法,通过强制所有子模型共享权重从而提升了NAS的效率,克服了NAS算力成本巨大且耗时的缺 ...
- 论文笔记:DARTS: Differentiable Architecture Search
DARTS: Differentiable Architecture Search 2019-03-19 10:04:26accepted by ICLR 2019 Paper:https://arx ...
- 论文笔记系列-DARTS: Differentiable Architecture Search
Summary 我的理解就是原本节点和节点之间操作是离散的,因为就是从若干个操作中选择某一个,而作者试图使用softmax和relaxation(松弛化)将操作连续化,所以模型结构搜索的任务就转变成了 ...
- 论文笔记:Progressive Differentiable Architecture Search:Bridging the Depth Gap between Search and Evaluation
Progressive Differentiable Architecture Search:Bridging the Depth Gap between Search and Evaluation ...
- 论文笔记系列-Auto-DeepLab:Hierarchical Neural Architecture Search for Semantic Image Segmentation
Pytorch实现代码:https://github.com/MenghaoGuo/AutoDeeplab 创新点 cell-level and network-level search 以往的NAS ...
- (转)Illustrated: Efficient Neural Architecture Search ---Guide on macro and micro search strategies in ENAS
Illustrated: Efficient Neural Architecture Search --- Guide on macro and micro search strategies in ...
- 论文笔记系列-Neural Architecture Search With Reinforcement Learning
摘要 神经网络在多个领域都取得了不错的成绩,但是神经网络的合理设计却是比较困难的.在本篇论文中,作者使用 递归网络去省城神经网络的模型描述,并且使用 增强学习训练RNN,以使得生成得到的模型在验证集上 ...
随机推荐
- python之元组
一.元组定义 元组(tuple)使用小括号()来定义,它是不可变数据类型,它的元素不可变,但元素的元素是可变的,比如tuple中一个元素为list列表时,list中的元素是可变的 # 在定义tuple ...
- 使用Gadget 做usb鼠标键盘设备
使用Gadget 做usb鼠标键盘设备 感谢TI社区提供的好帮助啊!http://e2e.ti.com/support/arm/sitara_arm/f/791/p/571771/2103409?pi ...
- windows共享文件夹至centos系统文件夹下
1. window 共享文件夹 https://jingyan.baidu.com/article/358570f6633ba4ce4624fc48.html 2. 在访问Windows共享资料之前, ...
- 再次聊一聊promise settimeout asycn awiat执行顺序---js执行机制 EVENT LOOP
首先js是单线程 分为同步和异步,异步又分为(macrotask 宏任务 和 microtask微任务 ), 这图还是很清晰嘛,再来一张 总结一下,就是遇到同步先执行同步,异步的丢到一边依次排队,先排 ...
- 我对MVC的理解
1. MVC :M模型 V视图 C控制器 1.1 模型是用来处理业务逻辑的,里面由许多类构成 1.2 视图是用来显示界面的 1.3 控制器是一个中间人,它通过视图的提交方式(post, ...
- c#子类序列化与父类序列化(Serializable)的区别
今天码代码,遇到了一个很奇怪的问题.就是子类继承了Serializable,父类没有,最后面,子类的数据转为byte[],并存储到数据库,再从数据库出来转为子类对象,发现,父类的变量,值为空! 最后调 ...
- Nodejs使用robot操作鼠标键盘
1.安装robotjs库 前提是配置了cnpm cnpm i robotjs -g 2.如果报错VCBuild.exe,如下可以安装windows-tool MSBUILD : error MSB ...
- oracle删除数据库
1.确认当前数据库是否为要删除的那一个select name from v$database; 2.关闭数据库shutdown immediate; 3.以restrict方式重新打开数据库,并启动到 ...
- .Net与 WebAssembly 随笔
WebAssembly 是啥 - WebAssembly 是一种浏览器支持的字节码格式,WebAssembly 字节码和底层机器码很相似可快速装载运行,因此性能相对于 JS 解释执行大大提升,需要放到 ...
- POJ滑雪
滑雪 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 97172 Accepted: 36843 Description ...