首頁?學習  »   正文

深度學習的未來:神經網絡架構搜索(NAS)

我們大多數人可能都知道ResNet的成功,它是2015年ILSVRC圖像分類、檢測和定位的大贏家,也是2015年MS COCO檢測和分割的大贏家。它是一個巨大的體系結構,到處都有跳躍連接。當我使用這個ResNet作為我的機器學習項目的預培訓網絡時,我就在想“怎么會有人提出這樣的體系結構呢?”

深度學習的未來:神經網絡架構搜索(NAS)

大型人類工程圖像分類體系結構

不久之后,我了解到許多工程師和科學家用他們多年的經驗建造了這個建筑。還有更多的預感,而不是完整的數學,會告訴你“我們現在需要一個5×5的過濾器,以達到最佳精度”。對于圖像分類任務,我們有很好的體系結構,但是很多像我這樣的年輕學習者在處理非圖像數據集時,通常會花費數小時來修復架構。我們當然希望有人能為我們做這件事。

在神經架構搜索(NAS),自動化架構工程的過程就出現了。我們只需要為NAS系統提供一個數據集,它將為我們提供該數據集的最佳架構。NAS可以看作AutoML的子域,與超參數優化有明顯的重疊。為了理解NAS,我們需要深入研究它在做什么。它是從所有可能的體系結構中找到一個體系結構,通過遵循將性能最大化的搜索策略。下圖總結了NAS算法。

深度學習的未來:神經網絡架構搜索(NAS)

NAS方法的維度

它有三個獨立的維度搜索空間,搜索策略和性能估計。

搜索空間定義了NAS方法原則上可以發現哪些神經結構。它可以是鏈式結構,其中層(n-1)的輸出作為層(n)的輸入,也可以是具有跳躍連接(多分支網絡)的現代復雜結構。

深度學習的未來:神經網絡架構搜索(NAS)

鏈狀多分支網絡

有些時候,人們確實希望使用手工制作的外部架構(宏架構)和重復的主題或單元。在這種情況下,外部結構是固定的,而NAS只搜索單元結構。這種類型的搜索稱為微搜索或單元搜索。

深度學習的未來:神經網絡架構搜索(NAS)

左:單元結構右:單元被放置在手工制作的外部結構中。

在許多NAS方法中,微觀結構和宏觀結構都采用層次結構搜索;它由幾個層次的圖案組成。第一級由一組基本操作組成,第二級是通過有向無環圖連接基本操作的不同基序,第三級是編碼如何連接第二級基序的基序,依此類推。

為了解釋搜索策略和性能評估,下面將討論三種不同的NAS方法。

強化學習

我們知道強化學習;在哪里根據θ參數化的策略執行一些操作。然后,代理根據所采取操作的獎勵更新策略θ。對于NAS,代理生成模型體系結構、子網絡(操作)。然后對模型進行數據集培訓,并將模型對驗證數據的性能作為獎勵。

深度學習的未來:神經網絡架構搜索(NAS)

控制器扮演代理人的角色,準確度作為獎勵。

一般來說,遞歸神經網絡(RNN)被視為控制器或代理。它生成字符串,模型是以隨機字符串的形式構建的。

深度學習的未來:神經網絡架構搜索(NAS)

RNN生成的用于創建模型的字符串示例

例如,在圖5中使用連續的RNN輸出來構建濾波器; 從過濾器高度開始到跨距寬度。輸出定位點用于指示跳過連接。在第N層,錨點將包含N – 1個基于內容的sigmoid,表示需要連接的前一層。

RNN的訓練策略梯度法迭代更新政策θ。這里跳過了詳細的計算。

漸進式神經結構搜索(PNAS)

PNAS執行單元格搜索,如本教程的搜索空間部分所述。它們從塊構造單元格,并通過以預定義的方式添加單元格來構造完整的網絡。

深度學習的未來:神經網絡架構搜索(NAS)

單元以預先定義的數字串聯起來形成網絡。每個細胞由若干塊組成(原文中使用了5塊)。

深度學習的未來:神經網絡架構搜索(NAS)

這些塊由預先定義的操作組成。

深度學習的未來:神經網絡架構搜索(NAS)

