【AI不惑境】AutoML在深度学习模型设计和优化中有哪些用处?
大家好,這是專欄《AI不惑境》的第十二篇文章,講述AutoML在深度學習模型設計和優化相關的內容。
進入到不惑境界,就是向高手邁進的開始了,在這個境界需要自己獨立思考。如果說學習是一個從模仿,到追隨,到創造的過程,那么到這個階段,應該躍過了模仿和追隨的階段,進入了創造的階段。從這個境界開始,講述的問題可能不再有答案,更多的是激發大家一起來思考。
作者&編輯 | 言有三
自從2017年Google提出使用強化學習搜索模型結構之后,AutoML/NAS便迅速成為了學術界和工業界的寵兒,在這幾年也是非常火熱的領域,那么AutoML/NAS在深度學習模型的設計和優化上究竟都有了哪些實際的作用呢?本文對其進行簡單的介紹。
?
1 AutoML簡介
1.1 什么是AutoML
所謂AutoML,全稱是Automated Machine Learning,即自動機器學習技術,AutoML的目標是讓機器學習的整個流程自動化,從應用領域來說,這通常要包括數據的使用,特征的選擇,模型架構的設計和優化,優化參數的搜索等。
1.2 AutoML中的搜索方法
AutoML本質上是對參數進行自動搜索,所以其中最核心的技術是搜索策略,關鍵在于如何快速而準確地找到最優值,目前主要的搜索方法有幾種:
(1) 隨機搜索與柵格搜索。隨機搜索顧名思義就是隨機進行參數的選擇,自然是最簡單,但也是最不可靠的方法。柵格搜索就是在一個有限的搜索空間進行窮舉,對于小的搜索空間是可以接受的。
(2) 強化學習。強化學習是一類很經典的算法,大名鼎鼎的AlphaGO就使用了強化學習進行訓練,強化學習的經典方法包括DPG,PPO等。
(3) 進化算法。進化算法是一類算法的總稱,當前很多AutoML框架都使用進化算法進行訓練,它的核心思想是隨機生成一個種群,然后進行選擇、交叉、變異。
(4) 貝葉斯優化。貝葉斯優化假設超參數與需要優化的損失函數存在一個函數關系,通過代理模型來指導超參優化的調試方向。
其他諸如梯度優化方法等,在AutoML專欄中再進行詳述。
?
2 AutoML與數據使用,特征工程
2.1 特征工程
智能系統與機器學習技術的發展,本身就伴隨著對數據使用方法的進化。從傳統的專家系統,到有監督的機器學習算法,到深度學習,本身就屬于AutoML的范疇,它解決了特征選擇的問題,讓特征的學習來源于數據,而不是手工設計。
所以深度學習也被稱之為特征學習,它利用CNN等架構,實現了特征選擇的過程。
當前工業界也有一些特征工程框架,比如第四范式“先知平臺”中的FeatureGO,自動化的特征工程在數據挖掘領域中有著巨大的商業潛力。
2.2 數據增強
在機器學習/深度學習領域中,有一個很重要的問題,就是數據增強。在解決各類任務的過程中,常常沒有足夠多的數據,數據太少便意味著容易過擬合。各種各樣的幾何變換,顏色變換策略都被證明有助于提升模型的泛化能力,因此數據增強技術至關重要。
AutoML技術開始在數據增強領域研究的開始以Google Brain提出的AutoAugment[1]為代表。它的基本思路是使用增強學習從數據本身尋找最佳圖像變換策略,對于不同的任務學習不同的增強方法,流程如下:
(1) 準備16個常用的數據增強操作。
(2) 從16個中選擇5個操作,隨機產生使用該操作的概率和相應的幅度,將其稱為一個sub-policy,一共產生5個sub-polices。
(3) 對訓練過程中每一個batch的圖片,隨機采用5個sub-polices操作中的一種。
(4) 通過模型在驗證集上的泛化能力來反饋。
(5) 經過80~100個epoch后網絡開始學習到有效的sub-policies。
(6) 之后串接這5個sub-policies,然后再進行最后的訓練。
總的來說,就是學習已有數據增強的組合策略,比如對于門牌數字識別等任務,研究表明剪切和平移等幾何變換能夠獲得最佳效果,
數據使用和特征選擇作為最早被AutoML技術攻陷的領域,是機器學習算法走向智能和商業化落地的關鍵。
?
3 AutoML與模型結構設計
3.1 整個模型架構的搜索
一直以來,網絡結構的設計是一個非常需要經驗且具有挑戰性的工作,研究人員從設計功能更加強大和更加高效的模型兩個方向進行研究,我之前在阿里天池做過三次直播,感興趣的朋友可以回頭去翻看。
【總結】言有三&阿里天池深度學習模型設計直播匯總,附贈超過200頁直播PPT課件
隨著各類經典網絡設計思想的完善,如今要手工設計出更優秀的模型已經很難,而以AutoML為代表的技術就成為了大家關注的熱點。
Google在2017年利用增強學習進行最佳模型架構的搜索[2],引爆了自動設計網絡模型(Neural Architecture Search,簡稱NAS)的研究熱潮,其基本流程如下:
增強學習方法需要一些基本組件,包括搜索空間(search space),策略函數(policy),獎勵指標(reward)。
搜索空間就是網絡組件,也就是基本參數,包括濾波器數量,卷積核高、卷積核寬、卷積核滑動步長高、卷積核滑動步長寬等,如下圖(分別是有跳層連接和無跳層連接),每一個參數的預測使用softmax分類器實現,跳層連接則使用sigmoid函數。
策略函數使用的就是RNN,實際是一個兩層的LSTM,每一個隱藏層單元為35。之所以可以這么做是因為網絡結構和連接可以使用一個變長的字符串進行描述,終止條件就是達到一定的層數。
獎勵指標(reward)使用的是驗證集上測試準確率,如下。
因為上述目標不可微分,所以需要進行近似如下:
其中m是每一個batch采樣的結構,T是需要預測的參數量,學習到的網絡結構如下:
從上面的結構可以看出,它擁有以下特點:
(1) 跨層連接非常多,說明信息融合非常重要。
(2) 單個通道數不大,這是通道使用更加高效的表現。
以上研究催生了Google Cloud AutoML,并在2018年1月被Google發布,AutoML技術的研究開始進入高潮,這幾年成為機器學習/深度學習的大熱門。
3.2 模型結構參數的優化
除了對整個模型結構進行搜索外,其實對某一些模型結構單元進行優化是更現實的策略,因為它的搜索空間更小。
基于Depthwise的分組卷積是一類非常有效的模型設計,不過每一個分組通常用同樣大小的卷積核,而Inception等多尺度結構表明不同的卷積核大小能學習到不同的特征表達,是有助于提升模型性能的,分組卷積模型MixNet[3]就使用了多尺度的卷積核提升其性能。
網絡結構如上,關于使用多少種不同尺度的卷積核,有兩種思路。第一種,就是人工設定,比如使用3x3, 5x5, 7x7, 9x9等四種卷積核,各自的通道數量可以均分。
當然更好的方式就是基于學習了,讓其對卷積核的種類和通道數量劃分進行搜索,由于搜索空間較小,可以直接采用窮舉的辦法。
類似的模型結構有很多,比如EfficientNet[4]。
?
4?AutoML與優化參數
NAS關注的是模型的結構的設計,而除了模型的結構因子外,還有許多優化相關的參數,比如激活函數,歸一化函數,優化目標等。
4.1 激活函數
早期研究人員使用sigmoid,tanh,relu等激活函數,而Google Brain研究在一系列一元函數和二元函數組成的搜索空間中進行了組合搜索實驗,搜索空間覆蓋了我們能想到的一些簡單的函數,如下:
搜索結果表明好用的激活函數都比較簡單,不會超過兩個基本函數的乘組合。搜到了一些比Relu表現更好的函數,最好的是一個這樣的函數:x · σ(βx),被稱為Swish[5],它在某個特定的參數下也和ReLU及其變種類似,如下圖。
4.2 歸一化方法
現在我們在每一個網絡層中都使用同樣的歸一化,這是最優的配置嗎?顯然不是,因為實際應用中不同的問題就有它最合適的歸一化操作。比如RNN等時序模型,有時候同一個batch內部的訓練實例長度不一(不同長度的句子),則不同的時態下需要保存不同的統計量,無法正確使用BN層,只能使用Layer Normalization。對于圖像生成以及風格遷移類應用,使用Instance Normalization更加合適。對于Batch比較小的情況下,Group Normalization是一個替換的方案。
Switchable Normalization[6]的研究便是關注如何讓不同的網絡層學習到最適合該層的歸一化機制,方法就是在包含各類歸一化方法的池中進行選擇,然后用精度進行比較擇優。
上圖是對于各類任務中,學習到的最適合該方法的BN,IN,LN,GN的比例。可以看到,對于分類,檢測任務主干模型,BN更常用,對于LSTM任務,LN一家獨大,對于Image Style Transfer任務,IN一家獨大。
4.3 優化方法
要成功訓練一個深度學習模型,正確的優化策略是非常重要的,如果使用不當結果會產生很大的差異,現如今優化方法也可以進行搜索[7]。搜索空間中包含sgd,rmsprop,adam等優化方法,這些方法都可以被表示為一個相同結構的樹,如下:
一個優化器的應用可以被表示為5個操作,分別是選擇op1,op2,兩個操作的幅度函數u1,u2,以及最后對這兩個操作的綜合。
因此,不管選擇什么優化器,完成一次優化步驟都是要做以上的5次操作,那么如果可以學習到這5次操作,就完成了一個優化器的搜索。
RNN控制器每一次選擇長度為5的子序列,如上圖。搜索空間如下,使用的時候還有一些約束,比如樹的左右兩個操作不能相同等。
經過在CIFAR10數據集上對一個2層的簡單網絡進行學習后,它們搜索到了一些有效的優化器,如下圖的PowerSign以及AddSign。
研究者們還將PowerSign和AddSign遷移到了ImageNet分類任務和谷歌機器翻譯系統,發現它們具有非常好的泛化能力,這使得該框架具有非常大的應用價值。
4.4 優化目標
一個有效的損失函數在深度學習任務中起了關鍵作用,然而損失函數都是人為設定,不僅需要有經驗的人員進行反復嘗試,也只能獲得次優的方案,如果可以讓模型自動對優化目標進行學習,將有望以更低的成本學習到更優的模型。
AM-LFS[8]將不同任務的損失函數用一種統一的形式表示,設計了一個搜索空間,利用了強化學習來自動搜索合適的損失函數的超參數,使用雙層次優化框架來同時更新損失函數參數分布和網絡結構權重參數,流程如下:
首先作者將softmax及其一些變種統一到一個框架,這里的τ和t都是函數。τ控制著樣本不均衡變換,t控制著類內與類間的度量距離比例。
因此搜索空間就可以是一個分段線性函數構成的參數空間,可以使用強化學習方法進行高效的搜索。
任務的損失包含了兩個,第一個是最小化任務的損失,第二個就是最大化模型獎勵,此處獎勵使用map等指標。具體的實現是在內層循環最小化任務的損失,外層循環最大化獎勵,前者學習模型權重,后者學習損失函數的超參數。
4.5 模型優化
雖然NAS本身具有模型優化的功能,但是當前也有許多成熟的模型優化方法,比如模型剪枝與量化。
AutoML for Model Compression(AMC)[9]是一個利用強化學習自動搜索并提高模型剪枝算法質量的框架,其完整的流程如下:
在一般的剪枝算法中,我們通常遵循一些基本策略:比如在提取低級特征的參數較少的第一層中剪掉更少的參數,對冗余性更高的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)來控制壓縮比率,完整的算法流程如下:
對于細粒度的剪枝,可以使用權重的最小幅度作為閾值,對于通道級別的壓縮,可以使用最大響應值。在谷歌Pixel-1 CPU和MobileNet模型上,AMC實現了1.95 倍的加速,批大小為1,節省了34%的內存。在英偉達Titan XP GPU 上,AMC實現了1.53 倍的加速,批大小為50。
同樣的,量化也是模型壓縮的另外一個技術,是學術界和工業界的重點研究方向,HAQ(Hardware-Aware Automated Quantization with Mixed Precision)[10]是一個自動化的混合精度量化框架,使用增強學習讓每一層都學習到了適合該層的量化位寬。
不同的網絡層有不同的冗余性,因此對于精度的要求也不同,當前已經有許多的芯片開始支持混合精度。通常來說,淺層特征提取需要更高的精度,卷積層比全連接層需要更高的精度。如果手動的去搜索每一層的位寬肯定是不現實的,因此需要采用自動搜索策略。
另一方面,一般大家使用FLOPS,模型大小等指標來評估模型壓縮的好壞,然后不同的平臺表現出來的差異可能很大,因此HAQ使用了新的指標,即芯片的延遲和功耗。
搜索的學習過程是代理Agent接收到層配置和統計信息作為觀察,然后輸出動作行為即權值和激活的位寬,其中算法細節為:
(1) 觀測值-狀態空間,一個10維變量,如下:
(2) 動作空間,使用了連續函數來決定位寬,離散的位寬如下:
(3) 反饋,利用硬件加速器來獲取延遲和能量作為反饋信號,以指導Agent滿足資源約束。
(4) 量化,直接使用線性量化方法,其中s是縮放因子,clamp是截斷函數。
(5) c的選擇是計算原始分布和量化后分布的KL散度,這也是很多框架中的做法。
(6) 獎勵函數,在所有層被量化過后,再進行1個epoch的微調,并將重訓練后的驗證精度作為獎勵信號。
使用了深度確定性策略梯度(DDPG)方法進行優化,下圖是在延遲約束下,MobileNet-V1/V2模型在邊緣端和云端設備上的實驗結果,與固定的8bit量化方法相比,分別取得了1.4倍到1.95倍的加速。
下圖分別是邊緣端和云端設備上MobileNet-V1各個網絡層的量化特點,可以發現在邊緣端設備上depthwise卷積有更少的bits,pointwise有更多,在云端則是完全相反。這是因為云設備具有更大的內存帶寬和更高的并行性,而depthwise就是內存受限的操作,pointwise則是計算受限的操作,MobileNet-V2上能觀察到同樣的特點。
AutoML是一個非常活躍而且有前途的研究和應用方向,對其中內容感興趣的同學,歡迎到有三AI知識星球的網絡結構1000變-AutoML板塊進行學習,數十期內容定能滿足你的求知欲。
了解有三AI知識星球詳情請閱讀以下文章,掃碼即可加入。
【雜談】有三AI知識星球一周年了!為什么公眾號+星球才是完整的?
參考文獻
[1] Cubuk E D, Zoph B, Mane D, et al. Autoaugment: Learning augmentation policies from data[J]. arXiv preprint arXiv:1805.09501, 2018.
[2] Zoph B, Le Q V. Neural Architecture Search with Reinforcement Learning[J]. international conference on learning representations, 2017.
[3] Tan M, Le Q V. MixNet: Mixed Depthwise Convolutional Kernels[J]. arXiv preprint arXiv:1907.09595, 2019.
[4] Tan M, Le Q V. EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks[C]. international conference on machine learning, 2019: 6105-6114.
[5]?Ramachandran P, Zoph B, Le Q V. Searching for activation functions[J]. arXiv preprint arXiv:1710.05941, 2017.
[6] Luo P, Ren J, Peng Z, et al. Differentiable learning-to-normalize via switchable normalization[J]. arXiv preprint arXiv:1806.10779, 2018.
[7] Bello I, Zoph B, Vasudevan V, et al. Neural optimizer search with reinforcement learning[C]//Proceedings of the 34th International Conference on Machine Learning-Volume 70. JMLR. org, 2017: 459-468.
[8] Li C, Lin C, Guo M, et al. AM-LFS: AutoML for Loss Function Search[J]. arXiv preprint arXiv:1905.07375, 2019.
[9]?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.
[10]?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.
總結
本次我們總結了AutoML在深度學習模型設計和優化中的核心技術,推薦了相關的學習資源,AI不惑境的文章也是最后一期了,通過這十二期文章,希望有助于大家掌握深度學習模型的使用。
有三AI秋季劃-模型優化組
如果你想系統性地學習模型優化相關的理論和實踐,并獲得持續的指導,歡迎加入有三AI秋季劃-模型優化組,系統性地學習數據使用,模型使用和調參,模型性能分析,緊湊模型設計,模型剪枝,模型量化,模型部署,NAS等內容。
模型優化組介紹和往期的一些學習內容總結請參考閱讀以下文章:
【通知】如何讓你的2020年秋招CV項目經歷更加硬核,可深入學習有三秋季劃4大領域32個方向
【總結】有三AI秋季劃模型優化組3月直播講了哪些內容,為什么每一個從事深度學習的同學都應該掌握模型優化的內容
轉載文章請后臺聯系
侵權必究
往期精選
-
【完結】深度學習CV算法工程師從入門到初級面試有多遠,大概是25篇文章的距離
-
【完結】優秀的深度學習從業者都有哪些優秀的習慣
-
【完結】給新手的12大深度學習開源框架快速入門項目
-
【完結】總結12大CNN主流模型架構設計思想
-
【知乎直播】千奇百怪的CNN網絡架構等你來
-
【AI不惑境】數據壓榨有多狠,人工智能就有多成功
-
【AI不惑境】網絡深度對深度學習模型性能有什么影響?
-
【AI不惑境】網絡的寬度如何影響深度學習模型的性能?
-
【AI不惑境】學習率和batchsize如何影響模型的性能?
-
【AI不惑境】殘差網絡的前世今生與原理
-
【AI不惑境】移動端高效網絡,卷積拆分和分組的精髓
-
【AI不惑境】深度學習中的多尺度模型設計
-
【AI不惑境】計算機視覺中注意力機制原理及其模型發展和應用
-
【AI不惑境】模型剪枝技術原理及其發展現狀和展望
-
【AI不惑境】模型量化技術原理及其發展現狀和展望
-
【AutoML】如何選擇最合適的數據增強操作
-
【AutoML】激活函數如何進行自動學習和配置
-
【AutoML】歸一化(Normalization)方法如何進行自動學習和配置
-
【AutoML】優化方法可以進行自動搜索學習嗎?
-
【AutoML】損失函數也可以進行自動搜索學習嗎?
-
【AutoML】如何使用強化學習進行模型剪枝?
-
【AutoML】強化學習如何用于模型量化?
-
【AutoML】當前有哪些可用的AutoML平臺?
總結
以上是生活随笔為你收集整理的【AI不惑境】AutoML在深度学习模型设计和优化中有哪些用处?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【AI不惑境】模型压缩中知识蒸馏技术原理
- 下一篇: 【通知】2020年有三AI-CV夏季划升