大家好,歡迎來到專欄《AutoML》,在這個專欄中我們會講述AutoML技術在深度學習中的應用,這一期講述強化學習用於模型設計和最佳化的核心技術。

作者&編輯 | 言有三

一直以來,網路結構的設計是一個非常需要經驗且具有挑戰性的工作,研究人員從設計功能更加強大和更加高效的模型兩個方向進行研究,隨著各類經典網路設計思想的完善,如今要手工設計出更優秀的模型已經很難,而以AutoML為代表的自動化機器學習技術就成為了大家關注的熱點,其中用於搜尋的方法包括強化學習,進化演算法,貝葉斯最佳化等,本期我們首先介紹基於強化學習的方法。

1 模型結構搜尋

Google在2017年利用強化學習進行最佳模型架構的搜尋[1],引爆了自動設計網路模型(Neural Architecture Search,簡稱NAS)的研究熱潮,其基本流程如下:

【AutoML】強化學習如何用於自動模型設計(NAS)與最佳化?

強化學習方法需要一些基本元件,包括搜尋空間(search space),

策略函式

(policy),獎勵指標(reward)。

搜尋空間就是網路元件,也就是基本引數,包括濾波器數量,卷積核高、卷積核寬、卷積核滑動步長高、卷積核滑動步長寬等,如下圖(分別是有跳層連線和無跳層連線),每一個引數的預測使用softmax分類器實現,跳層連線則使用

sigmoid函式

【AutoML】強化學習如何用於自動模型設計(NAS)與最佳化?

【AutoML】強化學習如何用於自動模型設計(NAS)與最佳化?

策略函式使用的就是RNN,實際是一個兩層的LSTM,每一個隱藏層單元為35。之所以可以這麼做是因為網路結構和連線可以使用一個變長的字串進行描述,終止條件就是達到一定的層數。

獎勵指標(reward)使用的是驗證集上測試準確率,如下。

【AutoML】強化學習如何用於自動模型設計(NAS)與最佳化?

因為上述目標不可微分,所以需要進行近似如下:

【AutoML】強化學習如何用於自動模型設計(NAS)與最佳化?

其中m是每一個batch取樣的結構,T是需要預測的引數量,

使用了800個GPU訓練了28天后,學習到的網路結構如下:

【AutoML】強化學習如何用於自動模型設計(NAS)與最佳化?

從上面的結構可以看出,它擁有以下特點:

(1) 跨層連線非常多,說明資訊融合非常重要。

(2) 單個通道數不大,這是通道使用更加高效的表現。

以上研究催生了Google Cloud AutoML,並在2018年1月被Google釋出,AutoML技術的研究開始進入高潮,這幾年成為機器學習/深度學習的大熱門。

由於上述框架[1]的搜尋空間過大,作者後來又其進行了改進,提出了NASNet[2]。NASNet的主要特點是它對網路結構的基本單元進行搜尋而不是對整個網路進行搜尋,其中兩類基本單元分別是Normal Cell和Reduction Cell。

Normal Cell不降低特徵圖解析度,Reduction Cell則將解析度降低為原來1/2的,它們一起使用可以構建大部分網路架構,如下圖的CIFAR10和ImageNet架構。

【AutoML】強化學習如何用於自動模型設計(NAS)與最佳化?

每一個Cell包含了若干個block,每一個block都包含了兩個隱藏狀態,兩個對應的操作,以及融合操作,如下:

【AutoML】強化學習如何用於自動模型設計(NAS)與最佳化?

如上圖灰色的是狀態,黃色是對應狀態的操作,綠色是融合操作,其中狀態對應的操作從以下空間選擇:

【AutoML】強化學習如何用於自動模型設計(NAS)與最佳化?

若干個block就可以組成一個cell,如下圖展示了5個block組成的cell。

【AutoML】強化學習如何用於自動模型設計(NAS)與最佳化?

有了cell之後,我們就只需要定義好重複次數N和初始卷積濾波器的數量就得到了最終的網路結構,這也是當前大部分模型的搭建思想。這兩個可以用經驗值來設定,比如4@64,表示初始通道數為64,採用4個重複的單元,具體的學習方法與[1]一致。

2 模型結構最佳化

雖然NAS本身具有模型最佳化的功能,但是當前也有許多成熟的模型最佳化方法,比如模型剪枝,量化,蒸餾。

2.1 模型剪枝

AutoML for Model Compression(AMC)[3]是一個利用強化學習自動搜尋並提高模型剪枝演算法質量的框架,其完整的流程如下:

【AutoML】強化學習如何用於自動模型設計(NAS)與最佳化?

