AutoDL論文解讀(六):基於代理模型的NAS

自動化機器學習(AutoML)最近變得越來越火,是機器學習下個發展方向之一。其中的神經網絡結構搜索(NAS)是其中重要的技術之一。人工設計網絡需要豐富的經驗和專業知識,神經網絡有衆多的超參數,導致其搜索空間巨大。NAS即是在此巨大的搜索空間裏自動地找到最優的網絡結構,實現深度學習的自動化。自2017年穀歌與MIT各自在ICLR上各自發表基於強化學習的NAS以來,已產出200多篇論文,僅2019年上半年就有100多篇論文。此係列文章將解讀AutoDL領域的經典論文與方法,筆者也是剛接觸這個領域,有理解錯誤的地方還請批評指正!
此係列的計劃寫作文章列表(不定期更新):

  • AutoDL論文解讀(一):基於強化學習的開創性工作
  • AutoDL論文解讀(二):基於遺傳算法的典型方法
  • AutoDL論文解讀(三):基於塊搜索的NAS
  • AutoDL論文解讀(四):權值共享的NAS
  • AutoDL論文解讀(五):可微分方法的NAS
  • AutoDL論文解讀(六):基於代理模型的NAS
  • AutoDL論文解讀(七):基於one-shot的NAS
  • AutoDL論文解讀(八):NAS中的遷移學習
  • AutoDL論文解讀(九):強化學習基礎
  • AutoDL論文解讀(十):遺傳算法基礎

本篇講述基於代理模型的漸進式搜索《Progressive Neural Architecture Search》。代理模型就是訓練並利用一個計算成本較低的模型去模擬原本計算成本較高的那個模型的預測結果,當需要計算的大模型的數量較多時,可以避開很多計算。

一、Progressive Neural Architecture Search

1、總覽

這篇論文也是搜尋卷積cell,每個cell包含B個block,每個block連接兩個輸入,然後cell堆疊起來組成整個網絡,同NASNet(《Learning Transferable Architectures for Scalable Image Recognition》)裏的基本一樣。不過作者是從簡單的淺層的cell開始,逐漸地搜索到複雜的cell,而不是每次預測固定大小的cell。在算法的第b次迭代,有K個候選的cell(每個cell有b個block),這些會被訓練和評估。因爲這個過程是非常費時的,作者在這裏使用代理模型去預測候選cell的效果。將K個包含b個block的候選cell擴展成K>>KK^{\prime}>>K個cell,每個cell有b+1個block。使用代理模型去預測他們的表現,然後選取最高的K個,訓練並評估。直到b=B,達到允許的最大block數目。

2、搜索空間

這裏作者不再區分normal cell和reduction cell,不過如果步長爲2,同樣可以實現reduction cell的功能。cell是由B個block組成的,每個block將兩個輸入組合成一個輸出。一個在第cc個cell裏的第bb個block 可以用一個元組表示(I1,I2,O1,O2)(I_{1},I_{2},O_{1},O_{2}),這裏I1,I2IbI_{1},I_{2} \in {\mathcal I}_{b}表示輸入,O1,O2ObO_{1},O_{2} \in {\mathcal O}_{b}表示作用在輸入IiI_{i}上的操作。對於兩個輸入的連接方式,NASNet裏有相加和沿深度軸連接兩種選擇,不過作者發現沿深度軸連接在實驗中從來沒有被選擇過,因此這裏只將兩個輸入相加,生成block的輸出HbcH_{b}^{c}。可能的輸入集合Ib\mathcal I_{b}是這個cell裏所有的前驅block的輸出{H1c,,Hb1c}\{H_{1}^{c}, \dots, H_{b-1}^{c}\},加上前一個cell的輸出HBc1H_{B}^{c-1},再加上前前一個cell的輸出HBc2H_{B}^{c-2}。操作空間O\mathcal O包括以下幾種:
在這裏插入圖片描述
令第bb個block可能的結構空間是Bb\mathcal B_{b},那麼這個空間的大小爲Bb=Ib2×O2|\mathcal B_{b}|=|\mathcal I_{b}|^{2} \times |\mathcal O|^{2}Ib=(2+b1)|\mathcal I_{b}|=(2+b-1)O=8|\mathcal O|=8。對於b=1b=1,只有I1={HBc1,HBc2}\mathcal I_{1}=\{H_{B}^{c-1}, H_{B}^{c-2}\},所以總共有B1=4×4×82=256|\mathcal B|_{1}=4 \times 4 \times 8^{2}=256個可能的cell。這裏作者令B=5B=5,那麼一種有B1:5=(22×82)×(32×82)×(42×82)×(52×82)×(62×82)=5.6×1014\left|\mathcal{B}_{1: 5}\right|=(2^{2} \times 8^{2}) \times (3^{2} \times 8^{2}) \times (4^{2} \times 8^{2}) \times (5^{2} \times 8^{2} )\times (6^{2} \times 8^{2})=5.6 \times 10^{14}種可能。但這些可能的cell裏有一些對稱的結構,例如b=1時只有136個獨一無二的cell,那麼整個搜索空間大小大概是101210^{12}數量級,比NASNet的102810^{28}小了不少。

