同濟和華為諾亞提出:漸進式可微網路結構搜尋,顯著提升可微式搜尋的效能和穩定性,已開源

CVer發表於2019-05-08


同濟和華為諾亞提出:漸進式可微網路結構搜尋,顯著提升可微式搜尋的效能和穩定性,已開源

Progressive Differentiable ArchitectureSearch: Bridging the Depth Gap between Search and Evaluation

論文:https://arxiv.org/abs/1904.12760

github:https://github.com/chenxin061/pdarts

 1. 引言

最近,可微分的網路結構搜尋方法[1]取得了很大的進步,極大地降低了搜尋開銷。然而,由這些方法搜尋得到的網路結構在測試和轉移到其他的資料集時,往往得到相對較低的準確率。這是因為搜尋和測試情景下的網路深度存在較大的差異。傳統的可微分網路結構搜尋方法由於需要將搜尋空間中的候選操作都放到搜尋網路當中,受限於視訊記憶體,只能搭建較淺的搜尋網路。而在較淺的搜尋網路上搜尋得到的網路結構往往並不完全適用於較深的測試網路。本文提出一種有效的方法使得搜尋網路的深度可以隨著搜尋過程的進行逐漸地增加,以最終縮小或消除搜尋網路與測試網路的深度差異。這帶來了兩個問題,更高的搜尋開銷和更低的搜尋穩定性。文章提出搜尋空間近似和搜尋空間正則來分別解決這兩個問題。方法概覽如圖1所示。該方法在單個P100 GPU上只需要大約7個小時就可以搜尋得到一個結構,在搜尋開銷和網路結構的測試準確率上全面超越現有可微分網路結構搜尋方法,達到領先水平。

 

同濟和華為諾亞提出:漸進式可微網路結構搜尋,顯著提升可微式搜尋的效能和穩定性,已開源

圖1

2. 方法介紹

2.1 DARTS

文章的方法採用DARTS作為baseline框架。作者的目標是搜尋cell的結構並用其來搭建測試網路。其中,cell被定義為一個擁有N個節點的有向無環圖(Directed Acyclic Graph, DAG),每一個節點是網路中的一個層。節點之間由softmax加權的操作連線,各操作最終相加匯入目標節點。cell的輸出節點由中間節點按channel方向連線而成。

2.2 漸進地增加搜尋網路深度

 在DARTS中,網路結構搜尋是在一個擁有8個 cell 的搜尋網路上進行的,然而卻是在一個擁有20個cell 的網路上測試的,在搜尋網路和測試網路之間有一個很大的深度差異。然而,不同深度的網路之間存在較大的效能差異,使用較淺的網路搜尋到的結構並不一定是測試網路所需要的。作者使用DARTS進行了多次搜尋,結果顯示搜尋到的網路結構傾向於保留較淺的連線,而不是較深的。這是因為較淺的網路通常會在搜尋過程中快速地收斂,然而這卻和常識--較深的網路往往擁有更好的效能--相悖。因此,文章提出漸進地增加搜尋網路的深度來解決深度差異的問題。採用漸進增加搜尋網路深度的策略是因為可以用這種方式逐漸地縮小搜尋空間,也就是候選操作的種類,從而保持視訊記憶體消耗在一個合理的水平。

 這樣做會帶來兩個方面的困難,第一是隨著深度的增加,視訊記憶體開銷和搜尋時間都將成為潛在問題。在DARTS中,視訊記憶體是和搜尋網路的深度成正比關係的,更深的搜尋網路意味著更高的視訊記憶體和時間消耗。最直接的做法是降低每個操作的channel數,事實上DARTS也這樣做了,但是最終的效能略差於原始方案。文章提出搜尋空間近似,根據每個階段學習到的網路結構引數漸進地減少候選操作的種類,從而降低視訊記憶體和時間消耗。

 另一方面,實驗表明在較深的搜尋網路中,可微分的方法傾向於選擇skip-connect操作,因為其通常處在梯度下降的最速路徑上,能夠加速前向/反向傳播。然而,skip-connect操作是無可訓練引數的,數量過多會導致網路的表達能力降低。對此,作者提出搜尋空間正則,在skip-connect操作新增操作層面的Dropout來防止其過擬合到skip-connect上,同時限制最終結構中的skip-connect運算元量來進一步提高穩定性。

 2.2.1 搜尋空間近似

 圖2是搜尋空間近似的示意圖。搜尋過程被切分成了多個階段,包括初始階段,一個或多箇中間階段以及一個最終階段。在每個階段 Sk ,搜尋網路包含 Lk 個cell,cell中每條邊包括 Ok 個操作。

 在初始階段,搜尋網路相對較淺,但是cell中每條邊上的候選操作最多(所有操作)。在階段 Sk -1中,根據學習到的網路結構引數(權值)來排序並篩選出權值(重要性)較高的 Ok 個操作,並由此搭建一個擁有 Lk 個cell的搜尋網路用於下一階段的搜尋,其中, Lk > Lk-1 , Ok < Ok-1 . 通過搜尋空間的估計,減小了搜尋空間,這部分騰出來的視訊記憶體就可以用來搭建更深的搜尋網路。通過這樣的方式,可以在保持視訊記憶體消耗在閾值範圍內的情況下,在更深的搜尋網路上進行網路結構搜尋。文中隨機統計了幾次搜尋過程中各階段的視訊記憶體使用量,發現視訊記憶體均能穩定保持在閾值之下,如Table 3所示。值得注意的是,如果使用視訊記憶體稍小的GPU如1080ti,需適當減小batch size。作者也進行了相關測試,在使用P100 GPU且視訊記憶體限制為11G的情況下,搜尋速度稍微變慢,搜尋時間約為9小時。


