以下是在大規(guī)模分布式訓練領域,商湯科技發(fā)表的一篇重磅大會口頭報告(Oral)論文,提出基于分布式訓練的深度增強學習BlockQNN算法,自動設計神經(jīng)網(wǎng)絡結構。本文由商湯科技實習研究員鐘釗在商湯科技研究院副院長閆俊杰和研究經(jīng)理武偉指導下完成。
神經(jīng)網(wǎng)絡結構設計一直是深度學習里的核心問題。在基于深度學習的分類、檢測、分割、跟蹤等任務中,基礎神經(jīng)網(wǎng)絡的結構對整體算法的性能優(yōu)劣有著決定性的影響。傳統(tǒng)的神經(jīng)網(wǎng)絡結構設計需要大量專家的知識和試錯成本,甚至還需要一些靈感和“神來之筆”,每年僅有幾個有較大影響的新網(wǎng)絡結構被設計出來,因此,人工設計網(wǎng)絡結構是一件極其困難的事情。網(wǎng)絡結構的自動設計/搜索的方法最近受到了廣泛的重視,其試圖朝著自動化深度學習這個目標,把人從復雜繁瑣的網(wǎng)絡設計調(diào)參中解放出來(如圖一所示)。

圖一:(由左至右)
從人工設計的網(wǎng)絡結構到
算法自動設計的網(wǎng)絡結構
近期的網(wǎng)絡結構自動設計/搜索算法通常需要耗費巨大的計算資源(例如,Google的NAS算法需要使用數(shù)百塊GPU以及近一個月的訓練時間),而且生成的模型可遷移性不強,難以做到真正的實用化。本文提出的BlockQNN算法能夠解決現(xiàn)有網(wǎng)絡結構自動設計/搜索方法效率和泛化性的問題。
基于“Block”的網(wǎng)絡結構表示
目前主流的深度神經(jīng)網(wǎng)絡結構極其復雜,其深度往往達到數(shù)百層,直接搜索整個網(wǎng)絡結構的搜索空間非常龐大,這也是之前自動網(wǎng)絡結構設計/搜索算法比較低效的原因之一。同時,直接設計整個網(wǎng)絡的策略會導致網(wǎng)絡結構不具備泛化性。例如,基于CIFAR數(shù)據(jù)集搜索出來的網(wǎng)絡結構,因為其數(shù)據(jù)輸入的大小限制,只適合處理輸入為32x32分辨率的數(shù)據(jù),從而使得搜索出的網(wǎng)絡結構泛化性能較弱。
針對這些問題,本文借鑒了現(xiàn)代主流深度神經(jīng)網(wǎng)絡的設計思想,比如ResNet、Inception等網(wǎng)絡。這些網(wǎng)絡是由同樣結構的子網(wǎng)絡重復組合在一起形成,本文把這種能重復組合的子結構稱為block。通過設計block結構,可以讓網(wǎng)絡結構的搜索空間大大減小,并且block結構本身具有強大的泛化性,針對不同的數(shù)據(jù)集或者任務,只需要疊加不同個數(shù)的block即可完成(如圖二所示)。

圖二:
基于Block設計的網(wǎng)絡整體框架
左邊為針對CIFAR的框架,右邊針對ImageNet

表一:
網(wǎng)絡結構編碼表
為了表示網(wǎng)絡block結構,本文設計了一套網(wǎng)絡結構編碼,把神經(jīng)網(wǎng)絡看做一個有向無環(huán)圖,每個節(jié)點表示網(wǎng)絡中的每一層,而邊就表示數(shù)據(jù)流動的方向。整個編碼包括神經(jīng)網(wǎng)絡的層數(shù)序號,類型,核的大小,以及兩個前序節(jié)點的序號。使用這種編碼方式就可以表示任意的神經(jīng)網(wǎng)絡結構,例如ResNet和Inception的block結構就能使用圖三中的編碼進行表示。

圖三:
Inception和Resnet中block結構編碼表示
基于強化學習的網(wǎng)絡結構自動設計
接下來的核心問題即是如何獲得最優(yōu)的網(wǎng)絡結構。盡管網(wǎng)絡結構的搜索空間已經(jīng)通過設計block大大減小,但是直接暴力搜索所有可能結構,依然十分耗費計算資源。本文因此提出一種基于強化學習的網(wǎng)絡設計方法,自動學習得到網(wǎng)絡結構。
在網(wǎng)絡設計強化學習中,本文把當前神經(jīng)網(wǎng)絡層定義為增強學習中的目前狀態(tài)(current state),而下一層結構的決策定義為增強學習中的動作(action)。這里使用之前定義的神經(jīng)網(wǎng)絡結構編碼來表示每一層網(wǎng)絡。這樣,通過一系列的動作決策,就能獲得一條表示block結構的編碼(如圖四所示),而提出的強化學習算法通過優(yōu)化尋獲最優(yōu)的動作決策序列。本文使用Q-learning算法來進行學習,具體的公式不再展開。

圖四:
基于強化學習的網(wǎng)絡結構自動設計流程
值得注意的一點是,與一般的強化學習問題不同,該任務只在結束整個序列的決策后(即生成完整網(wǎng)絡結構后)才會得到一個reward,而之前的每個決策是對應reward。由于獲得最終reward的成本非常高(需要在數(shù)據(jù)上重新訓練新獲得的網(wǎng)絡結構),為了加快它的收斂,作者使用了reward shaping的技巧(如圖五所示),因而訓練初始階段終止層的Q值不會過高,讓算法不會在訓練初始階段傾向于生成層數(shù)過淺的網(wǎng)絡結構。

