AutoDL論文解讀(七):基於one-shot的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論文解讀(十):遺傳算法基礎

本篇介紹三篇論文:《SMASH: One-Shot Model Architecture Search through HyperNetworks》,《Understanding and Simplifying One-Shot Architecture Search》和《Single Path One-Shot Neural Architecture Search with Uniform Sampling》。

一、SMASH: One-Shot Model Architecture Search through HyperNetworks

1、總覽

這篇論文作者通過訓練一個輔助模型:超網絡(HyperHet),去訓練搜索過程中的候選模型,這個超網絡動態地生成生成具有可變結構的主模型的權值。儘管這些生成的權重比固定的網絡結構自由學習得到的權重更差,但是不同網絡在早期訓練中的相對性能(即與最優值的距離)爲最優狀態下性能提供了有意義的指導。作者同時開發了一個基於存儲庫(memory-back)讀寫的網絡表示機制,來定義各種各樣的網絡結構。作者稱此方法爲SMASH(one-Shot Model Architecture Search through Hypernetworks)

2、利用超網絡的one-shot結構搜索

在SMASH中,我們的目標是根據一個網絡的驗證集性能對一組網絡的性能進行排序,這個任務是通過超網絡生成權重來完成的。在每個訓練步,我們隨機地採樣一個網絡結構,用超網絡生成它的權重,然後訓練這個網絡。訓練結束後,再隨機採樣一些網絡,它們的權重是由超網絡生成的,直接評估它們的性能。選擇其中在驗證集表現最好的網絡,再正常地訓練它的權重。SMASH由兩個核心要點:(1)我們採樣網絡結構的方法;(2)給定抽樣結構的權重的方法。對於第一點,作者提出了網絡的存儲庫視圖,允許將複雜的、分支的拓撲作爲二值向量進行採樣和編碼。對於第二點,作者使用超網絡,直接學習二值向量的結構編碼到權重的映射。這裏假設只要超網絡生成了合理的權值,網絡的驗證集性能將與使用正常訓練權值時的性能相關,而結構的差異是其性能變化的主要因素。

3、定義Memory-Bank

爲了能探索非常廣闊搜索的空間,也爲了能將網絡結構簡單地編碼成向量輸入到超網絡中,作者提出了網絡的存儲庫視圖。這個方法將網絡視爲一組可以讀寫的存儲庫(初始的張量爲0),每一層是一個操作,這個操作從存儲庫的子集中讀取數據,修改數據,然後將它寫入另一個存儲庫子集。對於一個單分支結構,網絡有一個大的存儲庫,它在每個操作上對其進行讀寫(對於ResNet是相加)。DenseNet這樣的分支架構從所有以前寫入的存儲庫讀取數據,並將數據寫入空的存儲庫,而FractalNet有更復雜的讀寫模式,見下圖:
在這裏插入圖片描述
這裏一個基本的網絡結構包括多個block,在給定特徵圖下每個block有多個存儲庫,特徵圖大小依次減半。下采樣是通過1x1卷積和平均池化完成的,1x1卷積和輸出層的權重是自由學習到的,而不是超網絡生成的。示意圖如下所示:
在這裏插入圖片描述
在採樣結構時,每個block的存儲庫的的數目和通道數目是隨機採樣的。當定義一個block裏的每層時,我們隨機選擇讀寫模式和作用在讀取的數據上的操作。當從多個存儲庫讀取讀取時,我們沿通道這個軸連接數據,寫入存儲庫時,將此數據與寫入存儲庫中數據相加。在這篇論文中,作者只從一個block裏的存儲庫中讀寫,雖然也可以從其他block裏的存儲庫中讀寫。

每個操作包含一個1x1卷積(降低輸入通道數目),然後接帶非線性變換的可變數量的卷積,如上圖(a)中所示,隨機選擇四個卷積中的哪個被激活,以及它們的過濾器大小、膨脹係數、組數和輸出單元數。這裏的1x1卷積是由超網絡生成的(上面也有一個1x1卷積,那個是用來和池化一塊來減小特徵圖高寬的,是自由學習到的,和這裏的不一樣)。爲了確保可變深度,每個塊都學習一個含4個卷積的集合,並在一個塊內的所有操作中共享它。這裏限制了最大的濾波器大小和輸出單元的數目,當採樣的操作使用的值小於其最大值時,我們簡單地將張量切片至所需的大小。固定的變換卷積和輸出層根據傳入的非空存儲庫的數量使用相同的切片。

