ProxyLessNAS论文总结

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

文章目录

    • 论文:ProxyLessNAS: Direct neural architecture search on target task and hardware
    • 解决的问题
          • 直接在目标任务(大数据集)上搜索结构,体现了算法的直接性(directness property)
          • 路径级二值化(path-level binarization)
          • 处理不可微的硬件指标
    • 算法流程(以CIRAR-10为例)
    • 结果
    • 展望

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

解决的问题

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

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

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

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

处理不可微的硬件指标

ProxyLessNAS论文总结_第3张图片
在硬件上设计神经网络必须要考虑到延迟(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、结构参数更新方法见论文。

结果

ProxyLessNAS论文总结_第4张图片
在CIFAR-10数据集上得到参数更少,精度更高的模型。
ProxyLessNAS论文总结_第5张图片
这张图说明了针对不同设备设计专用网络是非常必要的!

展望

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

你可能感兴趣的:(神经架构搜索)