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