作者力求最小化學習到的靜態參數的數量,將網絡的大部分容量放在超網絡中。這一目標的一個顯著結果就是,我們只在下采樣層和輸出層之前使用BatchNorm,因爲特定層的運行統計量很難動態生成。這裏作者採用一個簡化版的WeightNorm,每個生成的1 x1濾波器除以其歐幾里得範數(而不是每個通道單單獨規範化),用在固定結構的網絡中僅導致小精度下降。操作中其他卷積是沒有標準化的。

4、學習結構到權重的映射

超網絡是用來給另一個網絡參數化權重的,那個網絡就是主網絡(main network)。對於參數是HH的靜態超網絡,主網絡的權重WW是一個已學習到的嵌入zz的函數(例如感知機),因此,學習到的權值的數量通常小於主網絡權值的完整數量。對於動態超網絡,權值WW的生成取決於網絡輸入xx,或者對於循環神經網絡,則取決於當前輸入xtx_{t}和先前的隱藏狀態ht1h_{t-1}

基於主網絡結構cc的編碼,作者提出了一個動態超網絡取生成權重WW,目標是學習一個映射W=H(c)W=H(c),也就是說給定cc使其接近最優權值WW,這樣就可以根據使用超級網絡生成的權重,得到驗證集誤差,並對每個cc進行排序。

這裏的超網絡是全卷積的,這樣輸出張量WW的維數就會隨着輸入cc的維數而變化,這樣我們就得到了標準格式BCHW的4D張量,批量大小爲1,因此沒有輸出元素是完全獨立的。這允許我們通過增加cc的寬度或長度去改變主網絡的深度和寬度。在這樣的設計下,WW的每個空間維度的切片都對應於cc的一個特定子集。描述操作的信息被嵌入到相應的cc的切片的通道維度中。

以下圖爲例,如果一個操作從存儲庫1,2,4中讀取數據,然後寫入到2,4中,然後相應的cc的切片的第一、二、四個通道被填入1(表示讀),切片的第六、八通道填入1(表示寫)。其他的操作在餘下的通道中用同樣1-hot的方式編碼。我們只根據操作的輸出單元的數量對cc的寬度進行編碼,所以沒有與WW的任何元素對應的cc元素都是空的。
在這裏插入圖片描述
上述方案的一個樸素實現是讓cc的大小等於WW的大小,或者讓超網絡用上採用去產生更多的元素。但作者發現這樣的效果很差,取而代之的是採用一種基於通道的權重壓縮方案,該方案減小了cc的大小,並使超級網絡的表示能力與主要網絡的表示能力成比例。作者使cc的空間範圍等於WW大小的一部分kk,在超網絡的輸出處放kk個單元,然後將得到的1×k×height×width1\times k \times height \times width重塑成要求的WW的大小。kk定爲DN2DN^{2}NN是最小的存儲庫大小,DD是一個“深度壓縮”超參數,表示WW的多少個切片對應於cc的一個切片。

標準的2D CNN的輸入是xRB×C×H×Lx \in \Bbb R^{B \times C \times H \times L},B,C,H,L分別是批大小、通道、高度、寬度。我們的嵌入張量是cR1×(2M+dmax)×(Nmax/N)2×nch/Dc \in \Bbb R^{1 \times (2M+d_{max}) \times (N_{max}/N)^{2} \times n_{ch}/D},M是一個block裏存儲庫的最大數目,dmaxd_{max}是最大的卷積膨脹率,nchn_{ch}是主網絡所有1x1卷積輸入通道數目的綜合。條件嵌入(conditional embedding)cc是一個每層用來讀寫的存儲庫的獨熱編碼,它有2M+dmax2M+d_{max}個通道,前M個通道表示從哪些存儲庫中讀取,下M個通道表示寫入到哪些存儲庫中,最後dmaxd_{max}個通道是3x3卷積裏膨脹率的獨熱編碼。寬度這個維度表示每層的單元數目,長度這個維度表示網絡深度,即輸入通道的總數。這裏將批大小保持爲1,這樣就不會有信號完全獨立地通過超級網絡傳播。