圖五:
Reward shaping對收斂效率的影響
提前停止策略
雖然能夠使用多種技巧來使自動化網(wǎng)絡結構設計變的更加高效。但是自動網(wǎng)絡設計中耗費時間的關鍵還是在于每次獲得reward的時間成本非常高,需要將生成的網(wǎng)絡結構在對應的數(shù)據(jù)集上訓練至收斂,然后獲得相應的準確度來表示結構的好壞并且用作reward。本文作者發(fā)現(xiàn),通過調(diào)整學習率,只需要正常訓練30分之一的過程(例如,CIFAR-100數(shù)據(jù)集上訓練12個epoch),就可以得到網(wǎng)絡的大致最終精度,這樣可以大大降低時間成本。但是,這樣的網(wǎng)絡結構精度及其關聯(lián)的reward會有誤差,導致無法精細區(qū)分網(wǎng)絡結構的優(yōu)劣,本文提出一個憑經(jīng)驗的解決公式:

即真實的reward和提前停止的準確度成正比,但是和網(wǎng)絡結構的計算復雜度和結構連接復雜度(block中邊數(shù)除以點數(shù))成反比。通過這樣的公式矯正,得到的reward對網(wǎng)絡結構的好壞更加具備可鑒別性(如圖六所示)。

圖六:
提前停止的準確度與網(wǎng)絡真實準確度、
計算復雜度、連接復雜度的關系
實驗結果
本文使用了32個GPU,經(jīng)過3天的搜索,可以在CIFAR數(shù)據(jù)集上找到性能達到目前先進水平的網(wǎng)絡結構(如圖七所示)。

圖七:
搜索過程以及學習得到的最優(yōu)網(wǎng)絡結構
相比之前的自動網(wǎng)絡搜索方法(如Google NAS算法的數(shù)百塊GPU以及一個月時間),BlockQNN算法可謂十分高效(如表二、表三所示)。

表二:
不同自動網(wǎng)絡結構設計算法的
計算資源對比

表三:
在CIFAR數(shù)據(jù)集上不同網(wǎng)絡結構的錯誤率
另一方面,學習獲得的網(wǎng)絡結構也可以更容易的遷移到ImageNet任務上,取得了不錯的精度(如表四所示)。

表四:
在Imagenet數(shù)據(jù)集上不同網(wǎng)絡結構的錯誤率
為了驗證BlockQNN算法是否真的學習到了設計網(wǎng)絡的方式,在同一搜索空間下和暴力搜索進行對比,可以發(fā)現(xiàn)本文提出的BlockQNN算法能獲得比暴力搜索更好的模型(如圖八所示)。

圖八:
強化學習與暴力搜索獲得網(wǎng)絡結構
在CIFAR數(shù)據(jù)集的準確率
對整個搜索過程和結果網(wǎng)絡結構進行分析(如圖九所示),本文作者發(fā)現(xiàn)學習得到的優(yōu)異結構擁有一些共性。比如multi-branch結構、short-cut連接方式等這些現(xiàn)在常用的設計思想。同時,作者也發(fā)現(xiàn)了一些不太常見的結構共性,比如卷積層之間的addition操作出現(xiàn)的十分頻繁,這些學習得到的網(wǎng)絡結構還有待進一步的分析和研究。

圖九:
BlockQNN算法設計的網(wǎng)絡結構示例
結論
本文提出了一種高效的基于強化學習的網(wǎng)路結構自動設計算法——BlockQNN,其通過“Block”的設計思想,讓網(wǎng)絡結構搜索空間大大降低,并且使得學習得到的網(wǎng)絡具備非常強的可遷移性。同時,本文使用“提前停止”和分布式架構來加速整個學習過程,達到了百倍于之前Google NAS算法的速度(僅需要32塊GPU以及3天的訓練)。實驗表明,其學習得到的網(wǎng)路結構在CIFAR數(shù)據(jù)集上達到人類設計網(wǎng)絡結構的精度,并且其結構可以遷移到大規(guī)模的ImageNet數(shù)據(jù)集上,也能取得不錯的性能。作者希望朝著自動化深度學習這個目標繼續(xù)發(fā)展算法,最終把人從復雜繁瑣的網(wǎng)絡設計和調(diào)參中解放出來,實現(xiàn)深度學習更進一步的“智能化”。
-
網(wǎng)絡結構
+關注
關注
0文章
48瀏覽量
12379 -
Block
+關注
關注
0文章
26瀏覽量
15154
發(fā)布評論請先 登錄
linux不同網(wǎng)絡結構的不同IP設法
神經(jīng)網(wǎng)絡結構搜索有什么優(yōu)勢?
網(wǎng)絡結構與IP分組交換技術
TD-SCDMA網(wǎng)絡結構
DeviceNet 網(wǎng)絡結構
HFC網(wǎng)絡,HFC網(wǎng)絡結構組成是什么?
環(huán)形網(wǎng)絡,環(huán)形網(wǎng)絡結構是什么?
概率模型的大規(guī)模網(wǎng)絡結構發(fā)現(xiàn)方法
卷積神經(jīng)網(wǎng)絡結構
如何優(yōu)化PLC的網(wǎng)絡結構?
網(wǎng)絡結構自動設計算法——BlockQNN
評論