近期谷歌大腦團隊發(fā)布了一項新研究:只靠神經(jīng)網(wǎng)絡(luò)架構(gòu)搜索出的網(wǎng)絡(luò),不訓練,不調(diào)參,就能直接執(zhí)行任務(wù)。
這樣的網(wǎng)絡(luò)叫做WANN,權(quán)重不可知神經(jīng)網(wǎng)絡(luò)。前一陣子在業(yè)內(nèi)引起了不小轟動。
很多同學對其中的關(guān)鍵方法“神經(jīng)網(wǎng)絡(luò)架構(gòu)搜索(NAS)“表現(xiàn)出了極大興趣。那么什么是NAS呢?
谷歌CEO Sundar Pichai曾表示:“設(shè)計神經(jīng)網(wǎng)絡(luò)非常耗時,需要具有專門背景知識的人,并且,對專業(yè)知識的高要求限制了創(chuàng)業(yè)公司和小的社區(qū)使用它。
而使用“神經(jīng)網(wǎng)絡(luò)設(shè)計神經(jīng)網(wǎng)絡(luò)”的方法被稱為神經(jīng)結(jié)構(gòu)搜索(NAS),通常使用強化學習或進化算法來設(shè)計新的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)。
關(guān)于NAS,原理是什么?初學者又該如何入門?
圖靈君對下面這篇選自medium技術(shù)博客進行了編譯,該文章全面介紹NAS的原理和三種不同方法,希望大家有所幫助。
以下是博文內(nèi)容:
我們大多數(shù)人可能都對ResNet耳熟能詳,它是ILSVRC 2015在圖像分類、檢測和本地化方面的贏家,也是MS COCO 2015檢測和分割的贏家。ResNet是一個巨大的架構(gòu),遍布各種跳躍連接。當我使用這個ResNet作為自己機器學習項目的預(yù)訓練網(wǎng)絡(luò)時,我想的是“怎么會有人提出這樣的體系結(jié)構(gòu)呢?”'

大型人類工程圖像分類體系機構(gòu)
不久之后,我了解到許多工程師和科學家用他們多年的經(jīng)驗構(gòu)建了這種架構(gòu)后。并且還有更多的直覺而不是完整的數(shù)學將告訴你“我們現(xiàn)在需要一個5x5過濾器以達到最佳精度”。我們有很好的圖像分類任務(wù)架構(gòu),但像我這樣的許多年輕學習者通常花費數(shù)小時的時間來修復(fù)體系結(jié)構(gòu),同時處理那些不是Image的數(shù)據(jù)集。我們當然希望別人能為我們做這件事。
因此神經(jīng)架構(gòu)搜索(NAS),自動化架構(gòu)工程的過程就出現(xiàn)了。我們只需要為NAS系統(tǒng)提供數(shù)據(jù)集,它將為我們提供該數(shù)據(jù)集的最佳架構(gòu)。NAS可以被視為AutoML的子域,并且與超參數(shù)優(yōu)化具有明顯的重疊。要了解NAS,我們需要深入研究它在做什么。它通過遵循最大化性能的搜索策略,從所有可能的架構(gòu)中找到架構(gòu)。下圖總結(jié)了NAS算法。

NAS方法的維度
它有3個獨立的維度:搜索空間、搜索策略和性能評估。
搜索空間定義了NAS方法原則上可能發(fā)現(xiàn)的神經(jīng)架構(gòu)。它可以是鏈狀結(jié)構(gòu),其中層(n-1)的輸出作為層(n)的輸入饋送。或者它可以是具有跳躍連接(多分支網(wǎng)絡(luò))的現(xiàn)代復(fù)雜架構(gòu)。

鏈狀網(wǎng)絡(luò)和多分支網(wǎng)絡(luò)
有時人們確實想要使用具有重復(fù)主題或單元的手工制作的外部架構(gòu)(宏觀架構(gòu))。在這種情況下,外部結(jié)構(gòu)是固定的,NAS僅搜索單元體系結(jié)構(gòu)。這種類型的搜索稱為微搜索或單元搜索。