在一般的剪枝演算法中,我們通常遵循一些基本策略:比如在提取低階特徵的引數較少的第一層中剪掉更少的引數,對冗餘性更高的FC層剪掉更多的引數。然而,由於深度神經網路中的層不是孤立的,這些基於規則的剪枝策略並不是最優的,也不能從一個模型遷移到另一個模型。

AMC方法便是在該背景下,利用強化學習自動搜尋並提高模型壓縮的質量,該框架是每一層進行獨立壓縮,前一層壓縮完之後再往後層進行傳播,t層接受該層的輸入特徵s_t,輸出稀疏比率a_t,按照a_t對該層進行壓縮後,智慧體移動到下一層L_t+1,使用驗證集精度作為評估。

作者們對兩類場景進行了實驗,第一類是受延遲影響較大的應用如移動APP,使用的是資源受限的壓縮,這樣就可以在滿足低FLOP和延遲,小模型的情況下實現最好的準確率;這一類場景作者透過限制搜尋空間來實現,在搜尋空間中,動作空間(剪枝率)受到限制,使得被智慧體壓縮的模型總是低於

資源預算

另一類是追求精度的應用如Google Photos,就需要在保證準確率的情況下壓縮得到更小的模型。對於這一類場景,作者定義了一個獎勵,它是準確率和硬體資源的函式。基於這個獎勵函式,智慧體在不損害模型準確率的前提下探索壓縮極限。

每一層的

狀態空間

為(t, n, c, h, w, stride, k, FLOP s[t], reduced, rest, at−1),t是層指數,輸入維度是n×c×k×k,輸入大小是c×h×w,reduces就是前一層減掉的flops,rest是剩下的flops。

因為剪枝對通道數特別敏感,所以這裡不再是使用離散的空間,如{128,256},而是使用連續的空間,使用deep deterministic policy gradient (DDPG)來控制壓縮比率,完整的演算法流程如下:

【AutoML】強化學習如何用於自動模型設計(NAS)與最佳化?

對於細粒度的剪枝,可以使用權重的最小幅度作為閾值,對於通道級別的壓縮,可以使用最大響應值。在谷歌Pixel-1 CPU和MobileNet模型上,AMC實現了1。95 倍的加速,批大小為1,節省了34%的記憶體。在英偉達Titan XP GPU 上,AMC實現了1。53 倍的加速,批大小為50。

2.2 模型量化

同樣的,量化也是模型壓縮的另外一個技術,是學術界和工業界的重點研究方向,HAQ(Hardware-Aware Automated Quantization with Mixed Precision)[4]是一個自動化的混合精度量化框架,使用增強學習讓每一層都學習到了適合該層的量化位寬。

【AutoML】強化學習如何用於自動模型設計(NAS)與最佳化?

不同的網路層有不同的冗餘性,因此對於精度的要求也不同,當前已經有許多的晶片開始支援混合精度。通常來說,淺層特徵提取需要更高的精度,卷積層比全連線層需要更高的精度。如果手動的去搜索每一層的位寬肯定是不現實的,因此需要採用自動搜尋策略。

另一方面,一般大家使用FLOPS,模型大小等指標來評估模型壓縮的好壞,然後不同的平臺表現出來的差異可能很大,因此HAQ使用了新的指標,即晶片的延遲和功耗。

搜尋的學習過程是代理Agent接收到層配置和統計資訊作為觀察,然後輸出動作行為即權值和啟用的位寬,其中演算法細節為:

(1) 觀測值-狀態空間,一個

10維變數

,如下:

【AutoML】強化學習如何用於自動模型設計(NAS)與最佳化?

(2) 動作空間,使用了連續函式來決定位寬,離散的位寬如下:

【AutoML】強化學習如何用於自動模型設計(NAS)與最佳化?

(3) 反饋,利用硬體加速器來獲取延遲和能量作為反饋訊號,以指導Agent滿足資源約束。

(4) 量化,直接使用線性量化方法,其中s是縮放因子,clamp是截斷函式。

【AutoML】強化學習如何用於自動模型設計(NAS)與最佳化?

(5) c的選擇是計算原始分佈和量化後分布的

KL散度

,這也是很多框架中的做法。

【AutoML】強化學習如何用於自動模型設計(NAS)與最佳化?

(6) 獎勵函式,在所有層被量化過後,再進行1個epoch的微調,並將重訓練後的驗證精度作為獎勵訊號。

【AutoML】強化學習如何用於自動模型設計(NAS)與最佳化?

使用了

深度確定性策略梯度

(DDPG)方法進行最佳化,下圖是在延遲約束下,MobileNet-V1/V2模型在邊緣端和雲端裝置上的實驗結果,與固定的8bit量化方法相比,分別取得了1。4倍到1。95倍的加速。

【AutoML】強化學習如何用於自動模型設計(NAS)與最佳化?

