近期谷歌大腦團(tuán)隊(duì)發(fā)布了一項(xiàng)新研究:只靠神經(jīng)網(wǎng)絡(luò)架構(gòu)搜索出的網(wǎng)絡(luò),不訓(xùn)練,不調(diào)參,就能直接執(zhí)行任務(wù)。
這樣的網(wǎng)絡(luò)叫做WANN,權(quán)重不可知神經(jīng)網(wǎng)絡(luò)。前一陣子在業(yè)內(nèi)引起了不小轟動(dòng)。
很多同學(xué)對(duì)其中的關(guān)鍵方法“神經(jīng)網(wǎng)絡(luò)架構(gòu)搜索(NAS)“表現(xiàn)出了極大興趣。那么什么是NAS呢?
谷歌CEO Sundar Pichai曾表示:“設(shè)計(jì)神經(jīng)網(wǎng)絡(luò)非常耗時(shí),需要具有專門背景知識(shí)的人,并且,對(duì)專業(yè)知識(shí)的高要求限制了創(chuàng)業(yè)公司和小的社區(qū)使用它。
而使用“神經(jīng)網(wǎng)絡(luò)設(shè)計(jì)神經(jīng)網(wǎng)絡(luò)”的方法被稱為神經(jīng)結(jié)構(gòu)搜索(NAS),通常使用強(qiáng)化學(xué)習(xí)或進(jìn)化算法來(lái)設(shè)計(jì)新的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)。
關(guān)于NAS,原理是什么?初學(xué)者又該如何入門?
圖靈君對(duì)下面這篇選自medium技術(shù)博客進(jìn)行了編譯,該文章全面介紹NAS的原理和三種不同方法,希望大家有所幫助。
以下是博文內(nèi)容:
我們大多數(shù)人可能都對(duì)ResNet耳熟能詳,它是ILSVRC 2015在圖像分類、檢測(cè)和本地化方面的贏家,也是MS COCO 2015檢測(cè)和分割的贏家。ResNet是一個(gè)巨大的架構(gòu),遍布各種跳躍連接。當(dāng)我使用這個(gè)ResNet作為自己機(jī)器學(xué)習(xí)項(xiàng)目的預(yù)訓(xùn)練網(wǎng)絡(luò)時(shí),我想的是“怎么會(huì)有人提出這樣的體系結(jié)構(gòu)呢?”'
大型人類工程圖像分類體系機(jī)構(gòu)
不久之后,我了解到許多工程師和科學(xué)家用他們多年的經(jīng)驗(yàn)構(gòu)建了這種架構(gòu)后。并且還有更多的直覺(jué)而不是完整的數(shù)學(xué)將告訴你“我們現(xiàn)在需要一個(gè)5x5過(guò)濾器以達(dá)到最佳精度”。我們有很好的圖像分類任務(wù)架構(gòu),但像我這樣的許多年輕學(xué)習(xí)者通?;ㄙM(fèi)數(shù)小時(shí)的時(shí)間來(lái)修復(fù)體系結(jié)構(gòu),同時(shí)處理那些不是Image的數(shù)據(jù)集。我們當(dāng)然希望別人能為我們做這件事。
因此神經(jīng)架構(gòu)搜索(NAS),自動(dòng)化架構(gòu)工程的過(guò)程就出現(xiàn)了。我們只需要為NAS系統(tǒng)提供數(shù)據(jù)集,它將為我們提供該數(shù)據(jù)集的最佳架構(gòu)。NAS可以被視為AutoML的子域,并且與超參數(shù)優(yōu)化具有明顯的重疊。要了解NAS,我們需要深入研究它在做什么。它通過(guò)遵循最大化性能的搜索策略,從所有可能的架構(gòu)中找到架構(gòu)。下圖總結(jié)了NAS算法。
NAS方法的維度
它有3個(gè)獨(dú)立的維度:搜索空間、搜索策略和性能評(píng)估。
搜索空間定義了NAS方法原則上可能發(fā)現(xiàn)的神經(jīng)架構(gòu)。它可以是鏈狀結(jié)構(gòu),其中層(n-1)的輸出作為層(n)的輸入饋送?;蛘咚梢允蔷哂刑S連接(多分支網(wǎng)絡(luò))的現(xiàn)代復(fù)雜架構(gòu)。
鏈狀網(wǎng)絡(luò)和多分支網(wǎng)絡(luò)
有時(shí)人們確實(shí)想要使用具有重復(fù)主題或單元的手工制作的外部架構(gòu)(宏觀架構(gòu))。在這種情況下,外部結(jié)構(gòu)是固定的,NAS僅搜索單元體系結(jié)構(gòu)。這種類型的搜索稱為微搜索或單元搜索。
左:?jiǎn)卧Y(jié)構(gòu) 右:?jiǎn)卧湃胧止ぶ谱鞯耐獠拷Y(jié)構(gòu)中
在許多NAS方法中,以分層方式搜索微觀和宏觀結(jié)構(gòu); 它由幾個(gè)層次的主題組成。第一級(jí)由原始操作組成,第二級(jí)是不同的主題,通過(guò)有向無(wú)環(huán)圖連接原始操作,第三級(jí)是編碼如何連接二級(jí)圖案的主題,依此類推。
為了解釋搜索策略和性能估計(jì),下面將討論三種不同的NAS方法。
強(qiáng)化學(xué)習(xí)
我們了解強(qiáng)化學(xué)習(xí); 其中根據(jù)θ參數(shù)化的一些策略執(zhí)行某些操作。然后,代理從所采取的操作的獎(jiǎng)勵(lì)更新策略θ。在NAS的情況下,代理生成模型體系結(jié)構(gòu),子網(wǎng)絡(luò)(動(dòng)作)。然后在數(shù)據(jù)集上訓(xùn)練模型,并將模型對(duì)驗(yàn)證數(shù)據(jù)的性能作為獎(jiǎng)勵(lì)。
控制器扮演代理的角色,準(zhǔn)確性被作為獎(jiǎng)勵(lì)
通常,遞歸神經(jīng)網(wǎng)絡(luò)(RNN)被視為控制器或代理。它產(chǎn)生字符串,模型是隨機(jī)構(gòu)建的字符串形式。
RNN用于創(chuàng)建模型的字符串示例
例如,在圖5中,連續(xù)的RNN輸出用于構(gòu)建濾波器; 從過(guò)濾器高度開(kāi)始到步寬。輸出錨點(diǎn)用于指示跳躍連接。在第N層,錨點(diǎn)將包含N-1個(gè)基于內(nèi)容的sigmoids,以指示需要連接的先前層。
通過(guò)策略梯度方法訓(xùn)練RNN以迭代地更新策略θ。這里省略了詳細(xì)的計(jì)算,可以在原始論文的第3.2節(jié)中找到。
論文地址:
https://openreview.net/pdf?id=r1Ue8Hcxg
漸進(jìn)式神經(jīng)架構(gòu)搜索(PNAS)
PNAS執(zhí)行本教程的搜索空間部分中討論的單元搜索。他們通過(guò)以預(yù)定義的方式添加單元來(lái)構(gòu)建來(lái)自塊的單元并構(gòu)建完整網(wǎng)絡(luò)。
單元以預(yù)定數(shù)量串聯(lián)連接以形成網(wǎng)絡(luò)。并且每個(gè)單元由幾個(gè)塊(原文中使用的5個(gè))形成。
這些塊由預(yù)定義的操作組成。
塊的結(jié)構(gòu)。組合函數(shù)只是逐元素相加
操作結(jié)果表明,圖中所示為原論文所使用的圖形,可以進(jìn)行擴(kuò)展。
上圖顯示了完整的示例。即使在這種單元胞或微搜索中,也有101?個(gè)有效組合來(lái)檢查以找到最佳單元結(jié)構(gòu)。
因此,為了降低復(fù)雜性,首先僅構(gòu)建僅具有1個(gè)塊的單元。這很容易,因?yàn)橥ㄟ^(guò)上述操作,只有256個(gè)不同的單元是可能的。然后選擇頂部K表現(xiàn)最佳的單元以擴(kuò)展2個(gè)塊單元,并重復(fù)最多5個(gè)塊。
但是,對(duì)于一個(gè)合理的K,太多的2塊候選來(lái)訓(xùn)練。作為這個(gè)問(wèn)題的解決方案,我們訓(xùn)練了僅通過(guò)讀取字符串(單元被編碼成字符串)來(lái)預(yù)測(cè)最終性能的“廉價(jià)”代理模型。這種訓(xùn)練的數(shù)據(jù)是在單元構(gòu)建、訓(xùn)練和驗(yàn)證時(shí)收集的。
例如,我們可以構(gòu)造所有256個(gè)單塊單元并測(cè)量它們的性能。并使用這些數(shù)據(jù)訓(xùn)練代理模型。然后使用此模型預(yù)測(cè)2個(gè)塊單元的性能,而無(wú)需實(shí)際訓(xùn)練和測(cè)試它們。當(dāng)然,代理模型應(yīng)該能夠處理可變大小的輸入。
然后選擇由模型預(yù)測(cè)的頂部K表現(xiàn)最佳的2個(gè)塊單元。然后對(duì)這2個(gè)塊單元進(jìn)行實(shí)際訓(xùn)練,對(duì)“替代”模型進(jìn)行微調(diào),并將這些單元擴(kuò)展為3個(gè)塊并對(duì)其進(jìn)行迭代
PNAS的步驟
差異化架構(gòu)搜索(DARTS)
用于神經(jīng)架構(gòu)的搜索空間是離散的,即一種架構(gòu)與另一種架構(gòu)的不同之處至少在于該架構(gòu)中有一層或一些參數(shù),例如,5x5濾波器對(duì)7x7濾波器。在該方法中,采用連續(xù)松弛法進(jìn)行離散搜索,以實(shí)現(xiàn)基于梯度的直接優(yōu)化。
我們搜索的單元可以是有向無(wú)環(huán)圖,其中每個(gè)節(jié)點(diǎn)x是潛在表示(例如卷積網(wǎng)絡(luò)中的特征映射),并且每個(gè)有向邊(i,j)與某些操作o(i,j)相關(guān)聯(lián)( 卷積,最大池化等,轉(zhuǎn)換x(i)并在節(jié)點(diǎn)x(j)處存儲(chǔ)潛在表示。
每個(gè)節(jié)點(diǎn)的輸出可以通過(guò)上述的等式計(jì)算。以這樣的方式枚舉節(jié)點(diǎn),即從節(jié)點(diǎn)x(i)到x(j)存在邊(i,j),然后i
在連續(xù)松弛法中,不是在兩個(gè)節(jié)點(diǎn)之間進(jìn)行單個(gè)操作。使用每種可能操作的凸組合。為了在圖中對(duì)此進(jìn)行建模,保持兩個(gè)節(jié)點(diǎn)之間的多個(gè)邊緣,每個(gè)邊緣對(duì)應(yīng)于特定操作。并且每個(gè)邊緣也具有權(quán)重α。
離散問(wèn)題的連續(xù)松弛
現(xiàn)在O(i,j)節(jié)點(diǎn)x(i)和x(j)之間的操作是一組操作o(i,j)的凸組合,其中o(.)εS,其中S是所有的集合可能的操作。
O(i,j)的輸出由上述方程計(jì)算。
L_train和L_val分別表示訓(xùn)練和驗(yàn)證損失。兩種損失不僅由架構(gòu)參數(shù)α確定,而且還由網(wǎng)絡(luò)中的權(quán)重“w”確定。架構(gòu)搜索的目標(biāo)是找到最小化驗(yàn)證損失L_val(w *,α*)的α*,其中通過(guò)最小化訓(xùn)練損失來(lái)獲得與架構(gòu)相關(guān)聯(lián)的權(quán)重'w *'。
w?= argminL_train(w, α? ).
這意味著一個(gè)雙層優(yōu)化問(wèn)題,α作為上層變量,w作為下層變量:
α *= argminL_val(w ? (α), α)
s.t.w ? (α)= argminL_train(w, α)
訓(xùn)練后,某些邊的α變得比其他邊大得多。為了得到這個(gè)連續(xù)模型的離散架構(gòu),在兩個(gè)節(jié)點(diǎn)之間保留唯一具有最大權(quán)重的邊。
a)上的操作最初是未知的。b)通過(guò)在每個(gè)邊上放置候選操作的混合來(lái)連續(xù)放松搜索空間c)在雙層優(yōu)化期間一些權(quán)重增加并且一些權(quán)重下降d)最終體系結(jié)構(gòu)僅通過(guò)采用具有兩個(gè)節(jié)點(diǎn)之間的最大權(quán)重的邊來(lái)構(gòu)建。
當(dāng)找到單元時(shí),這些單元然后用于構(gòu)建更大的網(wǎng)絡(luò)。
-
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4733瀏覽量
100415 -
NAS
+關(guān)注
關(guān)注
11文章
280瀏覽量
112333
原文標(biāo)題:入門必備 | 一文讀懂神經(jīng)架構(gòu)搜索
文章出處:【微信號(hào):rgznai100,微信公眾號(hào):rgznai100】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論