超網絡有4DN24DN^{2}個輸出通道,因此超網絡的輸出是W=H(c)R1×4DN2×(Nmax/N2)×nch/DW=H(c) \in \Bbb R^{1 \times 4DN^{2} \times (N_{max}/N^{2})\times n_{ch}/D},然後重塑爲WRNmax×4Nmaxnch×1×1W \in \Bbb R^{N_{max} \times 4N_{max}n_{ch} \times 1 \times 1}。我們一次生成整個主網絡的權值,允許超網絡根據鄰近層的權值預測給定層的權值。超網絡的接受域表示給定一個層,網絡可以向上或向下多遠來預測給定層的參數。當我們遍歷主網絡時,我們根據傳入通道的數量沿其第二軸切片,並根據給定層的寬度沿第一軸切片。

二、Understanding and Simplifying One-Shot Architecture Search

1、總覽

這篇論文裏作者也是認爲模型之間的權重共享是個可行的方向,訓練一個能夠模擬搜索空間中任何架構的大型網絡。一個簡單的例子如下所示:
在這裏插入圖片描述
上圖中,在網絡的某個位置,有3x3卷積、5x5卷積或者最大池化三個操作可以選擇,不同於分別訓練三個模型,我們訓練一個包括了這三個操作的模型(one-shot model),然後在驗證階段,我們選擇性地剔除其中兩個操作的輸出,保留使預測準確率最高的操作。一個更復雜的例子,在一個網絡中可能在很多位置上包含了很多不同的操作選擇,搜索空間是隨着選擇數目指數地增長,而one-shot模型的大小隻隨選擇數目線性增長。相同的權重可以用來評估很多不同的結構,極大地降低了計算量。

作者提出了這樣的疑問,爲什麼不同的結構可以共享一個權重集合?one-shot模型僅在搜索過程中對結構的性能排序,搜索結束後表現最好的結構會被從頭重新訓練,但即使這樣,固定的權重集合在非常廣泛的結構集合裏工作的很好,這也是違反直覺的。作者在這篇論文中目的是理解權重共享在NAS中所扮演的角色。作者發現,對於達到好的搜索結果,超網絡和強化學習控制器都不是必須的。爲此作者訓練了一個大的one-shot模型,包含了搜索空間裏的每個可能的操作。然後剔除一些操作,測量其對模型預測準確率的影響。作者發現網絡自動將其能力集中在對產生良好預測最有用的操作上。剔除不太重要的操作對模型的預測的影響很小,而剔除很重要的操作對模型預測的影響很大。實際上,可以通過觀察網絡結構在訓練集中無標籤樣例的行爲,來預測網絡在驗證集上的準確率。

2、搜索空間設計

爲one-shot設計搜索空間需要滿足以下幾個要求:(1)搜索空間需要足夠大來捕捉到多樣的候選結構;(2)one-shot模型產生的驗證集準確率必須能預測獨立模型訓練產生的精度;(3)在有限的計算資源下,one-shot模型需要足夠小。下圖給出了一個搜索空間的例子:
在這裏插入圖片描述
它合併了關於網絡結構和應用在網絡中不同位置的操作的重要決策。在訓練過程中,one-shot模型包括了三個不同的輸入,這些輸入被連接在一起。在評估階段,它可以通過剔除Input 1和Input 3來模擬一個一個僅包含Input 2的網絡。更一般地說,我們可以使能或禁止任何輸入連接的組合。這樣,搜索空間可以隨着傳入的跨連接數目指數級地增長,而one-shot模型大小隻線性地增長。連接操作後面總是連着一個1x1卷積,使得無論有多少傳入的跨連接,輸出的濾波器數目都是常量。然後one-shot模型在1x1卷積的輸出上應用不同的操作,將結果相加。在評估階段,我們移除一些操作。上圖中有4種操作:3x3卷積、5x5卷積、最大池化和Identity,但只有5x5卷積操作留了下來。這樣的方法被用在更大的模型上,如下圖所示:
在這裏插入圖片描述
這裏的網絡也是由多個一樣的cell堆疊而成的,每個cell被分成了幾個固定數目的choice block。一個choice block來自於前驅cell的輸出或者同一cell的前驅choice block。這裏作者設每個cell裏有Nchoice=4N_{choice}=4個choice block,每個choice block最多有5個可能的輸入:兩個來自前驅cell,三個來自同一cell的前驅choice block。每個choice block最多可以選擇兩個操作,可選擇的操作有:identity,一對3x3可分離卷積,一對5x5可分離卷積,一對7x7可分離卷積,1x7卷積跟7x1卷積,最大池化,平均池化。