下圖展示了可能的cell結構和cell的堆疊方式:
在這裏插入圖片描述

3、漸進式搜索

作者從最簡單的模型開始,按漸進的方式搜索。首先從只含一個block的cell開始,構造出所有可能的cell空間B1\mathcal B_{1},將它們放入隊列中,並且訓練、評估隊列中所有的模型。然後擴展其中的每個cell至含有2個block,所有可能的cell空間爲B2\mathcal B_{2},此時所有的候選cell有B1×B2=256×((2+1)2×82)=147,456|\mathcal B_{1}| \times |\mathcal B_{2}|=256 \times ((2+1)^{2} \times 8^{2})=147,456種可能。訓練和評估這麼多種模型是基本不可行的,因此作者使用預測函數(即代理模型)去預測這些模型的表現。之前已經訓練評估過一些模型了,那麼代理模型就從這些已經評估出來的模型和結果中訓練。然後去預測上面147,456種可能的模型,選出K個效果最好的模型,將它們放入隊列中,然後重複整個過程,直到cell包含B個block。具體算法如下圖所示:
在這裏插入圖片描述
下圖展示了一個漸進式搜索的例子:
在這裏插入圖片描述
這個例子設cell裏最多有B=3個block,Bb\mathcal B_{b}表示有b個block時候選cell的集合。當cell包含一個block時,S1=B1\mathcal S_{1}= \mathcal B_{1},訓練這些並評估這些cell,然後更新代理模型;在第二輪,將S1\mathcal S_{1}裏的每個cell擴展到2個block,此時S2=B1:2\mathcal S_{2}^{\prime}=\mathcal B_{1:2},預測它們的性能,選擇其中最高的KK個組成S2\mathcal S_{2},訓練並評估它們,然後更新代理模型;在第三輪,將S2\mathcal S_{2}裏的每個cell擴展爲3個block,得到有3個block的cell的集合的子集S3B1:3S_{3}^{\prime} \subseteq \mathcal B_{1:3}(在第二輪裏已經選擇了K個最好的cell,已經是子集了,再擴展地話依然是子集),預測它們的性能,選擇最好的K個,訓練評估它們,最後得到最好的模型。

4、用代理模型預測

我們需要一個代理模型去預測模型的性能,這樣的代理模型三友三個特點:(1)能處理可變長度的輸入。即使代理模型是在僅包含b個block的cell上訓練的,那它也得能預測包含b+1個block的cell的性能;(2)與真實性能呈相關關係。我們並不一定非要獲得較低的均方誤差,但我們確實希望代理模型預測的性能排序同真實的大致相同;(3)樣本效率,我們希望訓練和評估儘可能少的cell,這意味着用於代理模型的訓練數據將是稀缺的。

作者嘗試了兩種代理模型:LSTM和MLP。對於LSTM,將長度爲4b4b(表示每個block的I1,I2,O1,O2I_{1},I_{2},O_{1},O_{2})的序列作爲輸入,然後預測驗證集準確率,使用L1損失訓練模型。作者對I1,I2II_{1},I_{2} \in \mathcal I使用DD維的嵌入,對於O1,O2OO_{1},O_{2} \in \mathcal O使用另一套嵌入。對於MLP,作者將cell轉爲固定長度的向量:將每個block的操作嵌入成DD維向量,連接block裏的操作爲4D4D向量,對於cell裏所有block的4D4D維向量取平均。對於訓練代理模型,因爲樣本量比較少,作者訓練5個模型做集成。

5、實現細節

對MLP代理模型,嵌入向量長度爲100,使用兩個全連接層,每層有100個神經元。對於LSTM代理模型,隱藏狀態長度和嵌入向量長度爲100。嵌入向量從[-0.1, 0.1]之間均勻採樣初始化。最後全連接層的偏置設爲1.8(sigmoid之後爲0.68),這是b=1的所有模型的平均準確率。在搜索過程中,每個階段評估K=256個模型(在第一階段評估136個),cell最多有B=5個block,第一個卷積cell裏有F=24個濾波器,在最終的網絡結構裏重複N=2次,訓練20輪。

參考文獻

[1] Liu C , Zoph B , Neumann M , et al. Progressive Neural Architecture Search[J]. 2017.
[2] 《深入理解AutoML和AutoDL》

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章