左:單元結(jié)構(gòu) 右:單元放入手工制作的外部結(jié)構(gòu)中
在許多NAS方法中,以分層方式搜索微觀和宏觀結(jié)構(gòu); 它由幾個層次的主題組成。第一級由原始操作組成,第二級是不同的主題,通過有向無環(huán)圖連接原始操作,第三級是編碼如何連接二級圖案的主題,依此類推。
為了解釋搜索策略和性能估計,下面將討論三種不同的NAS方法。
強化學習
我們了解強化學習; 其中根據(jù)θ參數(shù)化的一些策略執(zhí)行某些操作。然后,代理從所采取的操作的獎勵更新策略θ。在NAS的情況下,代理生成模型體系結(jié)構(gòu),子網(wǎng)絡(luò)(動作)。然后在數(shù)據(jù)集上訓練模型,并將模型對驗證數(shù)據(jù)的性能作為獎勵。

控制器扮演代理的角色,準確性被作為獎勵
通常,遞歸神經(jīng)網(wǎng)絡(luò)(RNN)被視為控制器或代理。它產(chǎn)生字符串,模型是隨機構(gòu)建的字符串形式。

RNN用于創(chuàng)建模型的字符串示例
例如,在圖5中,連續(xù)的RNN輸出用于構(gòu)建濾波器; 從過濾器高度開始到步寬。輸出錨點用于指示跳躍連接。在第N層,錨點將包含N-1個基于內(nèi)容的sigmoids,以指示需要連接的先前層。
通過策略梯度方法訓練RNN以迭代地更新策略θ。這里省略了詳細的計算,可以在原始論文的第3.2節(jié)中找到。
論文地址:
https://openreview.net/pdf?id=r1Ue8Hcxg
漸進式神經(jīng)架構(gòu)搜索(PNAS)
PNAS執(zhí)行本教程的搜索空間部分中討論的單元搜索。他們通過以預(yù)定義的方式添加單元來構(gòu)建來自塊的單元并構(gòu)建完整網(wǎng)絡(luò)。

單元以預(yù)定數(shù)量串聯(lián)連接以形成網(wǎng)絡(luò)。并且每個單元由幾個塊(原文中使用的5個)形成。

這些塊由預(yù)定義的操作組成。

塊的結(jié)構(gòu)。組合函數(shù)只是逐元素相加
操作結(jié)果表明,圖中所示為原論文所使用的圖形,可以進行擴展。

上圖顯示了完整的示例。即使在這種單元胞或微搜索中,也有101?個有效組合來檢查以找到最佳單元結(jié)構(gòu)。
因此,為了降低復(fù)雜性,首先僅構(gòu)建僅具有1個塊的單元。這很容易,因為通過上述操作,只有256個不同的單元是可能的。然后選擇頂部K表現(xiàn)最佳的單元以擴展2個塊單元,并重復(fù)最多5個塊。
但是,對于一個合理的K,太多的2塊候選來訓練。作為這個問題的解決方案,我們訓練了僅通過讀取字符串(單元被編碼成字符串)來預(yù)測最終性能的“廉價”代理模型。這種訓練的數(shù)據(jù)是在單元構(gòu)建、訓練和驗證時收集的。
例如,我們可以構(gòu)造所有256個單塊單元并測量它們的性能。并使用這些數(shù)據(jù)訓練代理模型。然后使用此模型預(yù)測2個塊單元的性能,而無需實際訓練和測試它們。當然,代理模型應(yīng)該能夠處理可變大小的輸入。
然后選擇由模型預(yù)測的頂部K表現(xiàn)最佳的2個塊單元。然后對這2個塊單元進行實際訓練,對“替代”模型進行微調(diào),并將這些單元擴展為3個塊并對其進行迭代