3、訓練one-shot模型

one-shot模型是個大型的網絡,用帶動量的SGD訓練,爲了保證特定架構的one-shot模型精度與獨立模型精度之間的良好關係,作者考慮了以下幾個方面:

  • 互相適應的魯棒性。如果直接訓練整個one-shot模型,模型裏的各部分會相互耦合。即使移除不重要的操作,也會造成模型預測精度的急劇下降,one-shot模型和獨立模型之間的準確率的關係也會退化。爲了解決這個問題,作者在訓練one-shot模型時也包含了path dropout(我理解的是類似於dropout,起到了正則化的作用),對於每個batch,也隨機地剔除一些操作。通過實驗發現,一開始的時候不用path dropout,然後隨着時間逐漸地增加dropout的機率,可以達到很好的效果。dropout的機率是r1/kr^{1/k}0<r<10<r<1是模型的超參數,kk是給定一個操作下進來路徑的數目。然而dropout一個節點的所有輸入的機率是常數,這裏作者設爲5%。在單個cell裏,不同的操作使彼此獨立地被剔除。如果一個模型包含多個cell,那在每個cell裏通用的操作會被剔除。

  • 訓練模型的穩定性。作者一開嘗試實驗的時候發現one-shot的訓練很不穩定,但是仔細地應用BN可以增加穩定性,作者使用了BN-ReLU-Conv這樣的卷積順序。在評估階段要剔除某些操作,這會使每層batch的統計量改變,因爲對於候選結構無法提前得知其batch統計量。因此批BN在評估時的應用方式與在訓練時完全相同——動態計算batch的統計信息。作者還發現,訓練one-shot模型時,如果在一個batch裏對每個樣本都dropout同樣的操作,訓練也會不穩定。因此對於不同的樣本子集,作者dropout不同的操作:作者將一個batch的樣本分成多個小batch(文中稱爲ghost batch),一個batch有1024個樣本,分成32個ghost batch,每個有32個樣本,每個ghost batch剔除不同的操作。

  • 防止過度正則化。在訓練期間,L2正則化只應用於當前結構在one-shot模型裏所用到的那部分。如果不這樣,那些經常被刪除的層就會更加規範化。

4、評估和選擇

當one-shot模型訓練好之後,我們由一個固定的概率分佈獨立地採樣結構,然後在驗證集上評估。作者注意到,隨機採樣也可以的用遺傳算法或基於神經網絡的強化學習代替。完成搜索之後,從頭訓練表現最好的結構,同時也可以擴展架構以增加其性能,也可以縮小架構以減少計算成本。作者在實驗中,增加了過濾器的數量來擴展架構。

5、理解one-shot模型

具體的實驗細節、超參數和結果可參考原論文,這裏討論一下爲什麼固定的模型權重集合可以在不同的結構裏共享。作者通過這篇論文實驗和上篇的SMASH的實驗發現,one-shot模型的準確率在30%至90%之間,或者10%至60%之間,但搜索到的獨立模型的準確率在92%至94.5%之間,或者70%至75%之間,爲什麼one-shot模型的準確率之間相差這麼多?

注意作者之前做了這樣的假設:one-shot模型可以學習網絡中哪些操作最有用,並在可用時依賴於這些操作,移除不重要的操作對模型預測的準確率有較小的影響,移除很重要的操作對模型預測的準確率有較大的影響。爲了去驗證這樣的假設,作者採樣了一批結構(參照結構),大部分操作沒有被移除(r=108r=10^{-8})。作者將這些參考結構的預測與從實際搜索空間中採樣的操作較少的候選結構的預測進行了比較,比較是在來自訓練集的批樣本上進行的。如果假設是正確的,那麼由性能最佳的模型做出的預測與使能網絡中的所有操作時做出的預測相似。

