DARTS:年轻人的第一个NAS模型
![](https://filescdn.proginn.com/bd7b8f34fc223438b6c7317b6f0d8695/a6557cdea2ebad47c137cbc67d134b4f.webp)
极市导读
Darts 是用于构建双数组 Double-Array的简单的 C++ Template Library。DARTS做到了大幅提升搜索算法的速度,本文作者结合论文详细解释了DARTS的相关基础概念及解释,并简述一些自己的关于假设以及发展方向的思考。 >>加入极市CV技术交流群,走在计算机视觉的最前沿
1. 薰风说
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有关的论文,尤其是基于梯度下降方法的。
2. 正文开始
2.1 概念介绍与符号声明
![](https://filescdn.proginn.com/a1fc9f0bbeec83b5d9da22d563b59cdf/ba097188d0a5affafc65dae3f1d297b4.webp)
![](https://filescdn.proginn.com/04e61e051168a3c736e6786e5146bb04/ddcbb7a19c828473ff66091c76c6f5f7.webp)
![](https://filescdn.proginn.com/35679c08d0f562d0cd9aa250b0b7d426/9c80902563167b5d04488a4a312368f8.webp)
![](https://filescdn.proginn.com/aba16bc8e68d3427a89e236eca930b29/f225ed3c04bb2846498338c52a9d7379.webp)
节点 是第
个特征图
边 是从第
个特征图到第
个特征图之间的变换(如卷积、池化)
![](https://filescdn.proginn.com/aee74a58736633f1ab1aeb0870976667/25e76bf25a97859478a68dec51998093.webp)
![](https://filescdn.proginn.com/eab287f786f182336a2e79418d02b28a/f0386b2eebe7432d2ad9c893277df967.webp)
2.2 连续松弛化
![](https://filescdn.proginn.com/eab287f786f182336a2e79418d02b28a/f0386b2eebe7432d2ad9c893277df967.webp)
![](https://filescdn.proginn.com/11750c4c5b956395495a277e8fc526b5/770ec924e2b4b664cf6e998d675e4c36.webp)
![](https://filescdn.proginn.com/02efd2b6c6ac27c4ce790756a2aeedcb/f0b51ccbb51e48dfd08b70442d314297.webp)
![](https://filescdn.proginn.com/781f90fea550155b684f537a7e71d653/1ff5fb649b19fdc9662ff1db208b182f.webp)
![](https://filescdn.proginn.com/d1e276d6bbd297a9cd66c39f5d696ba3/76968c6c67e1f8046fe745dce64d8913.webp)
![](https://filescdn.proginn.com/aba16bc8e68d3427a89e236eca930b29/f225ed3c04bb2846498338c52a9d7379.webp)
![](https://filescdn.proginn.com/4bfffd041b9bcff2bcd600432b80e486/4934e546123a45f3ba0b4ed2432da042.webp)
![](https://filescdn.proginn.com/bc7f1c8a1e1e8661a3b23c81e9c6a103/a781b58ee6de8d5d91240249f9e85777.webp)
![](https://filescdn.proginn.com/46382afd3fe5381a6ab6f3de31958308/242703f05c95c7a70b2ba72534c440ee.webp)
2.3 两级最优化
![](https://filescdn.proginn.com/ed85872b5aa4d03e1b78e26c0e05ca26/7558a1bd0ba403067e441286cba63153.webp)
![](https://filescdn.proginn.com/9cecfc17449e23350b2846df781a90be/22e23c00aacdf2c3be882fbfd2142da7.webp)
![](https://filescdn.proginn.com/4110db149684b2771a79f2a7413ef5d9/6ed148894a56531867f0b3420d1f8abc.webp)
![](https://filescdn.proginn.com/e90b1a9d49a5a93b163fa9e1bde1b6b5/f4b3c8366c3f7f7dee03eb0b3f629424.webp)
![](https://filescdn.proginn.com/3433eaf763788d3ed0578f0a4f575d55/01ccfd7b64e8af98e7e4d0d80151aa6c.webp)
![](https://filescdn.proginn.com/37c3a5fdc433e1104fe04f3e650ae287/c28ca5a20951ad53fe5ba0399a55bcf5.webp)
![](https://filescdn.proginn.com/46382afd3fe5381a6ab6f3de31958308/242703f05c95c7a70b2ba72534c440ee.webp)
![](https://filescdn.proginn.com/4110db149684b2771a79f2a7413ef5d9/6ed148894a56531867f0b3420d1f8abc.webp)
![](https://filescdn.proginn.com/f2d47760996ab748ab8488a8fbd35e2e/d3e8248f1f79d75201ea0a9fa27e8254.webp)
2.4 近似梯度
![](https://filescdn.proginn.com/7b210bba4f067538d347df827abbd2b5/df186bf40dcc956c6846cfb49776e19d.webp)
![](https://filescdn.proginn.com/e289c0881708f5d71fc22198f307fbc7/686cc83d54fb020517832592c9fc20da.webp)
![](https://filescdn.proginn.com/284016500307b7e640d538e34b4ac582/0a035b6963be19cb07346b3721b0fd12.webp)
![](https://filescdn.proginn.com/b43951300f8a2a058d0c1ce2fb035f2e/5af3fbd0800c7b06f73e0bab91452182.webp)
![](https://filescdn.proginn.com/5306314e86376c09ce89756d7aaedaf0/a37112cd86b16a007fc249239afcdb3d.webp)
![](https://filescdn.proginn.com/df89ee24a483fa09eb5e427e0218552b/216e849aac211bbcce0860e9808e0dea.webp)
在验证集损失上梯度下降更新架构参数 在训练集损失上梯度下降更新操作权重
李斌:【论文笔记】DARTS公式推导
![](https://filescdn.proginn.com/b75bc32dd42709170890835d8fc7c7d0/e53b02f9f905000af232cdb427ff9f86.webp)
![](https://filescdn.proginn.com/7559d20a58a064d51903a36d0bd0cd42/95f1943e03f12839c8764b7291b64572.webp)
![](https://filescdn.proginn.com/dbc3e0f17df76ef51385ab6f2ff26a80/b69bb9f20f3584e946d771f35efbb0a8.webp)
![](https://filescdn.proginn.com/9937a5d07f3a3012264366647421f97c/339065d5ca833059670ddebc7a028bcb.webp)
(复合函数对第一项的偏微分)
(复合函数对第二项的偏微分)
![](https://filescdn.proginn.com/d98067892bcd5fbd66ac3557c4498af0/6754114bd5a20beeb81650d772480533.webp)
![](https://filescdn.proginn.com/38e1d4dfb8086540acb5f23eafdba185/653271e2aa1e91e4f5fcfa96784a44ee.webp)
![](https://filescdn.proginn.com/46382afd3fe5381a6ab6f3de31958308/242703f05c95c7a70b2ba72534c440ee.webp)
![](https://filescdn.proginn.com/0d1d31dddc3265ccd60c983811b30ae8/b3e4e3e52d1fb0576c90f0a20fb9c504.webp)
![](https://filescdn.proginn.com/aefabb2cf925e31e36efce572b17f8b0/3470796ae0a5dbaa3ede7184a831c884.webp)
![](https://filescdn.proginn.com/6adbbb1f6e42b53974a6986da4414192/c7fad2c204bf3127e4b25819b92e6b46.webp)
![](https://filescdn.proginn.com/0fafcd166849495aba5e362ee86e3e60/5babcb67c43537bcfc58a3d39f7daff6.webp)
![](https://filescdn.proginn.com/5af6e087183f6c72997a87c28b0a9f41/9301bd24610334af971b1c7a2fc65f66.webp)
![](https://filescdn.proginn.com/bf5b7e8b020c14d999698e32181822a2/5e573af051464fabf14f4ed97637936a.webp)
![](https://filescdn.proginn.com/eff1d4274ef8bf76f82817e8aa568c87/1551898136795f6e25c932075a1ab02c.webp)
![](https://filescdn.proginn.com/17a5ffc274d7d962864a3f9ccf173d65/63b1b1d2f979a737682c54417dd55fe2.webp)
![](https://filescdn.proginn.com/3b64430e5dd0864b1fd85789a753f53c/e8641dd2f878d7e5a48f406fc915266c.webp)
![](https://filescdn.proginn.com/0d1d31dddc3265ccd60c983811b30ae8/b3e4e3e52d1fb0576c90f0a20fb9c504.webp)
![](https://filescdn.proginn.com/eff1d4274ef8bf76f82817e8aa568c87/1551898136795f6e25c932075a1ab02c.webp)
![](https://filescdn.proginn.com/d63334f4b342884ea605cf95c3c507e5/2b06267d76ab3e21f4764c49f00307b3.webp)
![](https://filescdn.proginn.com/be15cf9785c2e5b06a8ab36a96577f0d/0270dde50cd4079b36c99655faca97f8.webp)
![](https://filescdn.proginn.com/15da8cb250a686a2dac40222e46e0670/d4add49f62c551f2e2fca9713fe73510.webp)
![](https://filescdn.proginn.com/4110db149684b2771a79f2a7413ef5d9/6ed148894a56531867f0b3420d1f8abc.webp)
![](https://filescdn.proginn.com/e2e2c4b5c161c9d7d7e29f65771d97ac/3d62d0030a93f7e42e01b17516685248.webp)
![](https://filescdn.proginn.com/3e7706c607b8d0873cc09739c3906370/9df77297d7d6527d827e2e7171b930bf.webp)
![](https://filescdn.proginn.com/86cc086e2c42990f439508cb8f01d65a/1aa1c6b7c959e52766569f01978f1a29.webp)
![](https://filescdn.proginn.com/e8c24dde601d4b66d688714cc8a7a75b/d4dc9fe4b37d571b6cbe11c359f34fdc.webp)
![](https://filescdn.proginn.com/ebf830ba8f0c729d4ec39c6ec759f1c9/edea96a257671cf58e382862ed16f6d6.webp)
![](https://filescdn.proginn.com/4110db149684b2771a79f2a7413ef5d9/6ed148894a56531867f0b3420d1f8abc.webp)
![](https://filescdn.proginn.com/e90b1a9d49a5a93b163fa9e1bde1b6b5/f4b3c8366c3f7f7dee03eb0b3f629424.webp)
2.5 生成最优模型
3. 思考
3.1 "有趣"的假设
CNN可以由相同的Cell堆叠得到,RNN可以由相同的Cell递归连接得到 每个Cell有两个输入节点和一个输出节点组成,对于CNN来说输入节点是前两个Cell的输出(the cell outputs of the in the previous two layers) 每个Cell的输出实际上是对所有中间节点作reduction操作(比如concatenate)得到的 在验证集上效果最好的模型,在测试集上效果也最好 作者并没有证明这个梯度近似的收敛性,所以直接拿来用了hhh 作者将每个Cell的每个节点之间都取前2个最大权重的操作,(作者的理由是别人都是这么做的) 作者忽略了定义在搜索空间中的0操作(因为作者认为0操作在搜索过程中不会改变运算的结果) 在小模型搜到的Cell在大模型上也会很好用,因此无需重新搜索。 Reduction Cell 和 Normal Cell的搜索空间是一样的,且全都是深度可分离卷积,都有池化层。
![](https://filescdn.proginn.com/889bfae297d66a9cd663665da34172c3/776c876d6045b3b28017dbf00d12fed2.webp)
3.2 作者给出的下一步方向
连续体系结构编码和派生离散模型之间存在差异,所以最好让引入类似有退火阈值的01编码。
在搜索工程中学到的共享参数是否可以用于设计一个性能可感知(performance aware)的架构派生机制。
推荐阅读
![](https://filescdn.proginn.com/c8cf6ecb1db69afedef04b91d76b27f8/cd8540aa2524b6bce5ed0ada653b3fe5.webp)