以下是在大規(guī)模分布式訓(xùn)練領(lǐng)域,商湯科技發(fā)表的一篇重磅大會(huì)口頭報(bào)告(Oral)論文,提出基于分布式訓(xùn)練的深度增強(qiáng)學(xué)習(xí)BlockQNN算法,自動(dòng)設(shè)計(jì)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)。本文由商湯科技實(shí)習(xí)研究員鐘釗在商湯科技研究院副院長閆俊杰和研究經(jīng)理武偉指導(dǎo)下完成。
神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計(jì)一直是深度學(xué)習(xí)里的核心問題。在基于深度學(xué)習(xí)的分類、檢測、分割、跟蹤等任務(wù)中,基礎(chǔ)神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)對整體算法的性能優(yōu)劣有著決定性的影響。傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計(jì)需要大量專家的知識(shí)和試錯(cuò)成本,甚至還需要一些靈感和“神來之筆”,每年僅有幾個(gè)有較大影響的新網(wǎng)絡(luò)結(jié)構(gòu)被設(shè)計(jì)出來,因此,人工設(shè)計(jì)網(wǎng)絡(luò)結(jié)構(gòu)是一件極其困難的事情。網(wǎng)絡(luò)結(jié)構(gòu)的自動(dòng)設(shè)計(jì)/搜索的方法最近受到了廣泛的重視,其試圖朝著自動(dòng)化深度學(xué)習(xí)這個(gè)目標(biāo),把人從復(fù)雜繁瑣的網(wǎng)絡(luò)設(shè)計(jì)調(diào)參中解放出來(如圖一所示)。
圖一:(由左至右)
從人工設(shè)計(jì)的網(wǎng)絡(luò)結(jié)構(gòu)到
算法自動(dòng)設(shè)計(jì)的網(wǎng)絡(luò)結(jié)構(gòu)
近期的網(wǎng)絡(luò)結(jié)構(gòu)自動(dòng)設(shè)計(jì)/搜索算法通常需要耗費(fèi)巨大的計(jì)算資源(例如,Google的NAS算法需要使用數(shù)百塊GPU以及近一個(gè)月的訓(xùn)練時(shí)間),而且生成的模型可遷移性不強(qiáng),難以做到真正的實(shí)用化。本文提出的BlockQNN算法能夠解決現(xiàn)有網(wǎng)絡(luò)結(jié)構(gòu)自動(dòng)設(shè)計(jì)/搜索方法效率和泛化性的問題。
基于“Block”的網(wǎng)絡(luò)結(jié)構(gòu)表示
目前主流的深度神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)極其復(fù)雜,其深度往往達(dá)到數(shù)百層,直接搜索整個(gè)網(wǎng)絡(luò)結(jié)構(gòu)的搜索空間非常龐大,這也是之前自動(dòng)網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計(jì)/搜索算法比較低效的原因之一。同時(shí),直接設(shè)計(jì)整個(gè)網(wǎng)絡(luò)的策略會(huì)導(dǎo)致網(wǎng)絡(luò)結(jié)構(gòu)不具備泛化性。例如,基于CIFAR數(shù)據(jù)集搜索出來的網(wǎng)絡(luò)結(jié)構(gòu),因?yàn)槠鋽?shù)據(jù)輸入的大小限制,只適合處理輸入為32x32分辨率的數(shù)據(jù),從而使得搜索出的網(wǎng)絡(luò)結(jié)構(gòu)泛化性能較弱。
針對這些問題,本文借鑒了現(xiàn)代主流深度神經(jīng)網(wǎng)絡(luò)的設(shè)計(jì)思想,比如ResNet、Inception等網(wǎng)絡(luò)。這些網(wǎng)絡(luò)是由同樣結(jié)構(gòu)的子網(wǎng)絡(luò)重復(fù)組合在一起形成,本文把這種能重復(fù)組合的子結(jié)構(gòu)稱為block。通過設(shè)計(jì)block結(jié)構(gòu),可以讓網(wǎng)絡(luò)結(jié)構(gòu)的搜索空間大大減小,并且block結(jié)構(gòu)本身具有強(qiáng)大的泛化性,針對不同的數(shù)據(jù)集或者任務(wù),只需要疊加不同個(gè)數(shù)的block即可完成(如圖二所示)。
圖二:
基于Block設(shè)計(jì)的網(wǎng)絡(luò)整體框架
左邊為針對CIFAR的框架,右邊針對ImageNet
表一:
網(wǎng)絡(luò)結(jié)構(gòu)編碼表
為了表示網(wǎng)絡(luò)block結(jié)構(gòu),本文設(shè)計(jì)了一套網(wǎng)絡(luò)結(jié)構(gòu)編碼,把神經(jīng)網(wǎng)絡(luò)看做一個(gè)有向無環(huán)圖,每個(gè)節(jié)點(diǎn)表示網(wǎng)絡(luò)中的每一層,而邊就表示數(shù)據(jù)流動(dòng)的方向。整個(gè)編碼包括神經(jīng)網(wǎng)絡(luò)的層數(shù)序號(hào),類型,核的大小,以及兩個(gè)前序節(jié)點(diǎn)的序號(hào)。使用這種編碼方式就可以表示任意的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),例如ResNet和Inception的block結(jié)構(gòu)就能使用圖三中的編碼進(jìn)行表示。
圖三:
Inception和Resnet中block結(jié)構(gòu)編碼表示
基于強(qiáng)化學(xué)習(xí)的網(wǎng)絡(luò)結(jié)構(gòu)自動(dòng)設(shè)計(jì)
接下來的核心問題即是如何獲得最優(yōu)的網(wǎng)絡(luò)結(jié)構(gòu)。盡管網(wǎng)絡(luò)結(jié)構(gòu)的搜索空間已經(jīng)通過設(shè)計(jì)block大大減小,但是直接暴力搜索所有可能結(jié)構(gòu),依然十分耗費(fèi)計(jì)算資源。本文因此提出一種基于強(qiáng)化學(xué)習(xí)的網(wǎng)絡(luò)設(shè)計(jì)方法,自動(dòng)學(xué)習(xí)得到網(wǎng)絡(luò)結(jié)構(gòu)。
在網(wǎng)絡(luò)設(shè)計(jì)強(qiáng)化學(xué)習(xí)中,本文把當(dāng)前神經(jīng)網(wǎng)絡(luò)層定義為增強(qiáng)學(xué)習(xí)中的目前狀態(tài)(current state),而下一層結(jié)構(gòu)的決策定義為增強(qiáng)學(xué)習(xí)中的動(dòng)作(action)。這里使用之前定義的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)編碼來表示每一層網(wǎng)絡(luò)。這樣,通過一系列的動(dòng)作決策,就能獲得一條表示block結(jié)構(gòu)的編碼(如圖四所示),而提出的強(qiáng)化學(xué)習(xí)算法通過優(yōu)化尋獲最優(yōu)的動(dòng)作決策序列。本文使用Q-learning算法來進(jìn)行學(xué)習(xí),具體的公式不再展開。
圖四:
基于強(qiáng)化學(xué)習(xí)的網(wǎng)絡(luò)結(jié)構(gòu)自動(dòng)設(shè)計(jì)流程
值得注意的一點(diǎn)是,與一般的強(qiáng)化學(xué)習(xí)問題不同,該任務(wù)只在結(jié)束整個(gè)序列的決策后(即生成完整網(wǎng)絡(luò)結(jié)構(gòu)后)才會(huì)得到一個(gè)reward,而之前的每個(gè)決策是對應(yīng)reward。由于獲得最終reward的成本非常高(需要在數(shù)據(jù)上重新訓(xùn)練新獲得的網(wǎng)絡(luò)結(jié)構(gòu)),為了加快它的收斂,作者使用了reward shaping的技巧(如圖五所示),因而訓(xùn)練初始階段終止層的Q值不會(huì)過高,讓算法不會(huì)在訓(xùn)練初始階段傾向于生成層數(shù)過淺的網(wǎng)絡(luò)結(jié)構(gòu)。
圖五:
Reward shaping對收斂效率的影響
提前停止策略
雖然能夠使用多種技巧來使自動(dòng)化網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計(jì)變的更加高效。但是自動(dòng)網(wǎng)絡(luò)設(shè)計(jì)中耗費(fèi)時(shí)間的關(guān)鍵還是在于每次獲得reward的時(shí)間成本非常高,需要將生成的網(wǎng)絡(luò)結(jié)構(gòu)在對應(yīng)的數(shù)據(jù)集上訓(xùn)練至收斂,然后獲得相應(yīng)的準(zhǔn)確度來表示結(jié)構(gòu)的好壞并且用作reward。本文作者發(fā)現(xiàn),通過調(diào)整學(xué)習(xí)率,只需要正常訓(xùn)練30分之一的過程(例如,CIFAR-100數(shù)據(jù)集上訓(xùn)練12個(gè)epoch),就可以得到網(wǎng)絡(luò)的大致最終精度,這樣可以大大降低時(shí)間成本。但是,這樣的網(wǎng)絡(luò)結(jié)構(gòu)精度及其關(guān)聯(lián)的reward會(huì)有誤差,導(dǎo)致無法精細(xì)區(qū)分網(wǎng)絡(luò)結(jié)構(gòu)的優(yōu)劣,本文提出一個(gè)憑經(jīng)驗(yàn)的解決公式:
即真實(shí)的reward和提前停止的準(zhǔn)確度成正比,但是和網(wǎng)絡(luò)結(jié)構(gòu)的計(jì)算復(fù)雜度和結(jié)構(gòu)連接復(fù)雜度(block中邊數(shù)除以點(diǎn)數(shù))成反比。通過這樣的公式矯正,得到的reward對網(wǎng)絡(luò)結(jié)構(gòu)的好壞更加具備可鑒別性(如圖六所示)。
圖六:
提前停止的準(zhǔn)確度與網(wǎng)絡(luò)真實(shí)準(zhǔn)確度、
計(jì)算復(fù)雜度、連接復(fù)雜度的關(guān)系
實(shí)驗(yàn)結(jié)果
本文使用了32個(gè)GPU,經(jīng)過3天的搜索,可以在CIFAR數(shù)據(jù)集上找到性能達(dá)到目前先進(jìn)水平的網(wǎng)絡(luò)結(jié)構(gòu)(如圖七所示)。
圖七:
搜索過程以及學(xué)習(xí)得到的最優(yōu)網(wǎng)絡(luò)結(jié)構(gòu)
相比之前的自動(dòng)網(wǎng)絡(luò)搜索方法(如Google NAS算法的數(shù)百塊GPU以及一個(gè)月時(shí)間),BlockQNN算法可謂十分高效(如表二、表三所示)。
表二:
不同自動(dòng)網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計(jì)算法的
計(jì)算資源對比
表三:
在CIFAR數(shù)據(jù)集上不同網(wǎng)絡(luò)結(jié)構(gòu)的錯(cuò)誤率
另一方面,學(xué)習(xí)獲得的網(wǎng)絡(luò)結(jié)構(gòu)也可以更容易的遷移到ImageNet任務(wù)上,取得了不錯(cuò)的精度(如表四所示)。
表四:
在Imagenet數(shù)據(jù)集上不同網(wǎng)絡(luò)結(jié)構(gòu)的錯(cuò)誤率
為了驗(yàn)證BlockQNN算法是否真的學(xué)習(xí)到了設(shè)計(jì)網(wǎng)絡(luò)的方式,在同一搜索空間下和暴力搜索進(jìn)行對比,可以發(fā)現(xiàn)本文提出的BlockQNN算法能獲得比暴力搜索更好的模型(如圖八所示)。
圖八:
強(qiáng)化學(xué)習(xí)與暴力搜索獲得網(wǎng)絡(luò)結(jié)構(gòu)
在CIFAR數(shù)據(jù)集的準(zhǔn)確率
對整個(gè)搜索過程和結(jié)果網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行分析(如圖九所示),本文作者發(fā)現(xiàn)學(xué)習(xí)得到的優(yōu)異結(jié)構(gòu)擁有一些共性。比如multi-branch結(jié)構(gòu)、short-cut連接方式等這些現(xiàn)在常用的設(shè)計(jì)思想。同時(shí),作者也發(fā)現(xiàn)了一些不太常見的結(jié)構(gòu)共性,比如卷積層之間的addition操作出現(xiàn)的十分頻繁,這些學(xué)習(xí)得到的網(wǎng)絡(luò)結(jié)構(gòu)還有待進(jìn)一步的分析和研究。
圖九:
BlockQNN算法設(shè)計(jì)的網(wǎng)絡(luò)結(jié)構(gòu)示例
結(jié)論
本文提出了一種高效的基于強(qiáng)化學(xué)習(xí)的網(wǎng)路結(jié)構(gòu)自動(dòng)設(shè)計(jì)算法——BlockQNN,其通過“Block”的設(shè)計(jì)思想,讓網(wǎng)絡(luò)結(jié)構(gòu)搜索空間大大降低,并且使得學(xué)習(xí)得到的網(wǎng)絡(luò)具備非常強(qiáng)的可遷移性。同時(shí),本文使用“提前停止”和分布式架構(gòu)來加速整個(gè)學(xué)習(xí)過程,達(dá)到了百倍于之前Google NAS算法的速度(僅需要32塊GPU以及3天的訓(xùn)練)。實(shí)驗(yàn)表明,其學(xué)習(xí)得到的網(wǎng)路結(jié)構(gòu)在CIFAR數(shù)據(jù)集上達(dá)到人類設(shè)計(jì)網(wǎng)絡(luò)結(jié)構(gòu)的精度,并且其結(jié)構(gòu)可以遷移到大規(guī)模的ImageNet數(shù)據(jù)集上,也能取得不錯(cuò)的性能。作者希望朝著自動(dòng)化深度學(xué)習(xí)這個(gè)目標(biāo)繼續(xù)發(fā)展算法,最終把人從復(fù)雜繁瑣的網(wǎng)絡(luò)設(shè)計(jì)和調(diào)參中解放出來,實(shí)現(xiàn)深度學(xué)習(xí)更進(jìn)一步的“智能化”。
-
網(wǎng)絡(luò)結(jié)構(gòu)
+關(guān)注
關(guān)注
0文章
48瀏覽量
11049 -
Block
+關(guān)注
關(guān)注
0文章
26瀏覽量
14667
發(fā)布評(píng)論請先 登錄
相關(guān)推薦
評(píng)論