0
本文作者: 黃善清 | 2019-07-21 18:05 |
雷鋒網(wǎng) AI 科技評論按:近年來,網(wǎng)絡(luò)結(jié)構(gòu)搜索(NAS)在自動化設(shè)計神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)方面獲得了較大的成功,也成為模型結(jié)構(gòu)優(yōu)化領(lǐng)域不可忽視的重要研究課題。NAS 不僅減輕了人們設(shè)計、調(diào)優(yōu)模型結(jié)構(gòu)的重重負(fù)擔(dān),而且相較于人工設(shè)計的網(wǎng)絡(luò)結(jié)構(gòu),搜索出的模型性能有了進(jìn)一步提升。
最近,地平線-華中科技大學(xué)計算機視覺聯(lián)合實驗室提出了一個新穎的 Differentiable NAS 方法——DenseNAS, 該方法可以搜索網(wǎng)絡(luò)結(jié)構(gòu)中每個 block 的寬度和對應(yīng)的空間分辨率。本文將會從簡介、對于網(wǎng)絡(luò)規(guī)模搜索的思路、實現(xiàn)方法以及實驗結(jié)果等方面詮釋 DenseNAS 這一新的網(wǎng)絡(luò)結(jié)構(gòu)搜索方法。本文已獲得地平線公眾號許可進(jìn)行轉(zhuǎn)載。
DenseNAS 簡介
NAS 極大推進(jìn)了神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計的發(fā)展,然而很多以往的工作依然需要很大的計算代價。最近 Differentiable NAS 通過在連續(xù)空間上構(gòu)建一個包含所有要搜索結(jié)構(gòu)的搜索空間(super network)極大的減少了搜索代價,但事實上,很少有Differentiable的方法可以搜索網(wǎng)絡(luò)結(jié)構(gòu)的寬度(即通道數(shù)),因為按照傳統(tǒng)Differentiable NAS的方法,將不同寬度的結(jié)構(gòu)集成到一個 super network 里面很難實現(xiàn)。在本論文中,我們提出了一個新穎的 DifferentiableNAS 的方法——DenseNAS,該方法可以搜索網(wǎng)絡(luò)結(jié)構(gòu)中每個 block 的寬度和對應(yīng)的空間分辨率。我們通過構(gòu)建一個密集連接的搜索空間來實現(xiàn)該目的。在我們設(shè)計的搜索空間中,擁有不同寬度和空間分辨率的block之間相互連接,搜索過程中優(yōu)化block之間的轉(zhuǎn)移概率從而選取一個最優(yōu)路徑。DenseNAS 使得網(wǎng)絡(luò)結(jié)構(gòu)搜索的靈活性更強,以寬度搜索為出發(fā)點,同時可以搜索網(wǎng)絡(luò)結(jié)構(gòu)下采樣的位置和全局深度(不僅限于每個block中的層數(shù),block的數(shù)量也會被搜索)。在 ImageNet 上,DenseNAS 得到的模型以較低的 latency 取得了 75.9% 的精度,整個搜索過程在 4 塊 GPU 上僅用了 23 個小時。
DenseNAS 以其更高的靈活性應(yīng)用潛力也更大,可以用于特定場景數(shù)據(jù)的結(jié)構(gòu)搜索、特定性能和速度需求的搜索以及特定設(shè)備的結(jié)構(gòu)部署,因為其在搜索空間上的彈性更大,也可以用于對 scale 敏感的方向,如檢測、分割等任務(wù)。
NAS搜索元素的梳理
設(shè)計神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)是深度學(xué)習(xí)中非常重要的一個領(lǐng)域,近年來 NAS 在自動設(shè)計神經(jīng)網(wǎng)絡(luò)方面取得了很大的成功。很多 NAS 方法產(chǎn)生的模型結(jié)構(gòu)與人工設(shè)計的結(jié)構(gòu)相比都體現(xiàn)出更優(yōu)的性能。目前在諸如分類、分割和檢測等各方向 NAS 均有進(jìn)展。NAS 的方法不僅能夠提升模型的性能,另一方面還能夠減輕人們設(shè)計、調(diào)優(yōu)模型結(jié)構(gòu)的負(fù)擔(dān)。
模型結(jié)構(gòu)設(shè)計過程中可以搜索的元素越多,相應(yīng)工程師的負(fù)擔(dān)就越小。哪些元素能夠被搜索又取決于搜索空間如何設(shè)計。在以往的工作中,操作(operation)類型的搜素已經(jīng)實現(xiàn)的較好,但是搜索網(wǎng)絡(luò)的規(guī)模(寬度和深度)就沒有那么直接。基于增強學(xué)習(xí)(RL)或者進(jìn)化算法(EA)的 NAS 方法能夠比較容易的搜索寬度、深度,因為他們的搜索空間在一個離散的空間中,但是這類方法往往需要消耗非常大的計算代價。最近 Differential 和 one-shot 的方法能夠用極少的搜索代價來取得高性能的網(wǎng)絡(luò)結(jié)構(gòu),但是網(wǎng)絡(luò)規(guī)模的搜索卻不太容易處理。這類方法的搜索依賴于一個包含所有可能結(jié)構(gòu)的超大網(wǎng)絡(luò)(super network),網(wǎng)絡(luò)規(guī)模的搜索需要將不同規(guī)模的結(jié)構(gòu)全部整合到 super network 里面。目前深度搜索通過在每一層的候選項里面增加直連(identity connection)操作來實現(xiàn),但寬度的搜索依然不容易處理。
DenseNAS對于網(wǎng)絡(luò)規(guī)模搜索的思路
深度和寬度的設(shè)定往往對結(jié)構(gòu)性能產(chǎn)生很大的影響,特別是通常微小的寬度改變都可能造成模型大小爆炸式的增長,現(xiàn)在的搜索方法中寬度通常由人提前設(shè)定好,這需要模型結(jié)構(gòu)方面專家很強的經(jīng)驗。我們旨在解決基于 Differentiable NAS 的寬度搜索問題,從而提出了 DenseNAS 的方法。我們的方法構(gòu)建了一個密集連接的搜索空間,并將搜索空間映射到連續(xù)可操作的空間。不同于 DenseNet,我們的搜索過程會選擇一條最佳的寬度增長路徑,最終只有一部分 block 會被選中并且最終結(jié)構(gòu)中的 block 之間不會再有連接。在搜索空間中每個 block 對應(yīng)不同的寬度和空間分辨率,從而不僅寬度會被搜索,進(jìn)行下采樣的位置和全局的深度(block內(nèi)層數(shù)+block的數(shù)量)都會被搜索,這使得整個搜索的過程更加靈活。
方法介紹
1.密集連接搜索空間的構(gòu)建
我們將整個搜索空間劃分為幾個層次:層(layer)、塊(block)、網(wǎng)絡(luò)(network)。
每個 layer 包含各種操作候選項,候選操作基于 MBConv,同時也包含 skip connection 用來做深度搜索。
每個 block 由層組成,一個 block 被劃分為兩個部分頭層(head layers)和堆疊層(stacking layers)。我們對每個 block 設(shè)定一個寬度和對應(yīng)的空間分辨率。對于頭層來說,其輸入來源于前幾個 block 不同通道數(shù)和空間分辨率的數(shù)據(jù)。頭層是并行的,將所有輸入數(shù)據(jù)轉(zhuǎn)換到相同通道數(shù)和空間分辨率;堆疊層是串行的,每層被設(shè)定在相同通道數(shù)和分辨率下,并且每層的操作可搜索。
不同于以往的工作,block 的數(shù)量固定,我們的搜索空間包含更多不同寬度的 block ,最終只有一部分被選取,這使得搜索的自由度更大。整個 network 包含幾個 stage,每個 stage 對應(yīng)一個范圍的寬度和固定的空間分辨率。網(wǎng)絡(luò)中 block 的寬度從頭到尾逐步增長,每個 block 都會連向其后繼的幾個 block。
2.搜索空間的連續(xù)性松弛
對于 layer 層次,每個候選操作被賦予一個結(jié)構(gòu)參數(shù),layer 的輸出由所有候選操作輸出的加權(quán)和得到:
對于 block 層次,每個 block 的數(shù)據(jù)會輸出到其后繼的幾個 block,每條輸出的路徑同樣會被賦予一個結(jié)構(gòu)參數(shù),并通過 softmax 歸一化為輸出概率。每個 block 會接受前繼幾個 block 的輸出數(shù)據(jù),在 head layers 部分,會對來自不同 block 的數(shù)據(jù)利用路徑的概率值進(jìn)行加權(quán)求和:
3.搜索算法
整個搜索過程被分為兩個階段,第一階段只有 operation 的權(quán)重參數(shù)被優(yōu)化;第二階段 operation 的權(quán)重參數(shù)和結(jié)構(gòu)參數(shù)按照 epoch 交替優(yōu)化。當(dāng)整個搜索過程結(jié)束后,我們利用結(jié)構(gòu)參數(shù)來導(dǎo)出最終的結(jié)構(gòu)。每一層的操作將選擇結(jié)構(gòu)權(quán)重最大的候選項;在 network 層面,我們利用 Viterbi 算法來選擇整個傳輸概率最大的路徑,僅有一部分 block 被選中。
搜索過程中我們加入了多目標(biāo)優(yōu)化,latency 被作為次優(yōu)化目標(biāo),通過查表的方法被優(yōu)化。
參數(shù)優(yōu)化過程中我們通過概率采樣 path 來進(jìn)行加速。對于 operation 的權(quán)重參數(shù),采樣 path 的優(yōu)化方法不僅可以起到加速、減少顯存消耗的作用,還可以在一定程度上降低不同結(jié)構(gòu) operation 之間的耦合效應(yīng)。
實驗結(jié)果
DenseNAS 在 ImageNet 上搜索的結(jié)果如下表所示。我們設(shè)置 GPU 上的 latency 為次優(yōu)化目標(biāo),DenseNAS 搜索得到的模型在低 latency 下取得了優(yōu)良的精度。在同等latency的設(shè)定下,DenseNAS 的精度遠(yuǎn)高于人工設(shè)計的 MobileNet 模型。和 NASNet-A、AmoebaNet-A 和 DARTS 等經(jīng)典的 NAS 模型相比,DenseNAS 模型精度更高,F(xiàn)LOPs 和 latency 更小。在搜索時間上 DenseNAS 僅在 4 塊 GPU 上花費 23 小時(92 GPU hours)。和 Proxyless、FBNet 相比,我們的寬度均為自動搜索,并取得了卓越的模型性能。
DenseNAS 進(jìn)一步在不同程度 latency 優(yōu)化下搜索模型,在各個 latency 設(shè)定和需求下,都能得到性能優(yōu)越的模型結(jié)構(gòu),均要遠(yuǎn)好于固定寬度/block 搜索和人工設(shè)計的模型。
DenseNAS 搜索得到的模型結(jié)構(gòu)如下圖所示:
關(guān)于作者
方杰民 & 孫玉柱,地平線平臺與技術(shù)部算法研發(fā)二部算法實習(xí)生(mentor:張騫 & 李源),主要研究方向為網(wǎng)絡(luò)結(jié)構(gòu)搜索、模型結(jié)構(gòu)優(yōu)化。該項目完成于他們實習(xí)期間。他們于華中科技大學(xué)電子信息與通信學(xué)院人工智能研究所研究生在讀,師從劉文予教授和王興剛副教授
雷鋒網(wǎng) AI 科技評論
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。