我們使用對稱的KL散度來量化候選結構的預測與參考結構的預測的不同程度。one-shot模型用交叉熵損失函數,其輸出是概率分佈(p1,p2,,pn)(p_{1},p_{2}, \dots, p_{n}),候選結構的輸出概率分佈爲(q1,q2,,qn)(q_{1},q_{2}, \dots, q_{n}),KL散度爲DKL(pq)=i=1npilogpiqiD_{KL}(p||q)=\sum_{i=1}^{n} p_{i} {\rm log}\frac{p_{i}}{q_{i}},對稱KL散度爲DKL(pq)+DKL(qp)D_{KL}(p||q)+D_{KL}(q||p)。如果當前訓練樣本的分佈幾乎相同,則對稱的KL散度將接近於0。相反,如果分佈非常不同,對稱的KL散度可以變化得得非常大。作者計算了64個隨機樣本的KL散度,並取了平均值。實驗結果如下圖所示:
在這裏插入圖片描述
訓練集測得的KL散度與驗證集測得的預測準確率有很強的相關性。此外,KL散度的計算沒有用到訓練集的標籤。這意味着,候選體系結構的預測與參考體系結構的預測越接近(其中,one-shot模型中的大多數操作都是使能的),在獨立模型訓練期間,它的性能通常就越高。權重共享迫使one-shot模型識別並集中於對生成良好預測最有用的操作。

作者接下來展示了KL散度隨着時間變化的趨勢。作者採樣了六個不同的結構然後觀察隨着訓練它的KL散度的變化情況,如下圖所示:
在這裏插入圖片描述
一開始他們的K離散度是低的,因爲模型的預測一開始置信度比較低,每類會分配一個大致相等的概率。隨着訓練,不同結構的預測開始變的不同,這導致了KL散度的激增,在訓練後期,網絡中最有用的操作對模型的預測有了強大的影響,KL散度開始下降。

三、Single path one-shot neural architecture search with uniform sampling

1、總覽

大多數搜索空間鬆弛化的方法裏,結構分佈是被連續地參數化了,這些參數在超網絡訓練時一同被聯合優化,因此結構搜索是在優化的過程中進行,優化結束後從結構分佈中採樣最好的結構。但這存在兩個問題:(1)超網絡裏的參數是深度耦合的;(2)聯合優化進一步引入了結構參數和超網絡權重之間的耦合。梯度下降方法天生的貪婪特徵會在結構分佈和超網絡權重中引入偏差,這可能會誤導結構搜索。

one-shot方法爲結構搜索提供了一個新的方向,並且沒有結構鬆弛化和分佈參數。結構搜索問題從超網絡訓練中解耦出來,變成一個單獨的步驟,它結合了嵌套優化和聯合優化方法的優點。剛纔介紹的兩篇論文就是這樣的one-shot方法,解決了上面提到的第二個問題,但並沒有很好地解決第一個問題,超網絡的權重仍然是耦合的。在《Understanding and Simplifying One-Shot Architecture Search》裏提到,one-shot成果的關鍵是一個使用權重繼承的結構的準確率應該對已經優化好的結構有預測性。因此,作者提出超網絡訓練應該是隨機的,所有的結構都可以同時優化它們的權重。爲了減少超網絡的權重耦合,作者提出了一個簡單的搜索空間,單路徑超網絡(single path supernet)。對於超網絡訓練,作者採用均勻採樣,平等地對待所有結構,沒有超參數。

2、NAS方法回顧

我們用A\mathcal A結構搜索空間,這是一個有向無環圖(DAG),一個搜索到的結構是DAG的子圖aAa \in \mathcal A,記爲N(a,w)\mathcal N(a,w)ww爲權重。NAS的目的是去解決兩個有關聯的問題,第一個是在標準深度學習裏給定一個網絡結構,優化其權重:

wa=argminwLtrain (N(a,w))(1) w_{a}=\underset{w}{\operatorname{argmin}} \mathcal{L}_{\text {train }}(\mathcal{N}(a, w)) \tag{1}

Ltrain()\mathcal L_{train}(\cdot)是在訓練集上的損失函數。第二個問題是結構優化,一般來說是通過驗證集的準確率來尋找:

a=argminaAACCval (N(a,wa))(2) a^{\ast}=\underset{a \in \mathcal A}{\operatorname{argmin}} {\rm ACC}_{\text {val }}(\mathcal{N}(a, w_{a})) \tag{2}

ACCval(){\rm ACC}_{\rm val}(\cdot)是驗證集準確率。真實情況下會對網絡的內存消耗、FLOPs、latency、功耗等有要求,這些取決於結構aa、軟件和硬件等,但和權重waw_{a}無關,因此作者稱爲“結構限制”。一個典型的限制網絡的latency不大於預設的budget:

Latency(a)Latmax(3) {\rm Latency(a^{\ast}) \leq {\rm Lat}_{\rm max}} \tag{3}

對於大多數方法來說,同時滿足式(2)和式(3)是很有挑戰性的。最近的NAS方法採用了權值共享的策略,結構搜索空間A\mathcal A被編碼進一個超網絡,記作N(A,W)\mathcal N(\mathcal A, W)WW是超網絡的權重。超網絡被訓練一次,所有的結構都從WW裏直接繼承,因此他們在相同的圖節點上式共享權值的。大多權值共享的方法將離散的搜索空間轉爲連續的,A\mathcal A鬆弛化爲A(θ)\mathcal A(\theta)θ\theta爲表示結構分佈的連續化參數。注意新的空間包含了原始的搜索空間:AA(θ)\mathcal A \subseteq \mathcal A(\theta)。這樣鬆弛化的好處是可以用梯度方法聯合優化權重和結構分佈參數,表示如下:

(θ,Wθ)=argminθ,WLtrain(N(A(θ),W))(4) \left(\theta^{*}, W_{\theta^{*}}\right)=\underset{\theta, W}{\operatorname{argmin}} \mathcal{L}_{t r a i n}(\mathcal{N}(\mathcal{A}(\theta), W)) \tag{4}

優化後,最好的結構aa^{\ast}A(θ)\mathcal A(\theta)採樣得到,然後從WθW_{\theta^{\ast}}繼承權值、微調。理論上這樣做很合理,但優化式(4)是具有挑戰性的。首先,在超網絡裏的圖節點的權重是互相依賴的、深度耦合的,但從WW中繼承的權重解耦了,尚不明確爲什麼這樣做是有效的。第二,聯合訓練結構參數θ\theta和權值WW進一步引入了耦合。滿足結構限制也是困難的,一些工作使用精心設計的soft損失項來擴充式(4)中的損失函數Ltrain\mathcal L_{train},但也很難滿足像式(3)中的限制。作者總結了一下這部分提到的方法,連同作者提出的方法一同作了比較:
在這裏插入圖片描述

3、one-shot NAS 回顧

通過上面的分析,耦合的結構搜索和權重優化是困難的,我們能否同時擁有問題解耦和權值共享的優點?這引出了叫做one-shot的方法(即上面解讀的兩篇論文),這兩種方法依然訓練一個超網絡然後共享其中的參數,超網絡訓練和結構搜索是解耦成兩個步驟,這既不同於嵌套式優化也不同於聯合優化。首先,第一步優化超網絡權重:

WA=argminWLtrain (N(A,W))(5) W_{\mathcal{A}}=\underset{W}{\operatorname{argmin}} \mathcal{L}_{\text {train }}(\mathcal{N}(\mathcal{A}, W)) \tag{5}

相比於式(4),搜索空間的連續化參數消失了,只有權重被優化。第二步,結構搜索表示爲:

a=argmaxaAACCval(N(a,WA(a)))(6) a^{*}=\underset{a \in \mathcal{A}}{\operatorname{argmax}} \mathrm{ACC}_{\mathrm{val}}\left(\mathcal{N}\left(a, W_{\mathcal{A}}(a)\right)\right) \tag{6}

在搜索過程中,每個採樣的結構aa從繼承WAW_{\mathcal A}繼承權重,記爲WA(a)W_{\mathcal A}(a)。同式(1)、式(2)相比,式(6)的主要不同是,結構的權重是合理初始化的,估計ACCval()ACC_{val}(\cdot)只需推斷,沒有微調或重新訓練。找到最優的結構aa^{\ast}後,通過微調來獲得waw_{a^{\ast}}。這樣的搜索也是靈活的,任何適當的搜索方法都可以,這裏作者採用遺傳算法。結構限制,式(3)的結構限制也被精確地滿足。一旦訓練好超網絡,搜索可以用不同的結構限制(如100ms latency 和 200ms latency)在超網絡上被重複很多次,之前的方法都沒有這樣的特性。但超網絡的權重依然是耦合的。