塊的結構。組合函數只是元素相加。

操作結果表明,圖中所示為原論文所使用的圖形,可以進行擴展。

深度學習的未來:神經網絡架構搜索(NAS)

在左側,顯示了一個完整的示例。即使在這個單元或微搜索中,也有10種有效的組合來檢查以找到最佳的單元結構。

因此,為了降低復雜性,首先只構建只有1個塊的單元。這很容易,因為在上述操作中,只有256個不同的單元是可能的。然后選擇性能最好的前k個單元格展開為2個塊單元格,最多重復5個塊。

但是,對于一個合理的K,太多的2個街區的候選人培訓。為了解決這個問題,我們訓練了一個“廉價”的代理模型,它通過讀取字符串(單元格被編碼成字符串)來預測最終的性能。在構建、培訓和驗證單元時,將收集此培訓的數據。

例如,我們可以構建所有256個單塊單元,并測量它們的性能。并用這些數據訓練代理模型。然后用這個模型來預測2個block cell的性能而不需要實際的訓練和測試。當然,代理模型應該能夠處理可變大小的輸入。然后選擇模型預測的表現最好的2個block cell top K。然后這兩個塊單元格被實際訓練,“代理”模型被微調,這些單元格被擴展到3個塊,并被迭代。

深度學習的未來:神經網絡架構搜索(NAS)

PNAS的步驟

微結構的搜索(DARTS)

神經架構的搜索空間是離散的,即一個架構與另一個架構至少有一個層或層中的一些參數不同,例如5×5過濾器與7×7過濾器。該方法將連續松弛法應用于離散搜索,實現了基于梯度的直接優化。

我們搜索的單元可以是一個有向無環圖,其中每個節點x是一個潛在的表示(例如卷積網絡中的特征圖),每個有向邊緣(i,j)與一些操作o(i,j)(卷積、最大池等)相關聯,這些操作轉換x(i),并在節點x(j)存儲一個潛在的表示。

深度學習的未來:神經網絡架構搜索(NAS)

每個節點的輸出可以用左邊的公式計算。以這樣的方式枚舉節點,即從節點x(i)到x(j)有一條邊(i,j),然后i<j。

在連續松弛中,而不是在兩個節點之間進行單一操作。使用每個可能操作的凸組合。為了在圖中對此進行建模,將保留兩個節點之間的多個邊,每個邊對應一個特定的操作。每個邊也有一個重量α。

深度學習的未來:神經網絡架構搜索(NAS)

離散問題的連續松弛

現在o(i,j)節點x(i)和x(j)之間的操作是一組操作o(i,j)的凸組合,其中o(.)_s,其中s是所有可能操作的集合。

深度學習的未來:神經網絡架構搜索(NAS)

O(i,j)的輸出由上面方程計算。

分別用l_train和l_val表示培訓和驗證損失。這兩種損耗不僅取決于結構參數α,還取決于網絡中的權重“w”。架構(architecture)搜索的目標是找到將驗證損失L_val(w*,α*)最小化的α*,其中與架構相關的權重“w*”通過最小化培訓損失獲得。

w??= argmin?L_train(w, α? ).

這意味著一個以α為上層變量,w為下層變量的雙層優化問題:

α *?= argmin?L_val(w ? (α), α)

s.t.?w ? (α)?= argmin?L_train(w, α)

訓練后,某些邊的α變得比其他邊大得多。為了推導這個連續模型的離散結構,在兩個節點之間,只保留具有最大權重的邊。

深度學習的未來:神經網絡架構搜索(NAS)

a)邊緣操作最初未知。b)通過在每個邊上放置一個候選操作的混合物來對搜索空間進行連續松弛c)在雙層優化過程中,一些權重增加,一些權重下降d)僅通過在兩個節點之間取最大權重的邊來構建最終架構。

當找到這些單元后,這些單元就被用來構建更大的網絡。

本教程到此結束。這里有很多細節和方法我沒有介紹,但是NAS已經成為一個非常活躍的領域,為了跟蹤正在進行的工作,大家也可以訪問?AutoML這個網站繼續學習。

歡迎關注ATYUN官方公眾號,商務合作及內容投稿請聯系郵箱:[email protected]

發表評論