下圖分別是邊緣端和雲端裝置上MobileNet-V1各個網路層的量化特點,可以發現在邊緣端裝置上depthwise卷積有更少的bits,pointwise有更多,在雲端則是完全相反。這是因為雲裝置具有更大的記憶體頻寬和更高的

並行性

,而depthwise就是記憶體受限的操作,pointwise則是計算受限的操作,MobileNet-V2上能觀察到同樣的特點。

【AutoML】強化學習如何用於自動模型設計(NAS)與最佳化?

2.3 模型蒸餾

N2N learning[5]是一個基於強化學習的知識蒸餾框架,它使用增強學習演算法來將teacher模型轉化為student模型,框架結構如下:

【AutoML】強化學習如何用於自動模型設計(NAS)與最佳化?

N2N learning基於一個假設,即一個教師網路轉化成學生網路的過程可以看作是

馬爾可夫

決策過程Markov Decision Process(MDP),當前的步驟只和有限的之前幾步有關係,使用增強學習來進行最佳化,其基本概念如下:

狀態S:將網路的架構作為狀態,對於任何一個大的網路,取樣後比它小的網路都很多,所以狀態空間非常大。

動作A與狀態轉換T:包括層的縮減以及移除操作。這一個過程透過雙向LSTM來實現,它會觀察某一層與前後層的關係,學習到是否進行約減或者刪除。

獎勵r:模型壓縮的目標是保證精度的同時儘可能壓縮模型,因此reward就是

壓縮率

在上圖結構中包括了兩個動作,實際進行最佳化時依次進行:

(1) 首先選擇一組動作,用來判斷當前層的去留;

(2) 然後使用另一個策略選擇一組動作,用來決定剩下每一層的裁剪程度,虛擬碼流程如下:

【AutoML】強化學習如何用於自動模型設計(NAS)與最佳化?

以上兩種動作使用的LSTM也有差異,下圖(a)是層的去留使用的LSTM,可以看出是一個雙向的LSTM,要同時考慮前向和反向的中間狀態。

下圖(b)是層的裁剪使用的LSTM,可以看出是一個單向的LSTM,其中at的值範圍是[0。1,0。2,。。。,1],表示壓縮率。

【AutoML】強化學習如何用於自動模型設計(NAS)與最佳化?

而獎勵reward公式如下:

【AutoML】強化學習如何用於自動模型設計(NAS)與最佳化?

其中C表示壓縮率,A表示學生模型準確率,Ateacher表示教師模型準確率,教師網路的輸出作為學生網路的真值。

損失函式包括兩項,分別是學生網路的分類損失以及蒸餾損失,其中蒸餾損失中教師網路的輸出作為學生網路的真值,使用L2距離。

【AutoML】強化學習如何用於自動模型設計(NAS)與最佳化?

【AutoML】強化學習如何用於自動模型設計(NAS)與最佳化?

實驗結果如下:

【AutoML】強化學習如何用於自動模型設計(NAS)與最佳化?

從結果來看,實現了非常高的壓縮率,並且效能下降不明顯。

3 關於模型最佳化

如果說要我在深度學習這麼多方向裡選擇一個的話,我會毫不猶豫地選擇模型最佳化,這也是一直在做的事情。公眾號寫過很多的模型解讀了,如下是一些文章總結和直播連結以及資源下載。

知識星球也有一個模型結構1000變板塊,比公眾號的內容更深更廣。其中的模型最佳化部分主要包括緊湊模型的設計,剪枝,量化,知識蒸餾,AutoML等內容的詳細解讀,感興趣可以移步。

【AutoML】強化學習如何用於自動模型設計(NAS)與最佳化?

[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。

總結

本次我們簡單介紹了強化學習在模型的設計和最佳化中的經典案例,更多模型設計和最佳化,AutoML的內容,請大家移步有三AI知識星球長期學習。

知識星球是有三AI的付費內容社群,裡面包括各領域的模型學習,資料集下載,公眾號的付費圖文原稿,技術總結PPT和影片,知識問答,書籍下載,專案推薦,線下活動等資源,瞭解詳細請閱讀以下文章:

AutoML系列文章

1 【AutoML】AutoML專欄上線,跟Google一起見證調參黨的末日?

2【AutoML】歸一化(Normalization)方法如何進行自動學習和配置

3【AutoML】啟用函式如何進行自動學習和配置

4【AutoML】如何選擇最合適的資料增強操作

5 【AutoML】最佳化方法可以進行自動搜尋學習嗎?

6 【AutoML】損失函式也可以進行自動搜尋學習嗎?

7 【AutoML】如何使用強化學習進行模型剪枝?

8 【AutoML】強化學習如何用於模型量化?

9【AutoML】強化學習如何用於模型蒸餾?

10 【AutoML】強化學習如何用於自動模型設計(NAS)與最佳化?