4、單路徑超網絡和均勻採樣

將式(1)作爲理想的情況,one-shot要求權重WA(a)W_{\mathcal A}(a)接近於最優權值waw_{a},近似的程度取決於訓練損失Ltrain(N(a,WA(a)))\mathcal L_{train}(\mathcal N(a, W_{\mathcal A}(a)))被優化的程度。這引出一個原則,超網絡的權重WAW_{\mathcal A}應該與搜索空間中的所有子結構的優化同時進行,如下式:

WA=argminWEaΓ(A)[Ltrain (N(a,W(a)))] W_{\mathcal{A}}=\underset{W}{\operatorname{argmin}} \mathbb{E}_{a \sim \Gamma(\mathcal{A})}\left[\mathcal{L}_{\text {train }}(\mathcal{N}(a, W(a)))\right]

Γ(A)\Gamma(\mathcal A)aAa \in \mathcal A的先驗分佈。注意,式(7)是式(5)的實現,在每步優化中,結構aa是隨機採樣的,只有權重W(a)W(a)是被更新的。從這個意義上說,超級網絡本身不再是一個有效的網絡,它表現爲一個隨機超網絡(stochastic supernet)。

爲了較少權重之間的互相適應,作者建議將搜索空間簡化到極限,只包含但路徑結構,這可以看做是path dropout策略的極端情況,每次只保留一條路徑,其他全部drop,如下圖所示:
在這裏插入圖片描述
它包括一系列的choice block,每個包含幾個choices,每次只有一個choice被調用。這裏不包含任何dorpout參數或微調。先驗分佈Γ(A)\Gamma (\mathcal A)可能是重要的,作者發現均勻採樣已經足夠好了。

5、超網絡和choice block

和《Understanding and Simplifying One-Shot Architecture Search》中的一樣,choice block用於構建隨機結構,一個choice block包含多個結構選擇。對這裏的但路徑超網絡,每次只有一個choice被調用,通過採樣所有的choice block來獲得一條路徑。這裏作者設計了兩種choice block:

  • 通道數目搜索。這個choice block搜索一個卷積層的通道數目,它會預先分配一個最大通道數目的權重張量(max_c_out, max_c_in, ksize),在超網絡訓練過程中,系統隨機選擇當前輸出通道數目c_outc\_out,然後從其中切片出張量子集[:c_out,:c_in,:][:c\_out, : c\_in, :],如下圖所示:
    在這裏插入圖片描述
  • 混合精度量化搜索。這個choice block用於搜索卷積層的權值和特徵的量化精度。在超網絡訓練過程中,特徵圖的位寬和濾波器權值是隨機選擇的,如下圖所示:
    在這裏插入圖片描述

6、進化結構搜索

對於式(6)的結構搜索,前面兩篇論文使用隨機搜索,而作者使用遺傳算法,算法僞代碼如下圖所示:
在這裏插入圖片描述
對於所有的實驗,種羣大小P=50P=50,最大迭代次數T=20\mathcal T=20k=10k=10,對於交叉,隨機選擇兩個候選結構去交叉生成一個新的結構,對於變異,在每個choice block以0.1的概率從候選變異中隨機選擇一種變異,產生一個新的結構。在對結構進行推斷之前,BN的統計量從訓練集中隨機選擇子集樣本重新計算,因爲超網絡的BN統計量一般來說並不適合於候選結構。

參考文獻

[1] Brock A , Lim T , Ritchie J M , et al. SMASH: One-Shot Model Architecture Search through HyperNetworks[J]. 2017.
[2] Bender, Gabriel, et al. “Understanding and simplifying one-shot architecture search.” International Conference on Machine Learning. 2018.
[3] Guo, Zichao, et al. “Single path one-shot neural architecture search with uniform sampling.” arXiv preprint arXiv:1904.00420 (2019).
[4] https://www.jiqizhixin.com/articles/2019-04-02-8
[5] 《深入理解AutoML和AutoDL》

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