當前位置:
首頁 > 知識 > 多圖演示高效的神經架構搜索

多圖演示高效的神經架構搜索

本文為 AI 研習社編譯的技術博客,原標題 :

Illustrated: Efficient Neural Architecture Search

作者 |Raimi Karim

翻譯 | 胡瑛皓、約翰遜 · 李加薪 編輯 | 醬番梨、Pita

https://towardsdatascience.com/illustrated-efficient-neural-architecture-search-5f7387f9fb6

設計不同類型的神經網路諸如圖像分類和自然語言理解通常需要大量的網路架構工程及專業知識。神經架構搜索(NAS)可使這些手工設計過程自動化。學界對NAS的研究興趣與日俱增,特別是用於最近的深度學習模型優化。探索和發現神經網路架構有很多方法。這裡小結一下在過去幾年裡,深度學習社區已經發展出以下方案,包括:

增強學習

Neural Architecture Searchwith Reinforcement Learning (Zoph and Le, 2016)

NASNet (Zoph et al., 2017)

ENAS (Pham et al., 2018)

遺傳演算法

Hierarchical Evo (Liu et al., 2017)

AmoebaNet (Real et al., 2018)

Sequential model-based optimisation (SMBO)

PNAS (Liu et al., 2017)

貝葉斯優化

Auto-Keras (Jin et al., 2018)

NASBOT (Kandasamy et al. 2018)

基於梯度的優化

SNAS (Xie et al., 2018)

DARTS (Liu et al., 2018)

本文關注於高效神經架構搜索 (ENAS)方法,它通過增強學習構建卷積神經網路(CNNs)及遞歸神經網路 (RNNs)。Hieu Pham, Melody Guan, Barret Zoph, Quoc V. Le, Jeff Dean等作者提出一種使用預定義的神經網路結構,通過增強學習框架藉助宏搜索(macro search)和微搜索(micro search)產生新的神經網路的方法。沒錯,用一個神經網路構建另一個神經網路。

本文目的是向讀者介紹,如何使用宏搜索/微搜索策略,生成新的神經網路。本文會用圖片和動畫引導作者逐步理解,有時候(由於向量化等因素)文中動畫的順序並不反映實際的處理流。

篇幅所限本文只介紹NAS在CNN圖像分類任務中的應用。同時也假定讀者已經知道RNN、CNN和增強學習等基礎概念。熟悉深度學習的一些概念諸如遷移學習、跳躍連接/殘差連接(skip/residual connection)等也會有利於你對架構搜索的理解。這裡並不要求閱讀論文原文,當然閱讀論文會加速你的理解。

0.概覽

ENAS中會使用2種神經網路, 分別為:

控制器 (controller) – 預定義的 RNN 網路, 該網路採用(LSTM)單元

子模型 (child model) – 生成的圖像分類模型

與其他NAS演算法一樣, ENAS中有3個核心概念:

搜索空間?—?—所有不同的可能產生的架構或可能被生成的子模型;

搜索策略?—?—構建這些架構或子模型的方法;

效果評估?—?—度量子模型性能的方法。

接下來讓我們看一下ENAS是如何運用上述5個基本概念的。

控制器利用搜索策略通過生成一組指令(或更嚴格地說,做出決定或抽樣決定)的方式去控制或指導子模型的架構。這裡的決定好比子模型在某個特定層需要用什麼操作(卷積、池化等)。子模型通過一系列這樣的決定來構建。那麼最後生成的子模型也就是搜索空間中諸多可能的子模型中的一個。

然後這個選定的子模型將被用於訓練直至收斂 (95%左右的訓練精度),會使用SGD去最小化期望損失函數,(對於圖像分類任務而言) 梯度來自預測的分類和實際數據。訓練過程會持續一定的epoch輪數,這裡我們稱之為child epochs,比如執行100輪。接著驗證模型,我們可以得到驗證精度。

然後用增強學習(這裡是基於策略的增強學習演算法)更新控制器參數,最大化期望回報函數,這裡也就是驗證精度。參數更新的目的是幫助控制器提升其能力,從而最終得到更高的驗證精度。

整個過程(從第3段開始)到這裡為一個epoch?—?稱為控制器epoch數。然後重複這一過程,比如執行2000輪。

這裡產生的所有2000個子模型中,驗證精度最高的模型將有幸稱為最終圖像分類任務架構。再部署模型前,該子模型需要再次訓練(指定子模型epoch輪數)。

訓練過程的偽演算法如下:

可以看到模型選擇問題可以套用增強學習框架,其主要構成如下:

Agent?——?控制器

Action?—?—構建子網路的一組決定

Reward?—?—子模型的驗證精度

本例中增強學習的目標是根據agent(控制器)執行的action(構建子模型架構的一系列決定)最大化回報reward(驗證精度)。

1. 搜索策略

回想一下前一節提到,控制器會使用一些搜索策略生成子模型架構。這句話里會有2個問題—?(1) 控制器如何決定? (2) 用什麼搜索策略 ?

