如何避免调参来自动选择神经网络结构?基于遗传算法的NAS最新进展
神經(jīng)結(jié)構(gòu)搜索簡(jiǎn)要介紹
神經(jīng)結(jié)構(gòu)搜索最近發(fā)展迅猛,涌現(xiàn)出了大量的研究成果??偟膩?lái)說(shuō),其主要分為四類:基于強(qiáng)化學(xué)習(xí)的神經(jīng)結(jié)構(gòu)搜索,基于遺傳算法的神經(jīng)結(jié)構(gòu)搜索,基于梯度下降的方法與其他一些方法。
1.1 基于強(qiáng)化學(xué)習(xí)的神經(jīng)結(jié)構(gòu)搜索
基于強(qiáng)化學(xué)習(xí)的 NAS 算法將神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計(jì)看作一個(gè)強(qiáng)化學(xué)習(xí)問(wèn)題,學(xué)習(xí)得到一個(gè)產(chǎn)生網(wǎng)絡(luò)結(jié)構(gòu)的最優(yōu)策略。這里的智能體是設(shè)計(jì)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的算法,用于輸出神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)描述,強(qiáng)化學(xué)習(xí)算法使得生成的神經(jīng)網(wǎng)絡(luò)的性能最優(yōu)化。例如,MetaQNN 方法采用 ?-greedy Q-learning 策略,通過(guò)經(jīng)驗(yàn)補(bǔ)償搜索卷積層、池化層和全連接層之間的連接,以及層內(nèi)進(jìn)行的操作。BlockQNN 使用相同的?Q-learning 方法搜索計(jì)算塊的設(shè)計(jì),然后重復(fù)這個(gè)塊來(lái)構(gòu)建一個(gè)網(wǎng)絡(luò)。
1.2 基于遺傳算法的神經(jīng)結(jié)構(gòu)搜索
遺傳算法是一種基于基因選擇的優(yōu)化算法,它模擬了自然界中種群優(yōu)勝略汰的進(jìn)化過(guò)程,是一種全局最優(yōu)的穩(wěn)定的優(yōu)化算法。Miikkulainen 等人試圖使用 CoDeepNEAT 將 NEAT 擴(kuò)展到深度網(wǎng)絡(luò),使用的是一種聯(lián)合進(jìn)化方法,在? CIFAR-10 數(shù)據(jù)集上取得了有效的結(jié)果。AmoebaNet 可能是第一個(gè)真正大規(guī)模的簡(jiǎn)單進(jìn)化算法應(yīng)用。這種簡(jiǎn)單進(jìn)化算法在搜索與 NASNet 相同的空間時(shí),相對(duì)于 RL 和隨機(jī)搜索會(huì)更快收斂。
1.3 基于梯度下降的神經(jīng)結(jié)構(gòu)搜索
強(qiáng)化學(xué)習(xí)、遺傳算法等方案特點(diǎn)是結(jié)構(gòu)搜索被當(dāng)作離散空間(網(wǎng)絡(luò)結(jié)構(gòu)的表示是離散的,如遺傳算法中的二進(jìn)制串編碼)中的黑箱優(yōu)化問(wèn)題,無(wú)法利用梯度信息來(lái)求解。DARTS 將網(wǎng)絡(luò)結(jié)構(gòu)、網(wǎng)絡(luò)單元表示成有向無(wú)環(huán)圖,對(duì)結(jié)構(gòu)搜索問(wèn)題進(jìn)行松弛,轉(zhuǎn)化為連續(xù)變量?jī)?yōu)化問(wèn)題。目標(biāo)函數(shù)是可導(dǎo)的,能夠用梯度下降法求解,同時(shí)得到網(wǎng)絡(luò)結(jié)構(gòu)和權(quán)重等參數(shù)。
本文將介紹基于遺傳算法的神經(jīng)結(jié)構(gòu)搜索經(jīng)典方法,從傳統(tǒng)的 NSGA-Ⅱ 算法發(fā)展而來(lái)的 NSGA-Net,以及其改進(jìn)版 NSGANetV2,以及最新的研究進(jìn)展 NAT 算法。
NSGA-Net
論文標(biāo)題:
NSGA-Net: Neural Architecture Search using Multi-Objective Genetic Algorithm
收錄會(huì)議:
GECCO 2019
論文鏈接:
https://arxiv.org/abs/1810.03522
代碼鏈接:
https://github.com/ianwhale/nsga-net
NSGA-Net 的主要?jiǎng)?chuàng)新點(diǎn)在于:
1. 多目標(biāo)優(yōu)化。真實(shí)場(chǎng)景中通常要求 NAS 模型具有小規(guī)模且精度高的模型,因此需要尋求最大化計(jì)算設(shè)備的性能,但是這些設(shè)備通常收受到硬件資源的限制,如功耗、可用內(nèi)存、可用 FLOPs 和延遲限制。
2. 靈活的結(jié)構(gòu)搜索空間。大多數(shù)現(xiàn)有方法的搜索空間被限制在一個(gè)按需要重復(fù)多次的塊中,但是單個(gè)塊可能不是每個(gè)應(yīng)用程序的最佳選擇。NSGA-Net 克服了整個(gè)網(wǎng)絡(luò)中重復(fù)使用相同計(jì)算塊的固有限制,并且允許網(wǎng)絡(luò)的不同部分采用不同塊的架構(gòu)。
3. 非支配排序。NSGA-Ⅱ 的關(guān)鍵所在,使用多樣化的帕累托前沿來(lái)衡量多個(gè)相互沖突的目標(biāo),因此可以更高效探索搜索空間。
4. 有效地交叉操作。除了使用變異操作,本方法采用交叉操作與網(wǎng)絡(luò)結(jié)合在一起在多目標(biāo)方面得到理想的效果。
5. 貝葉斯學(xué)習(xí)。本文構(gòu)造并使用了貝葉斯網(wǎng)絡(luò)充分利用歷史搜索方案和各個(gè)網(wǎng)絡(luò)架構(gòu)層之間的內(nèi)在相關(guān)性。
2.1 編碼
在 NSGA-Net 中,每個(gè)被稱為?phase?的計(jì)算塊使用 Genetic CNN 方法進(jìn)行編碼,并且在原來(lái)編碼的基礎(chǔ)上增加一個(gè)比特位就表示一個(gè)跳躍連接,跳過(guò)整個(gè)塊直接將輸入信息跳轉(zhuǎn)到輸出,將其命名為?。網(wǎng)絡(luò)的整體操作被編碼為, 表示 phase 階段的個(gè)數(shù)。 編碼一個(gè)有向無(wú)環(huán)圖,包括? 個(gè)節(jié)點(diǎn)來(lái)描述使用二進(jìn)制字符串的操作。
一個(gè)總體的搜索空間由操作編碼? 控制:。為了計(jì)算的可操作性,限制每個(gè) phase?中的搜索空間中一個(gè)階段中的每個(gè)節(jié)點(diǎn)執(zhí)行相同的操作序列。
2.2 搜索過(guò)程
NSGA-Net 是一個(gè)迭代過(guò)程,在這個(gè)迭代過(guò)程中,初始解集逐漸變得更好。在每次迭代中,從種群中產(chǎn)生出相同數(shù)量的后代,每個(gè)種群成員為存活并成為下一代的父代而競(jìng)爭(zhēng)。初代種群通常是隨機(jī)或通過(guò)先驗(yàn)知識(shí)產(chǎn)生的,初始化階段之后,整體的 NSGA-Net 過(guò)程將包括兩個(gè)階段:探索和開發(fā)。
探索階段的目的是找到連接節(jié)點(diǎn)形成?phase?的不同方式,交叉和變異為實(shí)現(xiàn)這個(gè)目的提供了有效的方式。phase?或者?phase?的子結(jié)構(gòu)可以被視為 building-block。本文設(shè)計(jì)了一個(gè)同質(zhì)交叉算子以選定的兩個(gè)種群成員為父代,通過(guò)繼承和重組父代的構(gòu)建塊來(lái)創(chuàng)建后代。這樣做可以保留兩個(gè)父代之間的共享塊,將后代“1”字符的數(shù)量保持在兩個(gè)父代之間。變異操作使用 bit-flipping 變異算子來(lái)提高種群的多樣性,并且可以避免局部最優(yōu)的情形出現(xiàn)。
開發(fā)階段的目標(biāo)是探索和增強(qiáng)之前測(cè)試過(guò)的網(wǎng)絡(luò)架構(gòu)信息的公共模式。這個(gè)階段的 NSGA-Net 受貝葉斯優(yōu)化算法的啟發(fā),為優(yōu)化變量之間具有內(nèi)在相關(guān)性的問(wèn)題而明確設(shè)計(jì)的。
2.3 實(shí)驗(yàn)
2.3.1 性能標(biāo)準(zhǔn)
論文使用分類精度和計(jì)算復(fù)雜度來(lái)指導(dǎo) NSGA-Net,其中浮點(diǎn)操作的數(shù)量 (FLOPs)作為衡量計(jì)算復(fù)雜度的指標(biāo)。為了定量地比較不同的多目標(biāo)搜索方法或 NSGANet 的不同配置設(shè)置,本文使用了 hypervolume(HV)性能度量,它計(jì)算從一組解決方案(網(wǎng)絡(luò)架構(gòu))到一個(gè)參考點(diǎn)的主導(dǎo)區(qū)域,參考點(diǎn)通常是帕累托邊界的最低點(diǎn)的估計(jì)。
2.3.2 實(shí)施細(xì)節(jié)
使用 CIFAR-10 數(shù)據(jù)集來(lái)進(jìn)行分類任務(wù),訓(xùn)練集與測(cè)試集使用 8:2 的比例來(lái)劃分,CIFAR-10 測(cè)試集僅在搜索結(jié)束時(shí)使用,以獲得最終權(quán)衡前沿模型的測(cè)試精度。 初始化為 3, 為 6。交叉和變異的準(zhǔn)確率分別為 0.9 和 0.02,并且限制每個(gè)突變操作可以翻轉(zhuǎn)的位的數(shù)目最多為 1 位。
2.3.3 與其他單目標(biāo)方法的對(duì)比
實(shí)驗(yàn)將 epoch 的數(shù)量擴(kuò)展到 600 個(gè),batch-size 為 96 個(gè),以訓(xùn)練最終選定的模型。此外,為了進(jìn)一步改進(jìn)訓(xùn)練過(guò)程,在體系結(jié)構(gòu)中大約 2/3 深度處添加了一個(gè)輔助頭部分類器。該輔助頭分類器的損失按常數(shù)因子 0.4 進(jìn)行縮放,在訓(xùn)練過(guò)程中,在反向傳播之前將其與原始結(jié)構(gòu)的損失進(jìn)行聚合,并與反向傳播訓(xùn)練相關(guān)的其他超參數(shù)與架構(gòu)搜索時(shí)相同。并與其他 NAS 方法對(duì)了對(duì)比,例如 NASNet-A,AmoebaNet-A,DARTS。
2.3.4 實(shí)驗(yàn)分析
1. 圖 5 顯示了 NSGA-Net 在各個(gè)搜索階段所獲得的雙目標(biāo)邊界,清晰地展示了整個(gè)種群的逐步改善。
2. 圖 6 表示超體積和后代存活率的變化,其中后代存活率可以作為搜索過(guò)程停止的標(biāo)準(zhǔn)。
3. 表 1 表示了 NSGA-Net 和其他多目標(biāo) NAS 方法的對(duì)比。
4. 表 2 展示了 NSGA-Net實(shí)現(xiàn)了與人工設(shè)計(jì)的最先進(jìn)的網(wǎng)絡(luò)結(jié)構(gòu)相媲美的結(jié)果,而在獲得的網(wǎng)絡(luò)結(jié)構(gòu)中參數(shù)的數(shù)量級(jí)更小。盡管 NSGA-Net 在搜索效率上不如基于梯度的 NAS 方法 DARTS,盡管在測(cè)試錯(cuò)誤上有一點(diǎn)優(yōu)勢(shì),但值得注意的是,NSGANet 內(nèi)在地提供了許多其他的體系結(jié)構(gòu)。
5. 表 3 實(shí)驗(yàn)還驗(yàn)證了通過(guò) NSGA-Net 找到架構(gòu)的可遷移性。并在 CIFAR-100 數(shù)據(jù)集上作了實(shí)驗(yàn)。
6. 圖 8 驗(yàn)證了交叉操作和貝葉斯網(wǎng)絡(luò)的必要性。
NSGANetV2
論文標(biāo)題:
NSGANetV2: Evolutionary Multi-Objective Surrogate-Assisted Neural Architecture Search
收錄會(huì)議:
ECCV 2020
論文鏈接:
https://arxiv.org/abs/2007.10396
代碼鏈接:
https://github.com/mikelzc1990/nsganetv2
NSGANetV2 與 NSGANet 的不同之處在于引入例如兩個(gè)代理模型,并產(chǎn)生特定于任務(wù)的模型。NAS 的目標(biāo)是獲得最優(yōu)體系結(jié)構(gòu)及最優(yōu)體系結(jié)構(gòu)中的最優(yōu)權(quán)值。本文提出了一種實(shí)際有效的 NAS 算法,即在上下兩層同時(shí)采用顯式代理模型。底層代理采用了微調(diào)方法,其中微調(diào)的初始權(quán)值是通過(guò)超網(wǎng)模型獲得的。上層代理采用在線學(xué)習(xí)算法,專注于搜索空間中接近當(dāng)前權(quán)衡前沿的架構(gòu),與離線代理相比,顯著提高了上層優(yōu)化問(wèn)題的樣本效率。
本文將提出的 NAS 算法稱為 MSuNAS,最終的架構(gòu)稱為 NSGANetV2。整體架構(gòu)如下圖所示:
3.1 搜索空間
MSuNAS 搜索卷積神經(jīng)網(wǎng)絡(luò)(CNNs)的四個(gè)重要維度,包括深度,寬度,核大小和輸入分辨率。本文將 CNN 架構(gòu)分解為五個(gè)順序連接的塊,feature map 的大小逐漸減小,通道的數(shù)量逐漸增加。在每個(gè)塊中搜索層的數(shù)量,如果 feature map 的大小減小,只有第一層使用 stride 2,并且允許每個(gè)塊最小有 2 層,最大有 4 層。每層采用倒瓶頸結(jié)構(gòu),搜索 1*1 卷積的擴(kuò)展速率和深度可分卷積的核大小。
此外,允許輸入圖像的大小范圍從 192 到 256。本文使用一個(gè)整數(shù)字符串來(lái)對(duì)這些架構(gòu)選擇進(jìn)行編碼,并且將 0 填充到擁有更少層的架構(gòu)字符串中,這樣就有了一個(gè)固定長(zhǎng)度的編碼。這個(gè)搜索空間和編碼的圖示概述如圖 2 所示。
3.2 整體算法描述
算法 1 和圖 3 分別顯示了在 ImageNet 上運(yùn)行 MSuNAS 樣本的偽代碼和相應(yīng)的步驟。本文的上層和下層都使用代理模型,在上層代理模型中,該模型從編碼體系結(jié)構(gòu)的整數(shù)字符串預(yù)測(cè) top-1 的精度。由于精確度預(yù)測(cè)器是由在架構(gòu)搜索之前基于收集的樣本構(gòu)建的,而不是在搜索期間進(jìn)行精煉。
作者認(rèn)為這樣的過(guò)程使得搜索結(jié)果高度依賴于初始訓(xùn)練樣本。作為一種替代方案,本文提出在搜索過(guò)程中以在線的方式迭代建模和改進(jìn)精度預(yù)測(cè)器。從一個(gè)精確性預(yù)測(cè)器開始,該預(yù)測(cè)器僅由從搜索空間中隨機(jī)抽樣的有限數(shù)量的架構(gòu)構(gòu)建而成。
然后,使用一個(gè)標(biāo)準(zhǔn)的多目標(biāo)算法 NSGA-II 來(lái)使用構(gòu)造的精度預(yù)測(cè)器以及用戶感興趣的其他目標(biāo)進(jìn)行搜索。實(shí)驗(yàn)將這個(gè)過(guò)程重復(fù)預(yù)定義的迭代次數(shù),直到從評(píng)估的架構(gòu)中找到非支配解。
3.2.1 上層優(yōu)化加速
由于每個(gè)上層函數(shù)求值都需要在下層進(jìn)行另一次優(yōu)化,雙層問(wèn)題的嵌套性質(zhì)使得上層優(yōu)化在計(jì)算上非常昂貴。因此,為了在上層提高方法的效率,需要減少發(fā)送到下層用于學(xué)習(xí)最優(yōu)權(quán)值的架構(gòu)的數(shù)量。為了實(shí)現(xiàn)這一目標(biāo),代理模型可以在實(shí)際訓(xùn)練體系結(jié)構(gòu)之前預(yù)測(cè)它的準(zhǔn)確性。這種預(yù)測(cè)器有兩個(gè)期望的特性:1)預(yù)測(cè)結(jié)果與真實(shí)性能之間的高階相關(guān);2)樣本效率,例如使通過(guò) SGD 訓(xùn)練的體系結(jié)構(gòu)所需的數(shù)量最小化,以構(gòu)造預(yù)測(cè)器。
通常有四種代理模型可以預(yù)測(cè)精度,分別是:Multi Layer Perceptron(MLP), Classifification AndRegression Trees(CART), Radial Basis Function(RBF)和 Gaussian Process(GP)模型。另外,作者觀察到?jīng)]有一個(gè)替代模型在上述兩個(gè)標(biāo)準(zhǔn)方面始終優(yōu)于其他模型,因此,論文提出了一種選擇機(jī)制,稱為自適應(yīng)切換(Adaptive Switching, AS),它在每次迭代中構(gòu)建所有四種代理模型,并通過(guò)交叉驗(yàn)證自適應(yīng)地選擇最佳模型。
論文選用 #MAdds 作為第二個(gè)優(yōu)化目標(biāo)。搜索結(jié)束之后輸出的非支配架構(gòu)如圖 3(b)所示。通常情況下,訓(xùn)練所有架構(gòu)資源消耗很大,因此,在選擇子網(wǎng)時(shí),首先選擇預(yù)測(cè)精度比較高的架構(gòu)。接著將其他架構(gòu)候選體系映射到 #MAdds,選擇帕累托前沿中稀疏的部分,如圖 3(c)和(d)所示,最后選擇出來(lái)的子網(wǎng)架構(gòu)被送入下層進(jìn)行 SGD 訓(xùn)練,并將這些架構(gòu)增加到訓(xùn)練樣本中增強(qiáng)準(zhǔn)確率的預(yù)測(cè)模型。
3.2.2 下層優(yōu)化加速
論文通過(guò)搜索架構(gòu) hyperparameters 最大值構(gòu)建這樣一個(gè) supernet,即,設(shè)置? 5 個(gè) block,每個(gè) block 設(shè)置 4 層,膨脹率設(shè)置為 6,核大小設(shè)置為 7。接著,使用 progressive shrinking algorithm 訓(xùn)練超網(wǎng)。在架構(gòu)搜索階段,從訓(xùn)練過(guò)的超網(wǎng)繼承的權(quán)值作為梯度下降算法的初始權(quán)值。
3.3 實(shí)驗(yàn)與結(jié)果
3.3.1 代理預(yù)測(cè)器的性能
為了代理模型的有效性,本文從搜索空間中統(tǒng)一采樣 2000 個(gè)架構(gòu),并在三個(gè)數(shù)據(jù)集中使用 SGD 對(duì)它們進(jìn)行 150 個(gè) epoch 的訓(xùn)練,并在訓(xùn)練集中的 5000 張保留圖像上記錄它們的準(zhǔn)確性。然后從收集的 2000 個(gè)樣本中隨機(jī)選擇不同數(shù)量的樣本擬合代理模型。重復(fù)這個(gè)過(guò)程 10 次,用以比較預(yù)測(cè)精度與真實(shí)精度的階數(shù)相關(guān)性。在每個(gè)迭代階段,使用 Adaptive Switching 方法比較四種不同的代理模型,并且選擇最好的模型。實(shí)驗(yàn)結(jié)果如下圖所示:
3.3.2 搜索效率
為了量化效率,本文比較了兩個(gè)控制因素,分別是達(dá)到預(yù)期精度所測(cè)試的架構(gòu)總數(shù),在搜索過(guò)程中訓(xùn)練每個(gè)抽樣架構(gòu)的 epoch 數(shù),實(shí)驗(yàn)結(jié)果如下圖所示:
3.3.3 數(shù)據(jù)實(shí)驗(yàn)結(jié)果
對(duì)于每一個(gè)數(shù)據(jù)集,本文從 100個(gè)隨機(jī)選擇的結(jié)構(gòu)中迭代 30 次,對(duì)于每次迭代,從 NSGA-II 推薦的候選體系結(jié)構(gòu)中選擇 8 個(gè)體系結(jié)構(gòu),根據(jù)精確度預(yù)測(cè)器進(jìn)行評(píng)估。在 CIFAR-10 和 CIFAR-100 數(shù)據(jù)及上搜索時(shí),繼承于超網(wǎng)的權(quán)重在 5K 的驗(yàn)證集上被超調(diào)。在搜索結(jié)束時(shí),從獲得的帕累托前端選擇了四個(gè)架構(gòu),并進(jìn)一步對(duì)整個(gè)訓(xùn)練集上的 150-300 個(gè) epoch 進(jìn)行微調(diào)。本文將獲得的架構(gòu)命名為 NSGANetV2-s/m/l/xl,按 #MAdds 升序排列。
1. 表 3 顯示了模型在 ImageNet 2012 數(shù)據(jù)集上的性能。
2. 對(duì)于 CIFAR 數(shù)據(jù)集,圖 6 比較了模型與其他方法的預(yù)測(cè)性能和計(jì)算效率。
3. 量化的單目標(biāo)搜索累積的 top-1 精度和精度預(yù)測(cè)器的性能如圖 7a 所示。
4. 圖 7b 中展示了對(duì)五個(gè)目標(biāo)獲得的帕累托最優(yōu),這五個(gè)目標(biāo)分別是準(zhǔn)確率、 #Params, #MAdds, CPU and GPU 延遲時(shí)間。
NAT
論文標(biāo)題:
Neural Architecture Transfer
收錄期刊:
TPAMI 2021
論文鏈接:
https://arxiv.org/abs/2005.05859
代碼鏈接:
https://github.com/human-analysis/neural-architecture-transfer
未能展現(xiàn) NAS 的全部潛力的阻礙主要是大數(shù)據(jù)和計(jì)算資源的需求,Neural Architecture Transfer(NAT)獲取自定義的神經(jīng)網(wǎng)絡(luò)(包括拓?fù)浜蜋?quán)值),并針對(duì)可能存在的許多沖突目標(biāo)進(jìn)行了優(yōu)化,而且無(wú)需為每個(gè)新任務(wù)從頭運(yùn)行。運(yùn)行一次 NAT 可以有效地獲得多個(gè)自定義神經(jīng)網(wǎng)絡(luò),得到跨越目標(biāo)的整個(gè)權(quán)衡前沿。同 NSGANetV2 相同,引入了超網(wǎng)的概念,所有子網(wǎng)通過(guò)權(quán)值共享同時(shí)訓(xùn)練,可以非常有效地進(jìn)行采樣。這個(gè)過(guò)程可以將網(wǎng)絡(luò)搜索階段和訓(xùn)練階段解耦。為每個(gè)任務(wù)從頭開始訓(xùn)練這樣的超級(jí)網(wǎng)是非常消耗計(jì)算和數(shù)據(jù)的。
NAT 的關(guān)鍵思想是利用現(xiàn)有的超網(wǎng)絡(luò),并高效地將其遷移到特定任務(wù)的超網(wǎng)絡(luò)中,同時(shí)搜索架構(gòu),在利益目標(biāo)之間提供最好的權(quán)衡。因此,不同于標(biāo)準(zhǔn)的基于超網(wǎng)的 NAS,本文將超網(wǎng)遷移學(xué)習(xí)與搜索過(guò)程相結(jié)合。這個(gè)過(guò)程結(jié)束后,NAT 返回:1)跨越整個(gè)客觀權(quán)衡前沿的子網(wǎng);2)一個(gè)特定任務(wù)的超網(wǎng)絡(luò)。
訓(xùn)練包含重復(fù)循環(huán)兩個(gè)階段:1)adaptation stage 首先從進(jìn)化搜索返回的最佳子網(wǎng)構(gòu)造一個(gè)分層的經(jīng)驗(yàn)分布,然后,對(duì)從該分布中采樣的子網(wǎng)進(jìn)行微;2)search stage 采用代理模型來(lái)快速預(yù)測(cè)任何抽樣子網(wǎng)的 objectives,而不需要進(jìn)行全面和昂貴的評(píng)估。預(yù)測(cè)模型本身也在線學(xué)習(xí)以前的評(píng)估子網(wǎng)。
總體算法流程
首先通過(guò)從搜索空間中均勻采樣子網(wǎng),并從超網(wǎng)中繼承的權(quán)重來(lái)預(yù)測(cè)性能,接著,在子網(wǎng)和性能之間構(gòu)建代理模型來(lái)得到最優(yōu)架構(gòu)。在進(jìn)化過(guò)程結(jié)束時(shí),有希望的架構(gòu)被添加到??中。?中排名靠前的子網(wǎng)相對(duì)應(yīng)的超級(jí)網(wǎng)絡(luò)的(部分)權(quán)重被微調(diào)。在預(yù)先設(shè)定好的迭代次數(shù)運(yùn)行完之后,將輸出? 與特定于任務(wù)的超網(wǎng)。
搜索空間和編碼
所選搜索空間的通用性對(duì)可行結(jié)果的質(zhì)量有重大影響。在構(gòu)建網(wǎng)絡(luò)時(shí)采用模塊化設(shè)計(jì),包括頭、中間階段和尾部,頭和尾對(duì)所有網(wǎng)絡(luò)都是通用的,不需要被搜索。每一階段依次由多層組成,而每一層本身就是一個(gè)倒置的殘差瓶頸層。
本文搜索輸入圖像的分辨率和寬度乘法器(均勻縮放每一層輸出通道的系數(shù)),并將 CNN 分割成 5 個(gè)順序連接的 stage,每個(gè) stage 逐漸減小特征映射的尺寸并且增加通道的數(shù)量。Stage 階段搜索層的數(shù)量,并且設(shè)定每塊的限定值在 2 到 4 之間。
在 layer 階段,搜索搜索輸出和輸入通道第一個(gè) 1 * 1 卷積的膨脹率,以及卷積核大小。搜索空間的大小為:。并且使用長(zhǎng)度為 22 的整數(shù)字符串來(lái)編碼架構(gòu)。最開始的兩個(gè)值表示輸入圖像的分辨率和寬度乘法器,剩下的 20 個(gè)值表示 20 個(gè)層的膨脹率和卷積核的大小。
精度預(yù)測(cè)器
權(quán)重共享允許抽樣子網(wǎng)在它們自己之間或從一個(gè)超級(jí)網(wǎng)絡(luò)繼承權(quán)重,避免了耗時(shí)的過(guò)程。僅僅使用權(quán)重分配仍然需要對(duì)驗(yàn)證數(shù)據(jù)進(jìn)行推斷來(lái)評(píng)估性能。因此,對(duì)于在搜索過(guò)程中對(duì)數(shù)千個(gè)架構(gòu)進(jìn)行抽樣的方法來(lái)說(shuō),簡(jiǎn)單地評(píng)估子網(wǎng)仍然會(huì)導(dǎo)致整個(gè)過(guò)程無(wú)法計(jì)算。
為了減輕充分評(píng)估子網(wǎng)的計(jì)算負(fù)擔(dān),本文采用代理精度預(yù)測(cè)器,該預(yù)測(cè)器可以在不進(jìn)行訓(xùn)練或推理的情況下回歸采樣子網(wǎng)的性能。通過(guò)學(xué)習(xí)整數(shù)字符串(編碼空間中的子網(wǎng))和相應(yīng)性能之間的函數(shù)關(guān)系,這種方法將體系結(jié)構(gòu)的評(píng)估與數(shù)據(jù)處理解耦。將代理模型限制在構(gòu)成當(dāng)前客觀前沿的搜索空間來(lái)解決上述限制。這樣的解決方案顯著降低了代理的樣本復(fù)雜性,并提高了其預(yù)測(cè)的可靠性。
本文采用了四個(gè)低復(fù)雜度的預(yù)測(cè)方式,分別是高斯過(guò)程(GP)、徑向基函數(shù) (RBF)、多層感知器(MLP)和決策樹(DT)。實(shí)驗(yàn)結(jié)果和偽代碼如下所示:
多目標(biāo)進(jìn)化搜索
EA 是一個(gè)迭代過(guò)程,在這個(gè)過(guò)程中,從先前探索的體系結(jié)構(gòu)集選擇初始體系結(jié)構(gòu),并作為一個(gè)種群逐步改進(jìn)。在每一次迭代中,種群的子代通過(guò)交叉和變異來(lái)實(shí)現(xiàn)。交叉操作提供了兩個(gè)特性:1)它保留了雙親共享的公共整數(shù);2)無(wú)附加超參數(shù)。
圖 5a 為實(shí)施交叉操作的可視化圖。每次交叉產(chǎn)生兩個(gè)子代結(jié)構(gòu),每一代產(chǎn)生一個(gè)與親代相同大小的子代群體。變異是一種局部算子,它對(duì)一個(gè)解進(jìn)行擾動(dòng),從而在其附近產(chǎn)生新的解。在這項(xiàng)工作中使用了多項(xiàng)式變異算子的一個(gè)離散版本。
多目標(biāo)選擇
在這項(xiàng)工作中,作者采用了 NSGA-III 中最初提出的參考點(diǎn)引導(dǎo)選擇方法。具體選擇偽代碼如上所示。第一步是進(jìn)行非支配排序,較低的非支配排序集優(yōu)于較高的排序集。這個(gè)過(guò)程稱 non_dominated_sort。在多目標(biāo)選擇過(guò)程中,從排序較低的集合開始選擇,直到達(dá)到種群大小。
利用 Das-andDennis 方法,從單位單形中一組均勻分布的參考點(diǎn)中創(chuàng)建一組參考方向,然后根據(jù)解與參考方向的正交距離將每個(gè)解關(guān)聯(lián)到一個(gè)參考方向。對(duì)于每個(gè)參考方向,通過(guò)自適應(yīng)計(jì)算 niche count,系統(tǒng)地選擇最接近的關(guān)聯(lián)解,使每個(gè)參考方向在選擇種群中具有代表性的最接近解的機(jī)會(huì)相等。
超網(wǎng)適應(yīng)
通常,在搜索之前首先訓(xùn)練一個(gè)大型網(wǎng)絡(luò)模型(其中可搜索的架構(gòu)成為子網(wǎng)),接著利用繼承的權(quán)值評(píng)價(jià)子網(wǎng)的性能,指導(dǎo)搜索時(shí)的架構(gòu)選擇。這種方法成功的關(guān)鍵在于,當(dāng)完全從頭訓(xùn)練時(shí),具有繼承權(quán)的子網(wǎng)的性能與從頭訓(xùn)練時(shí)同一子網(wǎng)的性能高度相關(guān)。
為了滿足這一要求,必須以所有子網(wǎng)同時(shí)優(yōu)化的方式學(xué)習(xí)超網(wǎng)權(quán)值。從現(xiàn)有的 NAS 方法可以看出,并不是所有的子網(wǎng)對(duì)于特定的任務(wù)都是同等重要的,另外,只有一小部分的搜索空間可以被 NAS 算法發(fā)掘出來(lái)。
論文提出了一種簡(jiǎn)單而有效的超網(wǎng)訓(xùn)練方式,只對(duì)進(jìn)化搜索算法推薦的子網(wǎng)進(jìn)行訓(xùn)練。對(duì)于架構(gòu)編碼中的每一個(gè)值,從存檔中的架構(gòu)構(gòu)建一個(gè)分類分布,其中在第 i 個(gè)整數(shù)的 j 值的概率被計(jì)算為:
在每一步訓(xùn)練中,從上述分布中抽樣出一個(gè)整數(shù),并激活整數(shù)字符串對(duì)應(yīng)的子網(wǎng),只有被激活的子網(wǎng)權(quán)重會(huì)被更新。
4.1 實(shí)驗(yàn)
超網(wǎng)構(gòu)建
超網(wǎng)是通過(guò)將架構(gòu)編碼設(shè)置為最大值來(lái)構(gòu)造的,即每一階段有四層,每層使用擴(kuò)展比為 6,核大小為 7。對(duì)權(quán)值隨機(jī)初始化的超網(wǎng)子網(wǎng)進(jìn)行自適應(yīng),會(huì)導(dǎo)致訓(xùn)練不穩(wěn)定,性能變化大。因此,論文采用漸進(jìn)收縮算法對(duì) ImageNet 上的超網(wǎng)權(quán)值進(jìn)行 warm-up,首先對(duì)超網(wǎng)進(jìn)行全尺寸訓(xùn)練,在訓(xùn)練過(guò)程中逐漸激活對(duì)應(yīng)不同選項(xiàng)(擴(kuò)展比、核大小、層數(shù)#)的子網(wǎng)。
ImageNet 分類
在這個(gè)實(shí)驗(yàn)中,考慮準(zhǔn)確性和 #MAdds 作為兩個(gè)感興趣的目標(biāo),從原始 ImageNet 訓(xùn)練集中隨機(jī)抽取 50,000 張圖像作為驗(yàn)證集用以指導(dǎo)架構(gòu)搜索。實(shí)驗(yàn)運(yùn)行了 30 次 NAT 迭代,從最終的架構(gòu)集中,從 200M 到 600M 中選擇了四個(gè)模型,并對(duì)每個(gè)模型進(jìn)行微調(diào)以提高最終性能。表 4 顯示了通過(guò)最大化精度和最小化 #MAdds 的雙目標(biāo)優(yōu)化得到的 NAT 模型的性能。
可擴(kuò)展性
通過(guò)傳遞架構(gòu)和權(quán)重,NAT 可以為每個(gè)數(shù)據(jù)集設(shè)計(jì)定制模型,論文在 10 個(gè)圖像分類數(shù)據(jù)集(見(jiàn)表 3)上評(píng)估了 NAT,這些數(shù)據(jù)集在類的多樣性和訓(xùn)練集的大小方面存在不同的挑戰(zhàn)。對(duì)于每個(gè)數(shù)據(jù)集,將最大化精度和最小化 #MAdds 作為目標(biāo)。結(jié)果如下:
目標(biāo)可擴(kuò)展性
使用 NAT 同時(shí)優(yōu)化三個(gè)目標(biāo),即(模型精度、模型大小(#params)和模型計(jì)算效率),(模型精度、模型大小(#params)和 GPU 延遲時(shí)間),(模型精度、模型大小(#params)和CPU延遲時(shí)間)。結(jié)果如下所示:
精度預(yù)測(cè)器性能
實(shí)驗(yàn)從搜索空間中均勻采樣 350 個(gè)架構(gòu),并在 ImageNet 上使用 SGD 對(duì)它們進(jìn)行 150 個(gè) Epoch 的訓(xùn)練,每一個(gè)架構(gòu)在其他 10 個(gè)數(shù)據(jù)集上進(jìn)行了 50 個(gè) Epoch 的微調(diào)。圖 4 展示了精度預(yù)測(cè)器的預(yù)測(cè)精度和真實(shí)精度之間的平均 Spearman 秩相關(guān)性。圖 13 顯示了預(yù)測(cè)模型在不同數(shù)據(jù)集上的可視化性能比較。
搜索效率
NAS 算法消耗的總計(jì)算成本可以分為三個(gè)階段:
1. Prior-search,在架構(gòu)搜索之前產(chǎn)生的成本。
2. During-search,測(cè)量抽樣時(shí)產(chǎn)生的成本。
3. Post-search,最終確定架構(gòu)時(shí)產(chǎn)生的成本。表 6 顯示了 ImageNet 和 CIFAR-10 的結(jié)果。
總結(jié)
NAS 的方法多種多樣,本文展示了基于遺傳算法的多目標(biāo) NAS 中的一部分工作。NSGA-Net 將網(wǎng)絡(luò)編碼為字符串,在此基礎(chǔ)上利用進(jìn)化算法 NSGA-Ⅱ 來(lái)獲得最優(yōu)結(jié)構(gòu)。NSGANetV2 在 NSGA-Net 引入了超網(wǎng)絡(luò)和代理模型,減少模型的搜索時(shí)間,增加模型效率。NAT 算法引入了遷移學(xué)習(xí),在微調(diào)子網(wǎng)的同時(shí)對(duì)超網(wǎng)進(jìn)行自適應(yīng)調(diào)整。
從中可以看出,代理模型,訓(xùn)練超網(wǎng)絡(luò)這些方法已經(jīng)逐漸成為熱門方向。如何編碼網(wǎng)絡(luò),選擇交叉變異算子,選擇目標(biāo)對(duì)于 NAS 來(lái)說(shuō)也是至關(guān)重要的。現(xiàn)階段優(yōu)化的網(wǎng)絡(luò)主要集中于 CNN 與 RNN 模型,如何擴(kuò)展到其他模型也是一個(gè)重要的研究點(diǎn)。
·
·
總結(jié)
以上是生活随笔為你收集整理的如何避免调参来自动选择神经网络结构?基于遗传算法的NAS最新进展的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 活动报名 | PaddlePaddle
- 下一篇: 信用卡逾期后销卡好不好?银行:不好