【AutoML】强化学习如何用于自动模型设计(NAS)与优化?
大家好,歡迎來到專欄《AutoML》,在這個專欄中我們會講述AutoML技術(shù)在深度學(xué)習(xí)中的應(yīng)用,這一期講述強(qiáng)化學(xué)習(xí)用于模型設(shè)計和優(yōu)化的核心技術(shù)。
作者&編輯 | 言有三
一直以來,網(wǎng)絡(luò)結(jié)構(gòu)的設(shè)計是一個非常需要經(jīng)驗且具有挑戰(zhàn)性的工作,研究人員從設(shè)計功能更加強(qiáng)大和更加高效的模型兩個方向進(jìn)行研究,隨著各類經(jīng)典網(wǎng)絡(luò)設(shè)計思想的完善,如今要手工設(shè)計出更優(yōu)秀的模型已經(jīng)很難,而以AutoML為代表的自動化機(jī)器學(xué)習(xí)技術(shù)就成為了大家關(guān)注的熱點,其中用于搜索的方法包括強(qiáng)化學(xué)習(xí),進(jìn)化算法,貝葉斯優(yōu)化等,本期我們首先介紹基于強(qiáng)化學(xué)習(xí)的方法。
1 模型結(jié)構(gòu)搜索
Google在2017年利用強(qiáng)化學(xué)習(xí)進(jìn)行最佳模型架構(gòu)的搜索[1],引爆了自動設(shè)計網(wǎng)絡(luò)模型(Neural Architecture Search,簡稱NAS)的研究熱潮,其基本流程如下:
強(qiáng)化學(xué)習(xí)方法需要一些基本組件,包括搜索空間(search space),策略函數(shù)(policy),獎勵指標(biāo)(reward)。
搜索空間就是網(wǎng)絡(luò)組件,也就是基本參數(shù),包括濾波器數(shù)量,卷積核高、卷積核寬、卷積核滑動步長高、卷積核滑動步長寬等,如下圖(分別是有跳層連接和無跳層連接),每一個參數(shù)的預(yù)測使用softmax分類器實現(xiàn),跳層連接則使用sigmoid函數(shù)。
策略函數(shù)使用的就是RNN,實際是一個兩層的LSTM,每一個隱藏層單元為35。之所以可以這么做是因為網(wǎng)絡(luò)結(jié)構(gòu)和連接可以使用一個變長的字符串進(jìn)行描述,終止條件就是達(dá)到一定的層數(shù)。
獎勵指標(biāo)(reward)使用的是驗證集上測試準(zhǔn)確率,如下。
因為上述目標(biāo)不可微分,所以需要進(jìn)行近似如下:
其中m是每一個batch采樣的結(jié)構(gòu),T是需要預(yù)測的參數(shù)量,
使用了800個GPU訓(xùn)練了28天后,學(xué)習(xí)到的網(wǎng)絡(luò)結(jié)構(gòu)如下:
從上面的結(jié)構(gòu)可以看出,它擁有以下特點:
(1) 跨層連接非常多,說明信息融合非常重要。
(2) 單個通道數(shù)不大,這是通道使用更加高效的表現(xiàn)。
以上研究催生了Google Cloud AutoML,并在2018年1月被Google發(fā)布,AutoML技術(shù)的研究開始進(jìn)入高潮,這幾年成為機(jī)器學(xué)習(xí)/深度學(xué)習(xí)的大熱門。
由于上述框架[1]的搜索空間過大,作者后來又其進(jìn)行了改進(jìn),提出了NASNet[2]。NASNet的主要特點是它對網(wǎng)絡(luò)結(jié)構(gòu)的基本單元進(jìn)行搜索而不是對整個網(wǎng)絡(luò)進(jìn)行搜索,其中兩類基本單元分別是Normal Cell和Reduction Cell。
Normal Cell不降低特征圖分辨率,Reduction Cell則將分辨率降低為原來1/2的,它們一起使用可以構(gòu)建大部分網(wǎng)絡(luò)架構(gòu),如下圖的CIFAR10和ImageNet架構(gòu)。
每一個Cell包含了若干個block,每一個block都包含了兩個隱藏狀態(tài),兩個對應(yīng)的操作,以及融合操作,如下:
如上圖灰色的是狀態(tài),黃色是對應(yīng)狀態(tài)的操作,綠色是融合操作,其中狀態(tài)對應(yīng)的操作從以下空間選擇:
若干個block就可以組成一個cell,如下圖展示了5個block組成的cell。
有了cell之后,我們就只需要定義好重復(fù)次數(shù)N和初始卷積濾波器的數(shù)量就得到了最終的網(wǎng)絡(luò)結(jié)構(gòu),這也是當(dāng)前大部分模型的搭建思想。這兩個可以用經(jīng)驗值來設(shè)定,比如4@64,表示初始通道數(shù)為64,采用4個重復(fù)的單元,具體的學(xué)習(xí)方法與[1]一致。
2 模型結(jié)構(gòu)優(yōu)化
雖然NAS本身具有模型優(yōu)化的功能,但是當(dāng)前也有許多成熟的模型優(yōu)化方法,比如模型剪枝,量化,蒸餾。
2.1 模型剪枝
AutoML for Model Compression(AMC)[3]是一個利用強(qiáng)化學(xué)習(xí)自動搜索并提高模型剪枝算法質(zhì)量的框架,其完整的流程如下:
在一般的剪枝算法中,我們通常遵循一些基本策略:比如在提取低級特征的參數(shù)較少的第一層中剪掉更少的參數(shù),對冗余性更高的FC層剪掉更多的參數(shù)。然而,由于深度神經(jīng)網(wǎng)絡(luò)中的層不是孤立的,這些基于規(guī)則的剪枝策略并不是最優(yōu)的,也不能從一個模型遷移到另一個模型。
AMC方法便是在該背景下,利用強(qiáng)化學(xué)習(xí)自動搜索并提高模型壓縮的質(zhì)量,該框架是每一層進(jìn)行獨(dú)立壓縮,前一層壓縮完之后再往后層進(jìn)行傳播,t層接受該層的輸入特征s_t,輸出稀疏比率a_t,按照a_t對該層進(jìn)行壓縮后,智能體移動到下一層L_t+1,使用驗證集精度作為評估。
作者們對兩類場景進(jìn)行了實驗,第一類是受延遲影響較大的應(yīng)用如移動APP,使用的是資源受限的壓縮,這樣就可以在滿足低FLOP和延遲,小模型的情況下實現(xiàn)最好的準(zhǔn)確率;這一類場景作者通過限制搜索空間來實現(xiàn),在搜索空間中,動作空間(剪枝率)受到限制,使得被智能體壓縮的模型總是低于資源預(yù)算。
另一類是追求精度的應(yīng)用如Google Photos,就需要在保證準(zhǔn)確率的情況下壓縮得到更小的模型。對于這一類場景,作者定義了一個獎勵,它是準(zhǔn)確率和硬件資源的函數(shù)。基于這個獎勵函數(shù),智能體在不損害模型準(zhǔn)確率的前提下探索壓縮極限。
每一層的狀態(tài)空間為(t, n, c, h, w, stride, k, FLOP s[t], reduced, rest, at?1),t是層指數(shù),輸入維度是n×c×k×k,輸入大小是c×h×w,reduces就是前一層減掉的flops,rest是剩下的flops。
因為剪枝對通道數(shù)特別敏感,所以這里不再是使用離散的空間,如{128,256},而是使用連續(xù)的空間,使用deep deterministic policy gradient (DDPG)來控制壓縮比率,完整的算法流程如下:
對于細(xì)粒度的剪枝,可以使用權(quán)重的最小幅度作為閾值,對于通道級別的壓縮,可以使用最大響應(yīng)值。在谷歌Pixel-1 CPU和MobileNet模型上,AMC實現(xiàn)了1.95 倍的加速,批大小為1,節(jié)省了34%的內(nèi)存。在英偉達(dá)Titan XP GPU 上,AMC實現(xiàn)了1.53 倍的加速,批大小為50。
2.2 模型量化
同樣的,量化也是模型壓縮的另外一個技術(shù),是學(xué)術(shù)界和工業(yè)界的重點研究方向,HAQ(Hardware-Aware Automated Quantization with Mixed Precision)[4]是一個自動化的混合精度量化框架,使用增強(qiáng)學(xué)習(xí)讓每一層都學(xué)習(xí)到了適合該層的量化位寬。
不同的網(wǎng)絡(luò)層有不同的冗余性,因此對于精度的要求也不同,當(dāng)前已經(jīng)有許多的芯片開始支持混合精度。通常來說,淺層特征提取需要更高的精度,卷積層比全連接層需要更高的精度。如果手動的去搜索每一層的位寬肯定是不現(xiàn)實的,因此需要采用自動搜索策略。
另一方面,一般大家使用FLOPS,模型大小等指標(biāo)來評估模型壓縮的好壞,然后不同的平臺表現(xiàn)出來的差異可能很大,因此HAQ使用了新的指標(biāo),即芯片的延遲和功耗。
搜索的學(xué)習(xí)過程是代理Agent接收到層配置和統(tǒng)計信息作為觀察,然后輸出動作行為即權(quán)值和激活的位寬,其中算法細(xì)節(jié)為:
(1) 觀測值-狀態(tài)空間,一個10維變量,如下:
(2) 動作空間,使用了連續(xù)函數(shù)來決定位寬,離散的位寬如下:
(3) 反饋,利用硬件加速器來獲取延遲和能量作為反饋信號,以指導(dǎo)Agent滿足資源約束。
(4) 量化,直接使用線性量化方法,其中s是縮放因子,clamp是截斷函數(shù)。
(5) c的選擇是計算原始分布和量化后分布的KL散度,這也是很多框架中的做法。
(6) 獎勵函數(shù),在所有層被量化過后,再進(jìn)行1個epoch的微調(diào),并將重訓(xùn)練后的驗證精度作為獎勵信號。
使用了深度確定性策略梯度(DDPG)方法進(jìn)行優(yōu)化,下圖是在延遲約束下,MobileNet-V1/V2模型在邊緣端和云端設(shè)備上的實驗結(jié)果,與固定的8bit量化方法相比,分別取得了1.4倍到1.95倍的加速。
下圖分別是邊緣端和云端設(shè)備上MobileNet-V1各個網(wǎng)絡(luò)層的量化特點,可以發(fā)現(xiàn)在邊緣端設(shè)備上depthwise卷積有更少的bits,pointwise有更多,在云端則是完全相反。這是因為云設(shè)備具有更大的內(nèi)存帶寬和更高的并行性,而depthwise就是內(nèi)存受限的操作,pointwise則是計算受限的操作,MobileNet-V2上能觀察到同樣的特點。
2.3 模型蒸餾
N2N learning[5]是一個基于強(qiáng)化學(xué)習(xí)的知識蒸餾框架,它使用增強(qiáng)學(xué)習(xí)算法來將teacher模型轉(zhuǎn)化為student模型,框架結(jié)構(gòu)如下:
N2N learning基于一個假設(shè),即一個教師網(wǎng)絡(luò)轉(zhuǎn)化成學(xué)生網(wǎng)絡(luò)的過程可以看作是馬爾可夫決策過程Markov Decision Process(MDP),當(dāng)前的步驟只和有限的之前幾步有關(guān)系,使用增強(qiáng)學(xué)習(xí)來進(jìn)行優(yōu)化,其基本概念如下:
狀態(tài)S:將網(wǎng)絡(luò)的架構(gòu)作為狀態(tài),對于任何一個大的網(wǎng)絡(luò),采樣后比它小的網(wǎng)絡(luò)都很多,所以狀態(tài)空間非常大。
動作A與狀態(tài)轉(zhuǎn)換T:包括層的縮減以及移除操作。這一個過程通過雙向LSTM來實現(xiàn),它會觀察某一層與前后層的關(guān)系,學(xué)習(xí)到是否進(jìn)行約減或者刪除。
獎勵r:模型壓縮的目標(biāo)是保證精度的同時盡可能壓縮模型,因此reward就是壓縮率。
在上圖結(jié)構(gòu)中包括了兩個動作,實際進(jìn)行優(yōu)化時依次進(jìn)行:
(1) 首先選擇一組動作,用來判斷當(dāng)前層的去留;
(2) 然后使用另一個策略選擇一組動作,用來決定剩下每一層的裁剪程度,偽代碼流程如下:
以上兩種動作使用的LSTM也有差異,下圖(a)是層的去留使用的LSTM,可以看出是一個雙向的LSTM,要同時考慮前向和反向的中間狀態(tài)。
下圖(b)是層的裁剪使用的LSTM,可以看出是一個單向的LSTM,其中at的值范圍是[0.1,0.2,...,1],表示壓縮率。
而獎勵reward公式如下:
其中C表示壓縮率,A表示學(xué)生模型準(zhǔn)確率,Ateacher表示教師模型準(zhǔn)確率,教師網(wǎng)絡(luò)的輸出作為學(xué)生網(wǎng)絡(luò)的真值。
損失函數(shù)包括兩項,分別是學(xué)生網(wǎng)絡(luò)的分類損失以及蒸餾損失,其中蒸餾損失中教師網(wǎng)絡(luò)的輸出作為學(xué)生網(wǎng)絡(luò)的真值,使用L2距離。
實驗結(jié)果如下:
從結(jié)果來看,實現(xiàn)了非常高的壓縮率,并且性能下降不明顯。
3 關(guān)于模型優(yōu)化
如果說要我在深度學(xué)習(xí)這么多方向里選擇一個的話,我會毫不猶豫地選擇模型優(yōu)化,這也是一直在做的事情。公眾號寫過很多的模型解讀了,如下是一些文章總結(jié)和直播鏈接以及資源下載。
【完結(jié)】總結(jié)12大CNN主流模型架構(gòu)設(shè)計思想
「總結(jié)」言有三&天池深度學(xué)習(xí)模型設(shè)計直播匯總,贈超過200頁課件
知識星球也有一個模型結(jié)構(gòu)1000變板塊,比公眾號的內(nèi)容更深更廣。其中的模型優(yōu)化部分主要包括緊湊模型的設(shè)計,剪枝,量化,知識蒸餾,AutoML等內(nèi)容的詳細(xì)解讀,感興趣可以移步。
[1] Zoph B, Le Q V. Neural Architecture Search with Reinforcement Learning[J]. international conference on learning representations, 2017.
[2] Zoph B, Vasudevan V, Shlens J, et al. Learning Transferable Architectures for Scalable Image Recognition[J]. computer vision and pattern recognition, 2018: 8697-8710.
[3]?He Y, Lin J, Liu Z, et al. Amc: Automl for model compression and acceleration on mobile devices[C]//Proceedings of the European Conference on Computer Vision (ECCV). 2018: 784-800.
[4]?Wang K, Liu Z, Lin Y, et al. HAQ: Hardware-Aware Automated Quantization with Mixed Precision[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2019: 8612-8620.
[5] Ashok A , Rhinehart N , Beainy F , et al. N2N Learning: Network to Network Compression via Policy Gradient Reinforcement Learning[C]// ICLR 2018. 2017.
總結(jié)
本次我們簡單介紹了強(qiáng)化學(xué)習(xí)在模型的設(shè)計和優(yōu)化中的經(jīng)典案例,更多模型設(shè)計和優(yōu)化,AutoML的內(nèi)容,請大家移步有三AI知識星球長期學(xué)習(xí)。
有三AI知識星球
知識星球是有三AI的付費(fèi)內(nèi)容社區(qū),里面包括各領(lǐng)域的模型學(xué)習(xí),數(shù)據(jù)集下載,公眾號的付費(fèi)圖文原稿,技術(shù)總結(jié)PPT和視頻,知識問答,書籍下載,項目推薦,線下活動等資源,了解詳細(xì)請閱讀以下文章:
【雜談】有三AI知識星球一周年了!為什么公眾號+星球才是完整的?
【雜談】萬萬沒想到,有三還有個保密的‘朋友圈’,那里面都在弄啥!
轉(zhuǎn)載文章請后臺聯(lián)系
侵權(quán)必究
往期精選
【AutoML】如何選擇最合適的數(shù)據(jù)增強(qiáng)操作
【AutoML】激活函數(shù)如何進(jìn)行自動學(xué)習(xí)和配置
【AutoML】歸一化(Normalization)方法如何進(jìn)行自動學(xué)習(xí)和配置
【AutoML】優(yōu)化方法可以進(jìn)行自動搜索學(xué)習(xí)嗎?
【AutoML】損失函數(shù)也可以進(jìn)行自動搜索學(xué)習(xí)嗎?
【AutoML】如何使用強(qiáng)化學(xué)習(xí)進(jìn)行模型剪枝?
【AutoML】強(qiáng)化學(xué)習(xí)如何用于模型量化?
【AutoML】強(qiáng)化學(xué)習(xí)如何用于模型蒸餾?
【AutoML】當(dāng)前有哪些可用的AutoML平臺?
【星球知識卡片】殘差網(wǎng)絡(luò)家族10多個變種學(xué)習(xí)卡片,請收下!
【星球知識卡片】移動端高效率的分組網(wǎng)絡(luò)都發(fā)展到什么程度了?
【星球知識卡片】注意力機(jī)制發(fā)展如何了,如何學(xué)習(xí)它在各類任務(wù)中的應(yīng)用?
【星球知識卡片】模型剪枝有哪些關(guān)鍵技術(shù),如何對其進(jìn)行長期深入學(xué)習(xí)
【星球知識卡片】模型量化的核心技術(shù)點有哪些,如何對其進(jìn)行長期深入學(xué)習(xí)
【星球知識卡片】模型蒸餾的核心技術(shù)點有哪些,如何對其進(jìn)行長期深入學(xué)習(xí)
總結(jié)
以上是生活随笔為你收集整理的【AutoML】强化学习如何用于自动模型设计(NAS)与优化?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【杂谈】2020年有三AI计算机视觉培养
- 下一篇: 【星球知识卡片】视频分类与行为识别有哪些