控制器如何做決定?

我們來看一下控制器的模型,它是用LSTM構建的。LSTM網路以自回歸的方式通過softmax分類器採樣決定: 上一步的決定作為下一步的(以嵌入形式)輸入用於網路。

搜索策略又是什麼 ?

ENAS作者提出2種搜索和生成架構的策略:

宏搜索

微搜索

宏搜索方法就是讓控制器設計整個網路架構。採用該方法的論文包括Zoph和Le寫的NAS、FractalNet和SMASH等論文。另一方面,微搜索方法就是用控制器設計神經網路中的模塊或構建模塊(building block),最終用它們構建整個神經網路,之前有論文用這種方法實現,比如Hierarchical NAS、Progressive NAS、NASNet等論文。

以下2部分將介紹ENAS如何實現這兩種策略。

1.1 宏搜索

宏搜索演算法中,對於子模型中每一層,控制器需要作出2個決定:

執行上一層的操作 (參見說明操作列表)

為上一層連上跳躍連接

下面例子中會看到,控制器如何生成子模型的4個層,色紅、綠色、藍色、紫色分別表示子層中不同層。

卷積層1(紅色)

首先,控制器執行第一個時點,該時點的輸出為一個softmax後的向量,最後被翻譯為一個3x3的卷積操作。

對子模型這意味著,先用一個3x3的過濾器對輸入圖像做卷積操作。

前面提到控制器需要做2個決定,不過這裡只看到1個決定。這是因為此處是網路初始處,只能採樣一個決定,也就是可以執行的操作,顯然這步除了輸入層沒有其他層需要連接。

卷積層2 (綠色)

構建接下來的卷積層。控制器需要做兩個決定 (也就是): (i) 產生操作 和 (ii) 產生連接層。此處我們看到,控制器產生1、5×5 深度可分離卷積操作。

對於子網路這意味著,需要對上一層輸出結果執行一次5×5 深度可分離卷積操作,然後將此輸出與下面第一層的輸出連接在一起,比如來自紅色層的輸出。

卷積層3 (藍色)

重複前面的步驟生成第三個卷積層。同樣我們看到控制器得到兩個結果: (i) 操作 (ii) 需要連接的層。下面示例中控制器產生連接1、2和3×3 最大池化操作。

因而子模型會在上一層(第二層,綠色)輸出結果上執行一次3x3 最大池化操作。然後結果就是沿著深度維度合併了1、2層的輸出。

卷積層4 (紫色)

重複上述步驟生成第4個卷積層。這次生成的是1、3以及5x5卷積操作。

子模型在上一層(第3層, 藍色)的輸出上執行5x5的卷積操作。然後運算結果與深度方向上的第1、3層的結果連接。

結束

這樣就完成了——?用宏搜索生成的一個子模型! 接下來是微搜索. 注意: 微搜索不像宏搜索那麼直觀。

1.2 微搜索

本文前面提過,微搜索用於設計模塊或構建模塊,這些模塊會被連接到子模型形成最終的架構。在ENAS中把這些構建模塊稱為卷積單元(convolutional cells)和消減單元(reduction cells)。放置卷積單元或消減單元就構成了一個操作塊。這兩種其實很相似——?唯一不同的是,消減單元的步長(stride)為2,這樣從空間上就減少了維度數。

介紹到這裡也許你會問,如何將這些單元連接到最終的網路?

最終的神經網路

最終生成子模型的概覽圖如下:

圖 1.2.1: 最終生成神經網路概覽

讓我們回頭來看看

用於微網路搜索的構建單元

用於微搜索的子網路的構建單元有一系列層次關係,從大到小是:

塊 (block)

卷積單元 / 消減單元

節點 (node)

子模型由幾個塊組成。每個塊由N個卷積單元和1個消減單元組成,按之前提到的這個順序。每個卷積/消減單元包含B個節點。每個節點包含標準卷積操作 (後面會介紹). (此處N 和 B 是超參數,由架構師微調確定)。

下面是一個含3個塊的子模型,每塊由N=3卷積單元和1個消減單元組成。 此圖只展示結構,不展開顯示單元中的操作。

圖 1.2.2: 最終生成神經網路概覽

如何用微搜索產生這樣的子模型? 請繼續閱讀!

由微搜索生成子模型

為了簡化問題本文以構建1個塊的微搜索為例,每個塊(雖然看起來是1)包含N=3個卷積單元和1個消減單元,其中每個單元含B=4個節點,這樣構建出來的子模型如下圖所示:

現在來構建一個卷積單元!

快進

為了方便解釋如何構建一個卷積單元,我們假設已經構建了2個卷積單元。注意到圖中這2個單元的最後都是add操作。此處先假設就是這麼設定的,下面會詳細說明原因。

圖 1.2.4: 用微搜索構建了2個卷積單元

已經構建好2個卷積單元了,接下來開始構建第3個。

