原文链接:https://arxiv.org/pdf/1910.04465.pdf 发表:CVPR 2019
编辑:牛涛
code:https://github.com/D-X-Y/NAS-Projects
作者argue的还是之前的RL或EA的NAS方法复杂度太高,提出一种基于梯度的高效NAS方法。
本文依旧是搜索cell然后堆叠成网络,cell也是分为normal和reduction。每个cell中1、2为输入节点,中间为计算节点,最终为输出节点,输出节点的结果是计算节点结果的concat。
之前的NAS方法,每个节点间都有一组可学习参数,过softmax后变成概率分布,用这个分布来抽样决定节点间采取哪种操作。但是这个抽样过程不可微,因此作者利用了gumbel-softmax的方式,使得梯度可以传递。
本文中,每个计算节点的输出都是之前所有节点根据所选操作计算后的叠加,如下式
网络中的网络参数与结构参数是交替更新的。在更新网络参数时,在训练集上根据gumbel-max的输出选择最大的那个操作;在更新结构参数时,在验证集上使用gumbel-softmax可以传递梯度。(没有看代码,但是文章似乎是每次只根据argmax选最大的操作用来更新网络参数与结构参数,这样不会很吃初始化吗?同时gumbel-softmax中的温度如果调控不好,不会很容易偏向一个操作吗?)
由于训练时只选择了一个最大的操作来更新,因此可以节省N倍的显存并加快训练,本方法可以直接用于大规模数据集的搜索,但是文章说并没有得到很好的结果。训练完成后,每个node只保留两个支路。