自動化機器學習(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擴展成個cell,每個cell有b+1個block。使用代理模型去預測他們的表現,然後選取最高的K個,訓練並評估。直到b=B,達到允許的最大block數目。
2、搜索空間
這裏作者不再區分normal cell和reduction cell,不過如果步長爲2,同樣可以實現reduction cell的功能。cell是由B個block組成的,每個block將兩個輸入組合成一個輸出。一個在第個cell裏的第個block 可以用一個元組表示,這裏表示輸入,表示作用在輸入上的操作。對於兩個輸入的連接方式,NASNet裏有相加和沿深度軸連接兩種選擇,不過作者發現沿深度軸連接在實驗中從來沒有被選擇過,因此這裏只將兩個輸入相加,生成block的輸出。可能的輸入集合是這個cell裏所有的前驅block的輸出,加上前一個cell的輸出,再加上前前一個cell的輸出。操作空間包括以下幾種:
令第個block可能的結構空間是,那麼這個空間的大小爲,,。對於,只有,所以總共有個可能的cell。這裏作者令,那麼一種有種可能。但這些可能的cell裏有一些對稱的結構,例如b=1時只有136個獨一無二的cell,那麼整個搜索空間大小大概是數量級,比NASNet的小了不少。
下圖展示了可能的cell結構和cell的堆疊方式:
3、漸進式搜索
作者從最簡單的模型開始,按漸進的方式搜索。首先從只含一個block的cell開始,構造出所有可能的cell空間,將它們放入隊列中,並且訓練、評估隊列中所有的模型。然後擴展其中的每個cell至含有2個block,所有可能的cell空間爲,此時所有的候選cell有種可能。訓練和評估這麼多種模型是基本不可行的,因此作者使用預測函數(即代理模型)去預測這些模型的表現。之前已經訓練評估過一些模型了,那麼代理模型就從這些已經評估出來的模型和結果中訓練。然後去預測上面147,456種可能的模型,選出K個效果最好的模型,將它們放入隊列中,然後重複整個過程,直到cell包含B個block。具體算法如下圖所示:
下圖展示了一個漸進式搜索的例子:
這個例子設cell裏最多有B=3個block,表示有b個block時候選cell的集合。當cell包含一個block時,,訓練這些並評估這些cell,然後更新代理模型;在第二輪,將裏的每個cell擴展到2個block,此時,預測它們的性能,選擇其中最高的個組成,訓練並評估它們,然後更新代理模型;在第三輪,將裏的每個cell擴展爲3個block,得到有3個block的cell的集合的子集(在第二輪裏已經選擇了K個最好的cell,已經是子集了,再擴展地話依然是子集),預測它們的性能,選擇最好的K個,訓練評估它們,最後得到最好的模型。
4、用代理模型預測
我們需要一個代理模型去預測模型的性能,這樣的代理模型三友三個特點:(1)能處理可變長度的輸入。即使代理模型是在僅包含b個block的cell上訓練的,那它也得能預測包含b+1個block的cell的性能;(2)與真實性能呈相關關係。我們並不一定非要獲得較低的均方誤差,但我們確實希望代理模型預測的性能排序同真實的大致相同;(3)樣本效率,我們希望訓練和評估儘可能少的cell,這意味着用於代理模型的訓練數據將是稀缺的。
作者嘗試了兩種代理模型:LSTM和MLP。對於LSTM,將長度爲(表示每個block的)的序列作爲輸入,然後預測驗證集準確率,使用L1損失訓練模型。作者對使用維的嵌入,對於使用另一套嵌入。對於MLP,作者將cell轉爲固定長度的向量:將每個block的操作嵌入成維向量,連接block裏的操作爲向量,對於cell裏所有block的維向量取平均。對於訓練代理模型,因爲樣本量比較少,作者訓練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》