卷積單元 #3

接下來構建第3個單元。

還記得么,前面提到每個卷積單元由4個節點組成。那這些節點 在哪?

請仔細閱讀這段,最前面2個節點就是當前單元之前的2個單元。那另2個單元呢? 這2個節點就在我們正在構建的卷積單元中。下圖列出了這些節點的位置:

接下來忽略圖中『卷積單元』標記,請關注圖中『節點』標記:

節點 1?—?紅色 (卷積單元 #1)

節點 2?—?藍色 (卷積單元 #2)

節點 3?—?綠色

節點 4?—?紫色

你可能想知道,當我們構建每個卷積單元時,這些節點都會改變么,答案是: 對的! 每個單元都會以這種方式『指定』節點。

你可能還會問,?既然已經構建了節點1和節點2中的操作(也就是卷積單元 #1、#2),那還需要在這些節點中構建什麼? 這是個好問題。

卷積單元 #3: 節點 1 (紅色) 、節點 2 (藍色)

當我們構建單元時,前2個節點不需生成,事實上他們作為其他節點的輸入。本例中一共構建4個節點,那麼節點1、2可以作為節點3、4的輸入。不需要去管節點1、2,接下來構建節點3、4。嗖!

卷積單元 #3: 節點 3 (綠色)

首先從節點3處開始構建。微搜索中控制器將採樣4個決定(或者說2組決定),這不同於宏搜索,每層採樣2個決定:

2個需要連接的節點

這2節點上各自需要執行的2個操作

控制器需要執行4步,以生成這些決定,見下圖:

接上文,控制器從4個時點分別採樣了2、1、5×5 平均池化操作、5×5 深度可分離卷積操作。這些結果是怎麼翻譯成子模型中的架構呢? 見下圖:

上圖中, 講了3件事:

節點2的輸出(藍色)會經過一個5×5 平均池化操作。

節點1的輸出(紅色)會經過一個5×5 深度可分離卷積操作。

接下來兩者會經過add操作。

節點在這步的輸出經過了add操作,最後得到一個tensor。這解釋了上文中提到的為什麼節點1、2末端都是add操作。

卷積單元 #3: 節點 4 (紫色)

接下來是節點 4。重複同樣的步驟,不過現在控制器有3個節點可供選擇(節點1、2、3)。下面控制器生成3、1、id、3×3 平均池化操作。

這些輸出被翻譯為以下結構:

解釋一下這一過程?

節點3的輸出(綠色) 經過一個id操作。

節點1的輸出(紅色) 經過一個3×3 平均池化操作。

以上結果最後會經過一個add操作。

就是這樣,卷積單元#3已構建完畢

消減單元

記得么每經過N個卷積單元,需要有一個消減單元。本例中N=3 之前已經完成了卷積單元#3的構建,接下來需要構建消減單元。之前提到過,消減單元設計與卷積單元#3相似,唯一不同是採樣使用的步長為2。

結束

從微搜索策略中生成子模型就是這樣的。希望讀者不會感到這些解釋過於複雜,因為我第一次讀論文曾覺得有點複雜。

2. 說明

由於本文主旨是介紹宏搜索策略和微搜索策略,有許多細節並未展開 (特別是論文中涉及遷移訓練的概念和內容)。這裡簡單說明一下:

ENAS『高效』體現在哪? 答案: 採用了遷移學習。如果兩個節點間的計算之前已完成(已訓練完成), 卷積過濾器的權重和1×1的卷積(為了維持輸出的通道數; 上文未提及) 會被複用。這使得ENAS較其之前的模型速度更快!

控制器採樣決定後有可能不需要任何跳躍連接

文中提及控制器生成6種可能的操作,分別為: 3×3和5×5卷積操作、3x3和5x5深度可分離卷積操作、3x3 最大池化操作和3x3 平均池化操作。

每個單元末端的連接操作,可連接任何節點的「鬆散的末端」。

policy gradient (REINFORCE)增強學習演算法。

3. 總結

宏搜索 (用於整個網路)

最終子模型如下

微搜索 (用於卷積單元)

此處僅展現最終子模型的部分架構

4. 實現

作者給出的TensorFlow實現

Keras實現

PyTorch實現

5. 參考資料

Efficient Neural Architecture Search via Parameter Sharing

Neural Architecture Search with Reinforcement Learning

Learning Transferable Architectures for Scalable Image Recognition

就是它,記得去讀一下ENAS論文 Efficient Neural Architecture Search via Parameter Sharing。如果有任何問題,請標明文中內容,然後給我留言

最後,特別感謝 Ren Jie Tan, Derek, Yu Xuan Tay 對本文提出的思路、建議和更正。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 AI研習社 的精彩文章:

利用事件相機將模糊視頻還原成高速清晰視頻
ACM對2018圖靈獎獲得者Geoffrey Hinton、Yann LeCun、Yoshua Bengio的專訪

TAG:AI研習社 |