automl-darts路线

Gradient:

  • Searching for A Robust Neural Architecture in Four GPU Hours | [CVPR 2019]
    D-X-Y/GDAS | [Pytorch]

  • ASAP: Architecture Search, Anneal and Prune | [2019/04]

  • Single-Path NAS: Designing Hardware-Efficient ConvNets in less than 4 Hours | [2019/04]
    dstamoulis/single-path-nas | [Tensorflow]

  • Automatic Convolutional Neural Architecture Search for Image Classification Under Different Scenes | [IEEE Access 2019]

  • sharpDARTS: Faster and More Accurate Differentiable Architecture Search | [2019/03]

  • Learning Implicitly Recurrent CNNs Through Parameter Sharing | [ICLR 2019]
    lolemacs/soft-sharing | [Pytorch]

  • Probabilistic Neural Architecture Search | [2019/02]

  • Auto-DeepLab: Hierarchical Neural Architecture Search for Semantic Image Segmentation | [2019/01]

  • SNAS: Stochastic Neural Architecture Search | [ICLR 2019]

  • FBNet: Hardware-Aware Efficient ConvNet Design via Differentiable Neural Architecture Search | [2018/12]

  • Neural Architecture Optimization | [NIPS 2018]
    renqianluo/NAO | [Tensorflow]

  • DARTS: Differentiable Architecture Search | [2018/06]
    quark0/darts | [Pytorch]
    khanrc/pt.darts | [Pytorch]
    dragen1860/DARTS-PyTorch | [Pytorch]

一个很快就能跑完的NAS工作是用可微分的方式进行搜索的DARTS: Differentiable Architecture Search[ICLR’19],在今年被各种魔改(我猜很可能是因为开源了pytorch的代码,然后代码写得很漂亮改起来也比较容易)。DARTS和ENAS很像,也是从DAG中找子图,并且同样采用了weight sharing,主要的区别在于搜索空间和搜索算法上。搜索空间比较类似NASNet search space,搜索算法则是采用了可微分的方式。

DARTS也是搜cell然后按照一定的模式堆起来,在搜索算法上与之前的方法最大的区别在于DARTS选择某个操作的时候并不是像之前按照RNN的输出概率进行采样,而是把所有操作都按照权重(不是直接加权,先将权重softmax归一化)加起来,那这样权重就在计算图里面了,在计算验证集loss之后就可以backward计算权重的梯度,直接通过梯度下降来优化权重。搜索的过程也就是优化权重的过程,最后保留权重最大的操作就是最后搜到的结构。
权重的优化和DAG里面weight的优化类似于ENAS,也是交替进行的(在训练集上优化weight,在验证集优化权重),不过DARTS是整个DAG进行forward-backward(这样的缺点在于内存开销会比较大)而不是像ENAS一样先采样子图。
在这里插入图片描述

DARTS示意图:DARTS里面的一个cell,不同颜色的边表示不同的操作,颜色深浅表示不同的权重,最后留下权重最大的
发布了180 篇原创文章 · 获赞 309 · 访问量 27万+

猜你喜欢

转载自blog.csdn.net/xys430381_1/article/details/104299608