——Facebook-Berkeley-Nets
摘要:
為移動設(shè)備設(shè)計卷積網(wǎng)絡(luò)挑戰(zhàn)巨大涎拉,因為設(shè)計空間巨大咆槽,現(xiàn)有NAS方法在計算上是昂貴的速那。另外,之前的工作關(guān)注降低FLOPs懈涛,但是FLOPs并不總是反應(yīng)真實的延遲。因此基于differentiable neural architecture search(DNAS)泳猬,采用梯度優(yōu)化的方法優(yōu)化卷積結(jié)構(gòu)批钠,避免像以前的方法那樣分別枚舉和訓練各個體系結(jié)構(gòu)。FBNets-B在ImageNet上top-1準確率為74.1%得封,295M FLOPs埋心,在三星S8上23.1ms延遲,比MobileNetv2小2.4倍忙上,快1.5倍踩窖。
DNAS搜索一個層次空間,ConvNet的每一層都可以選擇不同的塊晨横,搜索空間由一個隨機超網(wǎng)絡(luò)表示洋腮,搜索過程使用SGD訓練隨機超網(wǎng)以優(yōu)化架構(gòu)分布箫柳,從訓練的分布中采樣最佳體系結(jié)構(gòu)。 在目標設(shè)備上測量每個操作的延遲并用于計算超網(wǎng)的損失啥供。
介紹
設(shè)計準確高效的ConvNet有如下挑戰(zhàn):
未知的設(shè)計空間悯恍,ConvNet的設(shè)計空間是組合的,訓練ConvNet是非常耗時的伙狐,因此之前的網(wǎng)絡(luò)設(shè)計基本不怎么搜索整個設(shè)計空間涮毫。采用強化學習和遺傳算法的NAS非常耗時。
不可廣泛移植的最優(yōu)解贷屎,最優(yōu)的卷積結(jié)構(gòu)受很多因素限制罢防,比如輸入分辨率和目標設(shè)備。一旦這些因素改變唉侄,最優(yōu)解的結(jié)構(gòu)就會變化咒吐。
不一致的效率度量,大多數(shù)效率度量不僅依賴于網(wǎng)絡(luò)結(jié)構(gòu)也依賴目標設(shè)備的硬件和軟件配置属划。之前的許多工作都用了硬件無關(guān)的度量比如FLOPs(乘加操作的次數(shù))去評估效率恬叹。然而,F(xiàn)LOP計數(shù)低的網(wǎng)絡(luò)不一定快同眯。硬件無關(guān)的度量和實際的效率之間的不一致性使卷積網(wǎng)絡(luò)的設(shè)計更加困難绽昼。
DNAS用操作隨機執(zhí)行的超級網(wǎng)絡(luò)代表搜索空間,將找到最佳架構(gòu)的問題放松到找到產(chǎn)生最佳架構(gòu)分布的問題须蜗,通過使用Gumbel Softmax技術(shù)硅确,可以直接基于梯度優(yōu)化(SGD)的方法訓練結(jié)構(gòu)分布。用于訓練隨機超級網(wǎng)絡(luò)的損失不僅僅是交叉熵損失明肮,還包括延時損失疏魏。為了評估網(wǎng)絡(luò)結(jié)構(gòu)的延時,本文將計算搜索空間每個操作的延時并且使用速查表模型去計算所有操作的延時(每個操作的時間加起來)晤愧,使用這個模型可以快速的估量龐大的搜索空間中網(wǎng)絡(luò)結(jié)構(gòu)的延時大莫。更重要的是,它使得延時關(guān)于層結(jié)構(gòu)選擇是可微的官份。
最近的工作
DARTS著重在cell級別的架構(gòu)搜索只厘,并且同樣的cell結(jié)構(gòu)重復(fù)堆疊得到網(wǎng)絡(luò)整體,cell級結(jié)構(gòu)是硬件不友好的舅巷,并且實際效率也很低羔味。MnasNet研究了一個stage級的分層搜索空間,允許不同的block用于網(wǎng)絡(luò)的不同stage钠右,不過同一個stage中的block仍然是相同的赋元。不同于關(guān)注FLOPs,[20]目的在于優(yōu)化目標設(shè)備的延時。
方法
將結(jié)構(gòu)搜索問題建模為搁凸,給定一個結(jié)構(gòu)空間媚值,期望去尋找一個最優(yōu)結(jié)構(gòu),使得訓練它的權(quán)重之后护糖,可以使得損失最小化褥芒。在任務(wù)中,關(guān)注三個因素:1嫡良、搜索空間锰扶,2、損失函數(shù)(考慮延時)寝受,3坷牛、一個高效的搜索算法。
搜索空間
之前的工作關(guān)注cell級別的搜索(單元級別)很澄,一旦單元結(jié)構(gòu)搜索得到京闰,網(wǎng)絡(luò)就由這些單元堆疊得到。但是痴怨,許多搜索得到的單元結(jié)構(gòu)非常復(fù)雜和瑣碎忙干,因此在移動端前向速度很慢器予。而且浪藻,同一結(jié)構(gòu)的單元在不同深度回會網(wǎng)絡(luò)的精度和延時有不同影響,因此本文允許不同的層選擇不同的blocks來獲得更好的精度和延時乾翔。
本文建立一個層次級別的搜索空間爱葵,其宏觀結(jié)構(gòu)固定,每層可以選擇不同的block反浓,整體結(jié)構(gòu)如下圖萌丈,Block這一列代表著block的類型,“TBS”表示需要被搜索層類型雷则,f列代表著一個Block中卷積核的個數(shù)辆雾,n列代表著Block的個數(shù),s列代表著第一個Block的stride月劈。1504(1984)代表卷積的個數(shù)度迂。
網(wǎng)絡(luò)整體結(jié)構(gòu)確定了網(wǎng)絡(luò)層數(shù)和每層的輸入輸出的維數(shù)。網(wǎng)絡(luò)的前三層和最后三層有著固定的操作猜揪。對于剩下的層惭墓,他們的Block需要被尋找。每層的卷積核個數(shù)是人為預(yù)先確定好的而姐,對于淺層腊凶,使用相對較小的通道數(shù),因為淺層的特征圖分辨率較大,F(xiàn)LOP與輸入尺寸的二次冪成正比钧萍。
網(wǎng)絡(luò)中的每個可搜索層可以從層次搜索空間中選擇不同的塊褐缠,Block的結(jié)構(gòu)來源于MobileNetv2和ShiftNet,如下圖:包含的point-wise卷積划煮,的depthwise卷積送丰,以及一個的point-wise卷積,ReLU函數(shù)跟在第一個卷積和第二個卷積之后弛秋,最后一個卷積之后不接激活函數(shù)器躏,如果輸入分維度與輸出分維度相同,則使用短路連接將輸入與輸出相加蟹略。同樣仿照MobileNet-v2和ShiftNet以一個擴展比例來控制Block登失。它決定了第一個卷積將輸入特征圖的通道擴大多少,對于Depth-wise卷積挖炬,卷積核的大小可以是和揽浙,對于第一個和最后一個的卷積,使用group卷積(point-wise)來降低計算量意敛。當使用group卷積時馅巷,仿照ShuffleNet來進行通道信息融合。
在實驗中草姻,層級的搜索空間包含9個候選Blocks钓猬,它們的設(shè)置如表:
skip表示直接將輸入特征圖輸出而不經(jīng)過任何操作。候選Block可以幫助降低網(wǎng)絡(luò)的深度撩独。整體來看敞曹,搜索空間包含22層,每層可以選擇9中候選的Blocks综膀。
Loss
損失函數(shù)定義為
包含結(jié)構(gòu)與參數(shù)的交叉熵損失澳迫,以網(wǎng)絡(luò)在目標設(shè)備上的延時損失。我們不可能去對所有的網(wǎng)絡(luò)結(jié)構(gòu)進行延時測試剧劝,為了簡化問題橄登,使用一個延時速查表模型來評估整個網(wǎng)絡(luò)的延時(基于每個操作的延時),因此:
其中讥此,代表結(jié)構(gòu)的第層拢锹,每個操作的延時是獨立于其他操作的灸蟆。使用這樣的方法启泣,使得掩飾對于Block的選擇是可微的,因此可以使用SGD來進行優(yōu)化充择。
Search Algorithm
為了降低計算復(fù)雜度取胎,有些算法將內(nèi)層問題替換為在簡單的數(shù)據(jù)集(CIFAR-10)上訓練候選結(jié)構(gòu)展哭,盡管如此湃窍,訓練依然是耗時的。
本文首先將搜索空間表示為一個隨機的超級網(wǎng)絡(luò)匪傍。這個超級網(wǎng)絡(luò)有著上表所示的整體結(jié)構(gòu)您市,每層包含9個上表所示并行的Blocks,在超級網(wǎng)絡(luò)的前向過程中役衡,只有一個候選的Block被采樣進來茵休,并以以下采樣概率執(zhí)行:
包含著決定第層采樣每種Block的概率的參數(shù),第層的輸出為
表示Block被采樣手蝎,否則為0榕莺,表示第層的第個Block的輸出(給定輸入特征圖),每層獨立采樣棵介,因此結(jié)構(gòu)可以定義為:
钉鸯,是由組成的向量(第層的第個Block),表示在采樣的結(jié)構(gòu)中邮辽,第層選擇第個Block唠雕。重寫優(yōu)化問題的表達形式:
其中的損失函數(shù)對于權(quán)重明顯可微,可以采用SGD解決吨述,但是該損失對于抽樣參數(shù)并不是直接可微的岩睁,因為梯度不能由變量傳遞至,為了避開這個問題揣云,將離散隨機變量擴展為:
其中捕儒,
是一個服從Gumbel分布的隨機噪音。Gumbel Softmax函數(shù)由溫度參數(shù)控制灵再,當其接近0時肋层,近似服從所決定的離散類別抽樣亿笤,當溫度參數(shù)變大時翎迁,變成一個連續(xù)隨機變量,無論其怎么變化净薛,對都是直接可微的汪榔。對于延時損失,使用速查表進行效率估計肃拜,因此:
寫作
每個操作的延時是常數(shù)痴腌,因此整體延時對都是可微的,因此損失函數(shù)對于權(quán)重和結(jié)構(gòu)分布參數(shù)都是可微的燃领,因此可以使用SGD解決士聪。
搜索過程等價于去訓練隨機super net。訓練過程中猛蔽,計算:損失對于權(quán)重的偏導數(shù)剥悟,去訓練super net中每個操作f的權(quán)重灵寺,這部分與傳統(tǒng)的卷積神經(jīng)網(wǎng)絡(luò)沒有分別,操作搜索訓練完城后区岗,不同的操作使得整體網(wǎng)絡(luò)的精度和速度不同略板,因此計算損失對于網(wǎng)絡(luò)結(jié)構(gòu)分布的偏導數(shù),去更新每個操作的抽樣概率慈缔。這一步會使得網(wǎng)絡(luò)整體的精度和速度更高叮称,因為抑制了低精度和低速度的選擇,super net訓練完成之后藐鹤,可以從結(jié)構(gòu)分布中抽樣獲得最優(yōu)的結(jié)構(gòu)瓤檐。