极市导读
Darts 是用于构建双数组 Double-Array的简单的 C++ Template Library。DARTS做到了大幅提升搜索算法的速度,本文作者结合论文详细解释了DARTS的相关基础概念及解释,并简述一些自己的关于假设以及发展方向的思考。 >>加入极市CV技术交流群,走在计算机视觉的最前沿
DARTS是第一个提出基于松弛连续化的,使用梯度下降进行搜索的神经网络架构搜索(neural architecture search, NAS)算法,将最早矿佬们(说的就是你Google)花成千上万个GPU-hour(即用一块卡跑一小时)的搜索算法降低到了一块卡四天就能跑完。这使得我们这种穷苦的实验室也有了研究NAS这个酷炫方法的可能,不愧是年轻人的第一个NAS模型哈哈哈。
DARTS最大的贡献在于使用了Softmax对本来离散的搜索空间进行了连续化,并用类似于元学习中MAMAL的梯度近似,使得只在一个超网络上就可以完成整个模型的搜索,无需反复训练多个模型。(当然,之后基于演化算法和强化学习的NAS方法也迅速地借鉴了超网络这一特性)。
而实际上,DART还有个更大的贡献就是开源了。不过源代码是基于Pytorch 0.3写的,和主流的1.x版本差别很大,所以需要一段时间进行重新复现。我现在写了1.4版本的分布式并行搜索代码,等后续可视化和保存模型都摸熟了会发实现的教程(在做了在做了)。
除此之外,DARTS虽然想法十分优雅,但我个人觉得其在假设上有不少值得推敲的地方。在略读了CVPR2020里有关NAS的20篇论文后,的确很多工作都是针对我觉得很“有趣”的假设做的233。之后,我也会持续更新CVPR2020中NAS有关的论文,尤其是基于梯度下降方法的。
李斌:【论文笔记】DARTS公式推导
连续体系结构编码和派生离散模型之间存在差异,所以最好让引入类似有退火阈值的01编码。
在搜索工程中学到的共享参数是否可以用于设计一个性能可感知(performance aware)的架构派生机制。
推荐阅读