ProxyLessNAS论文总结

论文:ProxyLessNAS: Direct neural architecture search on target task and hardware


论文地址: https://arxiv.org/abs/1812.00332v1
代码: https://github.com/MIT-HAN-LAB/ProxylessNAS
发表在: ICLR2019

解决的问题

直接在目标任务(大数据集)上搜索结构,体现了算法的直接性(directness property)

在这里插入图片描述
通常NAS的方法会评价很多搜索过程中的网络,如果数据集过大,那么评价一个网络需要的计算资源或时间(GPUH)就会更多。可微分的NAS(例如:DARTS)在过程中虽然不会产生大量的网络,但是如果初始网络层数过多、数据集过大也会产生内存过大的问题。所以,NAS算法通常会使用一个代理任务:减少层数、使用小规模数据集、减少训练次数等。但是通过代理的方法不能保证在代理模型上表现好的模型一定在目标任务上是最优的。所以本文类似DARTS的方法,在训练过程中通过对路径二值化减少内存,最终可以直接在目标任务上搜索网络结构。

路径级二值化(path-level binarization)

在这里插入图片描述
图2中表示的是任意两层的连接情况,加入了结构参数(Architecture parameters),训练过程中通过控制结构参数每次只激活一种操作。这节约了一个数量级的内存。

处理不可微的硬件指标

在这里插入图片描述
在硬件上设计神经网络必须要考虑到延迟(latency):测量模型在实际设备上的运行时间。可以看成多目标的NAS问题。文中设计了两种方法,一种如图3所示,将延迟变成可微分,加入到损失函数中。第二种使用REINFORCE的方法。文中实验测试了在不同延迟的约束下,在不同硬件设备上的ProxyLessNAS的结果。

算法流程(以CIRAR-10为例)

1、使用PyramidNet作为初始结构,文中把PyramidNet的在residual block中的3X3卷积替换成了深度为3,节点数为2的树结构cell,具体搜索空间参考Cai et al. (2018b)
2、如图2中所示:每两层之间设置N个原始候选操作,当训练权值时,结构参数不变,按照概率选择一条边被激活,被激活的边通过反向传播更新权值。当训练结构参数的时候,权值不变,重制二进制门,更新参数。二者交替进行,更新权值时使用训练集,更新结构参数时使用验证集。当结构参数训练完成,我们使用类似剪枝的操作,N个原始候选操作中只保留结构参数最大的操作,最终形成紧凑的网络。
3、结构参数更新方法见论文。

结果

在这里插入图片描述
在CIFAR-10数据集上得到参数更少,精度更高的模型。
在这里插入图片描述
这张图说明了针对不同设备设计专用网络是非常必要的!

展望

整体思路和DARTS类似,不过路径二值化使得模型内存更少,所以不用像DARTS一样重复cell堆叠,模型更加多样化。文中的结构参数也没有像DARTS中的参数参与训练过程,单独提出来训练。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值