1. 程式人生 > 其它 >Neural Architecture Search using Deep Neural Networks and Monte Carlo Tree Search

Neural Architecture Search using Deep Neural Networks and Monte Carlo Tree Search



發表時間: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)不懂。