SNAS:比DARTS更隨機的

原文地址:https://arxiv.org/pdf/1812.09926.pdf

參考博客:AI科技大本營雷鋒網喜歡打醬油的老鳥

原本是打算略讀這篇的……不過讀着讀着愈發感覺到這裏面承載的知識含量,因此開一貼詳述。

1.本文做了什麼?

DARTS將網絡架構搜索變得可微分,大幅提高了速度,但在最終選擇離散架構時只是粗暴的選擇了概率最高的結果(並無數學依據),並且在優化部分只能進行“兩步走”,分開優化網絡權值和各操作權值。詳細請見我的DARTS介紹

而SNAS與DARTS最大的不同在於,其在搜索環節就通過概率實現了採樣(Sample),這也使他們最終搜索到的網絡無需fine-tune。在摘要中就提到:同時在一次反向傳播中訓練神經元參數和網絡分佈參數。而由商湯自己撰寫的中文介紹中,他們介紹自己的貢獻是:

  • 與基於強化學習的方法(ENAS等)相比,SNAS的搜索優化可微分,搜索效率更高,可以在更少的迭代次數下收斂到更高準確率。
  • 與其他可微分的方法(DARTS等)相比,SNAS直接優化NAS任務的目標函數,搜索結果偏差更小,可以直接通過一階優化搜索。而且結果網絡不需要重新訓練參數。
  • 此外,基於SNAS保持了概率建模的優勢,作者提出同時優化網絡損失函數的期望和網絡正向時延的期望,擴大了有效的搜索空間,可以自動生成硬件友好的稀疏網絡。

2.本文是怎樣做的?

0.一些基礎知識

傳統來說,NAS任務因爲需要依次選擇各連接與操作而被視爲一個馬爾可夫決策過程(MDP)。而本文在此基礎上進一步總結,認爲NAS是一個確定環境中的完全延遲獎勵的任務,因爲其只有選定了網絡的所有連接與操作,才能從訓練結果中看出網絡的效果,也即強化學習方法中的獎勵。如下圖所示。

640?wx_fmt=gif

強化學習通常使用TD-Learning進行優化。具體來說,就是將這一動作在未來的期望作爲損失函數,在執行期間通過動態規劃對其進行優化。但是隨着網絡複雜度的提升,對未來的預期偏差會增加,導致網絡需要更多次動態規劃修復這一偏差,進而造成了時間損失。

而延遲獎勵會增加這一偏差。Rudder等人經嚴格證明,得到了如下結論:

  • 延遲獎勵會指數級延長TD的收斂需要的更新次數; 
  • 延遲獎勵會給指數級多的狀態的MC(蒙特卡洛採樣)價值評估帶來抖動。 

他們提出的解決方法是繞過TD和MC,用一個神經網絡擬合每個trajectory的得分,從而通過梯度回傳將得分分配到每個輸入上。他們的實驗也證明這種方法能夠極大提升收斂速度。但是其需要額外的數據和訓練,且可解釋性(分配是否合理)較差。

1.對NAS重新建模

傳統基於強化學習的NAS的方法可以概括爲每一步的決策,以及最終通過TD對決策貢獻的劃分。如下圖。

TB15d.7DxnaK1RjSZFtXXbC2VXa.gif

在這個過程中,網絡本身的損失函數和強化學習agent的損失函數並不互通。因而只能進行兩步走的迭代優化,導致優化速度變慢。

而本文受Rudder等人啓發,用損失函數(使輸出與每個輸入直接相關)替代準確率,就可以使NAS問題可微。具體來說,本文繼承了DARTS的思想,但是並不是直接訓練所有操作的權值,而是通過決策Z對子網絡進行採樣,並根據所有子網絡的表現構建損失函數。具體來說,從母網絡中產生子網絡,可以通過在母網絡的每一條邊的所有可能神經變換的結果後乘上一個one-hot向量來實現。而對於子網絡的採樣,就因此自然轉化爲了對一系列one-hot隨機變量的採樣(包含0操作,即不連接這條邊)。

640?wx_fmt=gif

如此就將網絡的參數θ和連接的參數Z整合在了一起。接下來就是如何求梯度的問題了。

後面寫不下去了。。。實在看不懂。之後如果有更深入的理解再更

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章