文章目录
- 题目:proxyless NAS: direct neural architecture search on target task and hardware
- 时间:2019
- 会议:ICLR
- 研究机构:韩松
1 缩写 & 引用
2 abstract & introduction
强化学习计算量太大了,使用proxy的话又不能保证是最优的,这里提出的是不用proxy的算法,能在大规模数据集
本篇论文的贡献:
- 提出了算法Proxyless NAS,不需要proxy,就能在大规模数据集上直接NAS
- 对NAS提出了基于路径的剪枝
- 对于硬件的延时或者其他指标,提出了基于梯度的方法: latency regularization loss
- 在CIFAR-10和ImageNet数据集上取得了很好的效果
3 相关工作
传统NAS被认定是一个meta-learning过程,有一个meta控制器如RNN,但是计算量太大了
为了提升效率,重点在于减少重训练的时间,hypernetwork可以为每个采样的网络产生权重,不需要重新训练。不过这些工作都是在比较小规模的数据集
one-shot或者DARTS不需要meta控制器或者hypernetwork,他们认为就是从一个over-parameterized的网络开始,这个over-parameterized的网络有所有的候选路径,但是这也需要proxy的方法来减少显存占用的空间
4 方法论
4.1 构建一个over-parameterized网络
对于某一层,假设一共有N种可能的操作,如卷积、池化、identity之类的,那么最开始这一层就有N条路经,每一条路径都有一个概率值或者叫architecture参数
α
i
\alpha_i
αi,最后这一层用哪个算子就是取最高的
α
i
\alpha_i
αi,所以
3.2 二值化的path
p
i
=
e
x
p
(
α
i
)
∑
e
x
p
(
α
)
p_i=\frac{exp(\alpha_i)}{\sum {exp(\alpha)}}
pi=∑exp(α)exp(αi)
每次训练的时候,可能要把这N中可能的路径都走一遍,每次就是按照概率
p
i
p_i
pi随机选一个算子作为这一层的操作,
训练权重的时候,固定architecture参数
α
i
\alpha_i
αi不变,按照上面办法随机选一条路,在训练集按照标准的梯度下降来更新权重。
训练architecture参数
α
i
\alpha_i
αi时,固定权重不变,在validation集中更新architecture参数,那怎么更新呢?这是自己提出的一个类似的基于梯度的方法,可以计算出
∂
L
∂
α
i
\frac{\partial L}{\partial \alpha_i}
∂αi∂L
3.3 基于硬件的latency
每一个算子有一个latency,那么这一层的latency就是各个算子的latency和算子的概率的加权和
上式的F就表示latency,在损失函数中既有cross-entropy又有latency
3.4 基于强化学习的方法
强化学习的最终目的是为了最大化reward,这需要找到每一层最好的binary gate,也就是更新binarized参数 α \alpha α