发表时间:2019(AAAI2020)
文章要点:一篇做NAS的文章,主要想法就是用MCTS来做NAS,相对random,Q-learning,Hill Climbing这些更能平衡探索与利用。主要方法是把NAS的问题定义好,比如动作是什么,就是每次搭建神经网络这一层用什么结构,什么参数。状态是什么,就是当前建成网络的信息。这些东西定义好之后,就可以用MCTS去搜索了。等搜索出一个网络结构,就真正拿去train,train好之后就知道accuracy,就可以做树搜索的backpropagation更新树里的信息了。因为每次真正去train网络很慢,所以作者还做了很多提速的工作。比如把MCTS做成并行搜索,并且用一个meta_DNN来预测一个网络结构测accuracy,在train这个结果还没train好的时候,就先用meta_DNN预测的accuracy来backpropagation,这样并行的MCTS就不用等了。当真正的accuracy train好后,再用这个准确的accuracy再backpropagation一次。就相当于backpropagation由真正的accuracy和meta_DNN共同完成。而meta_DNN的训练就是用之前train过的网络结构和对应的accuracy作为数据。同时,为了减少每个网络结构train的时间,作者还做了一个transfer learning来提速。思路就是,我从树里搜索出一个新的网络结构,就相当于走了一条trajectory,那么这条trajectory在树里肯定有一部分结构在之前的MCTS的过程中就被train过。比如我上次尝试了一个三层的网络,这在树里是一条trajectory,这次我又走到这个trajectory上来了,并且又扩展了一层新的网络。那么前面三层网络我就直接用之前train好的参数,只有最后一层随机初始化,这样就可以加快训练速度。当然里面还有很多细节,比如状态空间动作空间具体怎么设定的,训练的时候数据增强怎么做的(cutout)等等,感觉trick还是不少的。
总结:这篇paper和alphazero已经很像了,meta_DNN就相当于是value network,然后并行的树搜索的方式就有点异步树搜索的味道了,不过异步树搜索是用锁的方式来做,这里是做两遍backpropagation。总体来看很有意思的一个工作,给MCTS找到了一个极其适用的领域。
疑问:Hill Climbing (HC)不懂。