同濟和華為諾亞提出:漸進式可微網路結構搜尋,顯著提升可微式搜尋的效能和穩定性,已開源


這個過程可以漸進而持續地增加搜尋網路的深度,直到足夠接近測試網路深度。最終階段的搜尋(引數學習)結束之後,就可以根據學習到的網路結構引數生成最終的網路結構。和DARTS一樣,文章也在每個中間節點保留兩個權值最高的非空操作,並且規定每一條邊至多保留一種操作。


同濟和華為諾亞提出:漸進式可微網路結構搜尋,顯著提升可微式搜尋的效能和穩定性,已開源

圖2

2.2.2 搜尋空間正則

 在第 Sk  階段,由於在上個階段結尾一些操作從搜尋空間中被刪去,因此需要從頭開始訓練網路引數和結構引數。但是訓練一個更深的網路往往比訓練一個較淺的網路更難。實驗結果表明在本文采用的框架下,資訊往往傾向於通過skip-connect流動,而不是卷積。這是因為skip-connect通常處在梯度下降最速的路徑上,尤其是在小而簡單的資料集上,如文章採用的代理資料集CIFAR10. 在這種情況下,最終搜尋得到的結構往往包含大量的skip-connect操作,可訓練引數較少,從而使得效能下降。這從本質上來說是一種“過擬合”。

 作者採用搜尋空間正則來解決這個問題。一方面,作者在skip-connect操作後新增操作層面的Dropout來部分切斷skip-connect的連線,迫使演算法去探索其他的操作。然而,持續地阻斷這些路徑的話會導致在最終生成結構的時候skip-connect操作仍然受到抑制,可能會影響最終效能。因此,作者在訓練的過程中逐漸地衰減Dropout的概率,在訓練初期施加較強的Dropout,在訓練後期將其衰減到很輕微的程度,使其不影響最終的網路結構引數的學習。

 另一方面,儘管使用了操作層面的Dropout,作者依然觀察到了skip-connect操作對實驗效能的強烈影響。具體來說,搜尋得到的結構中包含的skip-connect數量不一,導致了在測試的時候效能的波動。作者同時觀察到測試時的識別準確率與搜尋到的結構中的skip-connect運算元量與最終效能高度相關。因此,作者提出第二個搜尋空間正則方法,即在最終生成的網路結構中,保留固定數量的skip-connect操作。具體的,作者根據最終階段的結構引數,只保留權值最大的M個skip-connect操作,這一正則方法保證了搜尋過程的穩定性。在本文中, M=2 .

 需要強調的是,第二種搜尋空間正則是建立在第一種搜尋空間正則的基礎上的。在沒有執行第一種正則的情況下,即使執行第二種正則,演算法依舊會生成低質量的網路結構。

 3. 實驗結果

3.1 網路結構搜尋與測試

同濟和華為諾亞提出:漸進式可微網路結構搜尋,顯著提升可微式搜尋的效能和穩定性,已開源

同濟和華為諾亞提出:漸進式可微網路結構搜尋,顯著提升可微式搜尋的效能和穩定性,已開源