PNAS的步驟
差異化架構(gòu)搜索(DARTS)
用于神經(jīng)架構(gòu)的搜索空間是離散的,即一種架構(gòu)與另一種架構(gòu)的不同之處至少在于該架構(gòu)中有一層或一些參數(shù),例如,5x5濾波器對7x7濾波器。在該方法中,采用連續(xù)松弛法進行離散搜索,以實現(xiàn)基于梯度的直接優(yōu)化。
我們搜索的單元可以是有向無環(huán)圖,其中每個節(jié)點x是潛在表示(例如卷積網(wǎng)絡(luò)中的特征映射),并且每個有向邊(i,j)與某些操作o(i,j)相關(guān)聯(lián)( 卷積,最大池化等,轉(zhuǎn)換x(i)并在節(jié)點x(j)處存儲潛在表示。

每個節(jié)點的輸出可以通過上述的等式計算。以這樣的方式枚舉節(jié)點,即從節(jié)點x(i)到x(j)存在邊(i,j),然后i
在連續(xù)松弛法中,不是在兩個節(jié)點之間進行單個操作。使用每種可能操作的凸組合。為了在圖中對此進行建模,保持兩個節(jié)點之間的多個邊緣,每個邊緣對應(yīng)于特定操作。并且每個邊緣也具有權(quán)重α。
離散問題的連續(xù)松弛
現(xiàn)在O(i,j)節(jié)點x(i)和x(j)之間的操作是一組操作o(i,j)的凸組合,其中o(.)εS,其中S是所有的集合可能的操作。
O(i,j)的輸出由上述方程計算。
L_train和L_val分別表示訓練和驗證損失。兩種損失不僅由架構(gòu)參數(shù)α確定,而且還由網(wǎng)絡(luò)中的權(quán)重“w”確定。架構(gòu)搜索的目標是找到最小化驗證損失L_val(w *,α*)的α*,其中通過最小化訓練損失來獲得與架構(gòu)相關(guān)聯(lián)的權(quán)重'w *'。
w?= argminL_train(w, α? ).
這意味著一個雙層優(yōu)化問題,α作為上層變量,w作為下層變量:
α *= argminL_val(w ? (α), α)
s.t.w ? (α)= argminL_train(w, α)
訓練后,某些邊的α變得比其他邊大得多。為了得到這個連續(xù)模型的離散架構(gòu),在兩個節(jié)點之間保留唯一具有最大權(quán)重的邊。
a)上的操作最初是未知的。b)通過在每個邊上放置候選操作的混合來連續(xù)放松搜索空間c)在雙層優(yōu)化期間一些權(quán)重增加并且一些權(quán)重下降d)最終體系結(jié)構(gòu)僅通過采用具有兩個節(jié)點之間的最大權(quán)重的邊來構(gòu)建。
當找到單元時,這些單元然后用于構(gòu)建更大的網(wǎng)絡(luò)。


-
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4838瀏覽量
107754 -
NAS
+關(guān)注
關(guān)注
11文章
319瀏覽量
114930
原文標題:入門必備 | 一文讀懂神經(jīng)架構(gòu)搜索
文章出處:【微信號:rgznai100,微信公眾號:rgznai100】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
漸進式神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)搜索技術(shù)
華人團隊打造專為GAN量身定制架構(gòu)搜索方案AutoGAN
ARM Cortex-M系列芯片神經(jīng)網(wǎng)絡(luò)推理庫CMSIS-NN詳解
關(guān)于Instgram的搜索架構(gòu)簡要分析
什么是神經(jīng)架構(gòu)搜索?機器學習自動化真能普及大眾嗎?
一種新的高效神經(jīng)架構(gòu)搜索方法,解決了當前網(wǎng)絡(luò)變換方法的局限性
一種利用強化學習來設(shè)計mobile CNN模型的自動神經(jīng)結(jié)構(gòu)搜索方法
自動神經(jīng)結(jié)構(gòu)搜索方法實現(xiàn)高效率卷積神經(jīng)網(wǎng)絡(luò)設(shè)計
神經(jīng)架構(gòu)搜索的算法,可以使被AI優(yōu)化過的AI設(shè)計過程加速240多倍
MIT研發(fā)“神經(jīng)架構(gòu)搜索”算法,將AI優(yōu)化的AI設(shè)計過程加速240倍或更多
以進化算法為搜索策略實現(xiàn)神經(jīng)架構(gòu)搜索的方法
神經(jīng)架構(gòu)搜索詳解
評論