天天看點

神經架構優化(NAO):新的神經架構搜尋(NAS)算法

神經架構優化(NAO):新的神經架構搜尋(NAS)算法

本文為 AI 研習社編譯的技術部落格,原标題 :

Discovering the best neural architectures in the continuous space | Microsoft Research

作者 |  Fei Tian

翻譯 | 孫稚昊2

校對 | 醬番梨       整理 | 鳳梨妹

原文連結:

https://www.microsoft.com/en-us/research/blog/discovering-the-best-neural-architectures-in-the-continuous-space/

神經架構優化(NAO):新的神經架構搜尋(NAS)算法

如果你是一名深度學習實踐者,你可能發現自己經常會遇到同一個關鍵問題:我應該為現在的任務選擇哪種神經網絡架構?這個決定取決于多種因素以及很多其他問題的答案。我應該給這一層選擇什麼操作----卷積,深度可分卷積,或者最大池化?卷積層應該選多大的核?3*3 還是 1*1 ? 還有哪個節點該拿來作為循環神經網絡(RNN)節點的輸入?這些決定對架構的成功至關重要。如果你既是神經網絡模組化也是手頭特定任務的專家,你可能很容易找到答案。但如果你在某一方面的經驗有限呢?

這種情況下,你可能會嘗試神經架構搜尋(NAS),這是一種自動的過程,另一個機器學習算法根據以往觀察到的架構和他們的表現,來指導建立更好的架構。多虧了NAS,我們可以發現在被廣泛使用的公開資料集,比如 ImageNet, 上表現最好的神經網絡架構,且不需要人工幹預。

然而現存的自動設計神經網絡架構的方法 -- 通常基于增強學習或者進化算法 -- 需要在指數級增長的離散空間中做搜尋,我的同伴和我在微軟亞洲研究院機器學習組 設計了一種簡化的,更有效的方法,基于連續空間内的優化。有了我們的新方法,叫做 神經架構優化 (NAO),我們利用基于梯度的方法在更緊密的空間中做優化。這項工作參加了今年的 神經資訊處理系統會議 (NeurIPS)

  NAO的關鍵元件

驅動NAO進行在連續空間中基于梯度的優化,是靠以下三個元件:

一個把離散的神經網絡架構轉化為連續值向量的編碼器,也叫嵌入模型

一個結果預估函數,它把向量作為輸入,并産生一個數值作為架構的表現 (比如,準确率)

一個把連續值向量恢複成網絡架構的解碼器

這三個元件是一起訓練的。我們完成訓練後,從一個架構x 開始,我們用編碼器E把x 轉化為向量表示 ex , 再通過結果預估函數f給的梯度方向,把ex 轉化為新的嵌入 ex` (如綠線表示)。既然我們在做梯度上升,隻要步長夠小,我們就能保證 f(ex`) >= f(ex)。最後,我們用decoder D把ex`轉化為離散的架構 x`。這樣,我們得到了一個可能更好的架構 x`.通過不斷這樣更新架構。我們得到了最終的架構,它應該有最好的表現。

神經架構優化(NAO):新的神經架構搜尋(NAS)算法

 圖1: NAO的流程

  有有限的資源達到好的結果

我們做了後續的實驗來驗證NAO自動發現最好神經架構的有效性。表1(如下)展示了不同卷積神經網絡(CNN)架構在CIFAR-10圖檔分類資料集上的表現,這些架構由不同 NAS 算法生成。從表中我們可以看出,用NAO發現的網絡得到了最低的錯誤率。另外,将NAO和權重共享機制結合起來(叫做 NAO-WS),我們得到了顯著的搜尋速度提升。權重共享可以降低網絡架構搜尋的計算成本,它通過讓多種網絡結構共用同一份參數來做到。在我們的實驗中,我們用一塊圖像處理器(GPU),在7個小時内得到了一個CNN架構,達到了3.53的錯誤率。通過權重共享,我們不必從頭訓練其它不同的神經網絡。

表2(如下)總結了PTB語言模型的結果。越低的Perplexity表示更好的表現。又一次,我們用NAO來找到的RNN架構取得了好結果,而且隻用有限的計算資源。

通過在連續空間上的優化,NAO得到了更好的結果,相比于現有的NAS方法,他們直接在離散架構空間中搜尋。至于未來的應用,我們計劃用NAO來為其它重要的AI任務搜尋架構,比如神經機器翻譯。同樣重要的,更簡單高效的自動神經架構設計,可以使機器學習技術為各階段的人所用。

神經架構優化(NAO):新的神經架構搜尋(NAS)算法

表1:CIFAR-10分類結果

神經架構優化(NAO):新的神經架構搜尋(NAS)算法

表2:PTB語言模型結果

想要繼續檢視該篇文章相關連結和參考文獻?

長按連結點選打開或點選【神經架構優化(NAO):新的神經架構搜尋(NAS)算法】:

https://ai.yanxishe.com/page/TextTranslation/1335

AI研習社每日更新精彩内容,觀看更多精彩内容:雷鋒網(公衆号:雷鋒網)雷鋒網雷鋒網

五個很厲害的 CNN 架構

一文帶你讀懂計算機視覺

用Pytorch做深度學習(第一部分)

Python進階技巧:用一行代碼減少一半記憶體占用

等你來譯:

(Python)3D人臉處理工具face3d

25個能放到資料湖中的語音研究資料集

如何在資料科學面試中脫穎而出 

Apache Spark SQL以及DataFrame的基本概念,架構以及使用案例