文章在CIFAR10和CIFAR100上做了網路結構搜尋,並將搜尋到的網路結構transfer到ImageNet資料集,在Mobile Setting下進行了效能測試,實驗結果如Table 1(CIFAR10/100)和Table 2(ImageNet)所示。

 該演算法使用單個P100 GPU僅需要約7小時搜尋得到一個結構,相比DARTS在速度上有不小的提升,並且比以效率著稱的ENAS[3]更快。在CIFAR10上,作者使用3.4M引數實現了2.50%的測試錯誤率,超越了DARTS的結果,同時也超過了同等引數量下最好的AmoebaNet-B[2],後者耗費了3150 GPU-days實現了2.55%的測試錯誤率。值得一提的是,該方法同時也可以在CIFAR100上進行網路結構搜尋,在沒有進行大面積調參的情況下,以3.6M引數實現了15.92%的測試錯誤率。作者同樣嘗試了使用DARTS在CIFAR100上進行網路結構搜尋,然而搜尋得到的結構裡包含大量的skip-connect操作,測試效能不及其由CIFAR10上搜尋到的結構transfer的效能。

 在ImageNet的實驗中,文章實現了略微低於AmoebaNet-C的Top-1測試錯誤率(24.4% vs. 24.3%)和超過其他現有方法的Top-5測試錯誤率,在效能和搜尋時間上全面超越了DARTS。值得一提的是,該方法在transfer的效能上超越了專門為ImageNet設計搜尋空間並在ImageNet進行搜尋和測試的兩個方法--ProxylessNAS[4]和MnasNet-92[5].

 3.2 診斷試驗

 同時,作者也進行了一些診斷性實驗,其結果驗證了文章提出的方案的有效性。首先作者測試了搜尋過程中的不同階段產生的網路結構的效能。為了對比,作者加入了DARTS程式碼中release的結構 (DARTS_V2, 使用8個cell的搜尋網路)。如圖3所示,其中第一、二和三階段的搜尋網路中分別包含5、11和17個cell。可以看出,第一階段搜尋得到的結構中都是從輸入節點連線到中間節點的淺連線,而第二階段和DARTS_V2中則開始出現一些中間節點之間的深連線,在第三階段中,出現了多箇中間節點之間的連線,並且連線層次較其他三個也更深。對這幾個網路結構的測試結果表明最終階段(第三階段)生成的網路結構取得了最佳的效能。

同濟和華為諾亞提出:漸進式可微網路結構搜尋,顯著提升可微式搜尋的效能和穩定性,已開源

圖3

作者也設計實驗驗證了搜尋空間正則的有效性。一方面,作者設計了使用和不使用操作層面Dropout的兩組對比實驗。使用Dropout的一組,保留2、3和4個skip-connect操作的網路結構在CIFAR10上的測試錯誤率分別為2.69%、2.84%和2.97%,相比之下,未使用Dropout的一組的測試錯誤率則分別為2.93%、3.28%和3.51%。

 另一方面,作者進行了限制最終生成網路結構中skip-connect數量的對比實驗。作者在CIFAR10上進行了3次網路結構搜尋,得到的結構中分別包含2、3和4個skip-connect操作,平均測試錯誤率為2.79±0.16%。在進行限制之後,最終網路的skip-connect運算元量被限制到2個,平均測試錯誤率為2.65±0.05%。降低的測試錯誤率和標準差顯示搜尋過程的穩定性得到了保證。

 4. 總結

本文中,作者提出了一個漸進的可微分網路結構搜尋方法來連線搜尋和測試情景之間的網路深度差異。本方法的核心思想是逐漸地增加搜尋網路的深度。為了解決搜尋開銷過大和搜尋過程不穩定的問題,作者設計了兩個方法來估計和正則搜尋空間。該方法實現了單個P100 GPU上約7小時的快速搜尋,並且在代理資料集和目標資料集上均表現出了優異的效能。搜尋空間正則方法在保證效能的同時,能夠大幅度提高搜尋過程的穩定性,有效減小效能波動。

 本文的研究表明了可微分網路結構搜尋中網路深度的重要性,提出了一種犧牲運算元量的估計方法。期待在有著強大計算資源的未來,深度仍然是探索網路結構空間時的關鍵因素。

 參考文獻:

[1] Liu, H., Simonyan, K., & Yang, Y.(2018). Darts: Differentiable architecture search.arXiv preprintarXiv:1806.09055.

[2] Real, E., Aggarwal, A., Huang, Y., &Le, Q. V. (2018). Regularized evolution for image classifier architecturesearch.arXiv preprint arXiv:1802.01548.

[3] Pham, H., Guan, M., Zoph, B., Le, Q.,& Dean, J. (2018, July). Efficient Neural Architecture Search via ParameterSharing. InInternational Conference on Machine Learning(pp. 4092-4101).

[4] Cai, H., Zhu, L., & Han, S. (2018).ProxylessNAS: Direct neural architecture search on target task andhardware.arXiv preprint arXiv:1812.00332.

[5] Tan, M., Chen, B., Pang, R., Vasudevan,V., & Le, Q. V. (2018). Mnasnet: Platform-aware neural architecture searchfor mobile.arXiv preprint arXiv:1807.11626.


論文:https://arxiv.org/abs/1904.12760github:https://github.com/chenxin061/pdarts

相關文章