神經(jīng)架構(gòu)優(yōu)化(NAO):新的神經(jīng)架構(gòu)搜索(NAS)算法
本文為 AI 研習(xí)社編譯的技術(shù)博客,原標題 : Discovering the best neura

本文為 AI 研習(xí)社編譯的技術(shù)博客,原標題 :
Discovering the best neural architectures in the continuous space | Microsoft Research
作者 |Fei Tian
翻譯 |孫稚昊2
校對 | 醬番梨 整理 | 菠蘿妹
原文鏈接:

如果你是一名深度學(xué)習(xí)實踐者,你可能發(fā)現(xiàn)自己經(jīng)常會遇到同一個關(guān)鍵問題:我應(yīng)該為現(xiàn)在的任務(wù)選擇哪種神經(jīng)網(wǎng)絡(luò)架構(gòu)?這個決定取決于多種因素以及很多其他問題的答案。我應(yīng)該給這一層選擇什么操作----卷積,深度可分卷積,或者最大池化?卷積層應(yīng)該選多大的核?3*3 還是 1*1 ? 還有哪個節(jié)點該拿來作為循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)節(jié)點的輸入?這些決定對架構(gòu)的成功至關(guān)重要。如果你既是神經(jīng)網(wǎng)絡(luò)建模也是手頭特定任務(wù)的專家,你可能很容易找到答案。但如果你在某一方面的經(jīng)驗有限呢?
這種情況下,你可能會嘗試神經(jīng)架構(gòu)搜索(NAS),這是一種自動的過程,另一個機器學(xué)習(xí)算法根據(jù)以往觀察到的架構(gòu)和他們的表現(xiàn),來指導(dǎo)創(chuàng)建更好的架構(gòu)。多虧了NAS,我們可以發(fā)現(xiàn)在被廣泛使用的公開數(shù)據(jù)集,比如 ImageNet, 上表現(xiàn)最好的神經(jīng)網(wǎng)絡(luò)架構(gòu),且不需要人工干預(yù)。
然而現(xiàn)存的自動設(shè)計神經(jīng)網(wǎng)絡(luò)架構(gòu)的方法 -- 通常基于增強學(xué)習(xí)或者進化算法 -- 需要在指數(shù)級增長的離散空間中做搜索,我的同伴和我在微軟亞洲研究院機器學(xué)習(xí)組 設(shè)計了一種簡化的,更有效的方法,基于連續(xù)空間內(nèi)的優(yōu)化。有了我們的新方法,叫做 神經(jīng)架構(gòu)優(yōu)化 (NAO),我們利用基于梯度的方法在更緊密的空間中做優(yōu)化。這項工作參加了今年的 神經(jīng)信息處理系統(tǒng)會議 (NeurIPS)
NAO的關(guān)鍵組件
驅(qū)動NAO進行在連續(xù)空間中基于梯度的優(yōu)化,是靠以下三個組件:
一個把離散的神經(jīng)網(wǎng)絡(luò)架構(gòu)轉(zhuǎn)化為連續(xù)值向量的編碼器,也叫嵌入模型
一個結(jié)果預(yù)估函數(shù),它把向量作為輸入,并產(chǎn)生一個數(shù)值作為架構(gòu)的表現(xiàn) (比如,準確率)
一個把連續(xù)值向量恢復(fù)成網(wǎng)絡(luò)架構(gòu)的解碼器
這三個組件是一起訓(xùn)練的。我們完成訓(xùn)練后,從一個架構(gòu)x 開始,我們用編碼器E把x 轉(zhuǎn)化為向量表示 ex , 再通過結(jié)果預(yù)估函數(shù)f給的梯度方向,把ex 轉(zhuǎn)化為新的嵌入 ex` (如綠線表示)。既然我們在做梯度上升,只要步長夠小,我們就能保證 f(ex`) >= f(ex)。最后,我們用decoder D把ex`轉(zhuǎn)化為離散的架構(gòu) x`。這樣,我們得到了一個可能更好的架構(gòu) x`.通過不斷這樣更新架構(gòu)。我們得到了最終的架構(gòu),它應(yīng)該有最好的表現(xiàn)。
圖1: NAO的流程
有有限的資源達到好的結(jié)果
我們做了后續(xù)的實驗來驗證NAO自動發(fā)現(xiàn)最好神經(jīng)架構(gòu)的有效性。表1(如下)展示了不同卷積神經(jīng)網(wǎng)絡(luò)(CNN)架構(gòu)在CIFAR-10圖片分類數(shù)據(jù)集上的表現(xiàn),這些架構(gòu)由不同 NAS 算法生成。從表中我們可以看出,用NAO發(fā)現(xiàn)的網(wǎng)絡(luò)得到了最低的錯誤率。另外,將NAO和權(quán)重共享機制結(jié)合起來(叫做 NAO-WS),我們得到了顯著的搜索速度提升。權(quán)重共享可以降低網(wǎng)絡(luò)架構(gòu)搜索的計算成本,它通過讓多種網(wǎng)絡(luò)結(jié)構(gòu)共用同一份參數(shù)來做到。在我們的實驗中,我們用一塊圖像處理器(GPU),在7個小時內(nèi)得到了一個CNN架構(gòu),達到了3.53的錯誤率。通過權(quán)重共享,我們不必從頭訓(xùn)練其它不同的神經(jīng)網(wǎng)絡(luò)。
表2(如下)總結(jié)了PTB語言模型的結(jié)果。越低的Perplexity表示更好的表現(xiàn)。又一次,我們用NAO來找到的RNN架構(gòu)取得了好結(jié)果,而且只用有限的計算資源。
通過在連續(xù)空間上的優(yōu)化,NAO得到了更好的結(jié)果,相比于現(xiàn)有的NAS方法,他們直接在離散架構(gòu)空間中搜索。至于未來的應(yīng)用,我們計劃用NAO來為其它重要的AI任務(wù)搜索架構(gòu),比如神經(jīng)機器翻譯。同樣重要的,更簡單高效的自動神經(jīng)架構(gòu)設(shè)計,可以使機器學(xué)習(xí)技術(shù)為各階段的人所用。
表1:CIFAR-10分類結(jié)果
表2:PTB語言模型結(jié)果
想要繼續(xù)查看該篇文章相關(guān)鏈接和參考文獻?
長按鏈接點擊打開或點擊【神經(jīng)架構(gòu)優(yōu)化(NAO):新的神經(jīng)架構(gòu)搜索(NAS)算法】:
AI研習(xí)社每日更新精彩內(nèi)容,觀看更多精彩內(nèi)容:雷鋒網(wǎng)雷鋒網(wǎng)雷鋒網(wǎng)
五個很厲害的 CNN 架構(gòu)
一文帶你讀懂計算機視覺
用Pytorch做深度學(xué)習(xí)(第一部分)Python高級技巧:用一行代碼減少一半內(nèi)存占用
等你來譯:
(Python)3D人臉處理工具face3d25個能放到數(shù)據(jù)湖中的語音研究數(shù)據(jù)集如何在數(shù)據(jù)科學(xué)面試中脫穎而出Apache Spark SQL以及DataFrame的基本概念,架構(gòu)以及使用案例