【神经网络架构搜索】ProxylessNAS直接在ImageNet上搜索

【GiantPandaCV导语】这篇是MIT韩松实验室发布的文章,是第一个直接在ImageNet上进行搜索的NAS算法,并且提出了直接在目标硬件上对latency进行优化的方法。相比于同期算法NASNet、MnasNet等,搜索代价降低了200倍。

0. Info

Title: ProxylessNAS: Direct Neural Architecture Search On Target Task and Hardware

Author: MIT韩松团队

Link: https://arxiv.org/pdf/1812.00332v2

Date: ICLR2019

Code: https://github.com/MIT-HAN-LAB/ProxylessNAS

1. Motivation

之前的算法往往是在Proxy任务(比如CIFAR10、使用更少的epoch等方案)上进行训练,然后迁移到目标数据集(比如ImageNet),但是这种方案是次优的,存在一定的gap。

并且之前的Gradient-based NAS比如Darts由于需要将整个超网放在显存中,对资源的占用会比较大,因此对网络的大小带来了限制。

为了解决以上痛点,提出了ProxylessNAS,可以直接为目标硬件平台优化网络,解决了Gradient-based NAS中存在的高内存消耗问题,降低了计算代价。

2. Contribution

ProxylessNAS将搜索代价从40000GPU hours压缩到200GPU hours。

文章主要共享有:

  • ProxylessNAS是第一个不借助proxy任务,直接在目标数据集ImageNet上进行学习的NAS算法。可以有效地扩大搜索空间,达到更好的表现。

  • 提出了从Path-level Pruning角度来处理NAS的思路,解释了NAS和模型压缩之间存在的紧密联系。通过使用Path-level binarization节省了一个数量级的内存消耗。

  • 提出了Gradient-based方法来处理硬件目标,比如latency。让Latency这种硬件指标也变得可微分。并且ProxylessNAS也是第一个研究不同硬件架构上专用神经网络架构的工作。

  • 使用一系列实验来证明ProxylessNAS的直接性directness和定制性specialization。在ImageNet和CIFAR10数据集上取得了SOTA的结果。

3. Method

3.1 过参数网络构建

参考了one-shot和darts的搜索空间,构建了过参数网络,

m O O n e − S h o t ( x ) = ∑ i = 1 n O i ( x ) m_ {O}^ {One-Shot} (x)= \sum _ {i=1}^ {n} O_ {i} (x) mOOneShot(x)=i=1nOi(x)

对于one-shot来说,会将所有path路径输出相加;

m O D A R T s ( x ) = ∑ i = 1 N p i o i ( x ) = ∑ i = 1 N e x p ( α i ) ∑ j e x p ( α j ) O i ( x ) . m_ {O}^ {DARTs} (x)= \sum _ {i=1}^ {N} p_ {i} o_ {i} (x)= \sum _ {i=1}^ {N} \frac {exp(\alpha _ {i})}{\sum_j exp(\alpha_j) } O_{i} (x). mODARTs(x)=i=1Npioi(x)=i=1Njexp(αj)exp(αi)Oi(x).

对于darts来说,使用的是weighted sum的方式得到输出。

以上两种方式的实现都需要将中间结果保存,即所有路径的结果,这样相当于要占用N倍的显存。

为了解决以上问题,提出了Path binarization。

3.2 Path-level binarization

为了降低训练过程中占用的内存,每次训练过参数网络中的单条路径分支。

Path binarization需要引入N个网络架构参数α,pi的计算和darts一直。除此以外还有二进制开关g,1代表保留该路径,0代表不启用该路径。

然后得到输出可以看出,在运行过程中,只有单路径被激活,节省了一个量级的显存消耗。

3.3 训练二值化网络

和darts类似,ProxylessNAS交替更新权重参数和架构参数。

  • 在训练权重参数的时候,固定住架构参数,然后随机采样二进制开关。然后激活路径对应的网络使用梯度下降算法在训练集上进行训练。

  • 在训练架构参数的时候,固定住权重参数,然后更新架构参数。

完成训练以后,选择拥有最高path weight的path作为最终网络结构。

在计算梯度的时候,进行了以下近似:

∂ L ∂ α i = ∑ j = 1 N ∂ L ∂ p j ∂ p j ∂

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

*pprp*

如果有帮助可以打赏一杯咖啡

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值