0
本文作者: 汪思穎 | 2018-09-17 18:23 |
雷鋒網(wǎng) AI 科技評論按,本文作者陳泰紅,郵箱 ahong007@yeah.net,他為雷鋒網(wǎng) AI 科技評論撰寫了關(guān)于 NAS 的獨(dú)家解讀。
1. NAS 綜述
AutoML(automated machine learning)是模型選擇、特征抽取和超參數(shù)調(diào)優(yōu)的一系列自動化方法,可以實(shí)現(xiàn)自動訓(xùn)練有價值的模型。AutoML 適用于許多類型的算法,例如隨機(jī)森林,gradient boosting machines,神經(jīng)網(wǎng)絡(luò)等。 機(jī)器學(xué)習(xí)最耗費(fèi)人力的是數(shù)據(jù)清洗和模型調(diào)參,而一般在模型設(shè)計時超參數(shù)的取值無規(guī)律可言,而將這部分過程自動化可以使機(jī)器學(xué)習(xí)變得更加容易。即使是對經(jīng)驗(yàn)豐富的機(jī)器學(xué)習(xí)從業(yè)者而言,這一自動化過程也可以加快速度。
Deep learning 實(shí)現(xiàn)端到端的的特征提取,相對于手工提取特征是一個巨大的進(jìn)步,同時人工設(shè)計的神經(jīng)網(wǎng)絡(luò)架構(gòu)提高了神經(jīng)網(wǎng)絡(luò)的復(fù)雜度。
隨著技術(shù)的發(fā)展,Neural Architecture Search (NAS) 實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)可以設(shè)計神經(jīng)網(wǎng)絡(luò),代表機(jī)器學(xué)習(xí)的未來方向。NAS 是 AutoML 的子領(lǐng)域,在超參數(shù)優(yōu)化和元學(xué)習(xí)等領(lǐng)域高度重疊。NAS 根據(jù)維度可分為三類:搜索空間、搜索策略和性能評估策略。(本文僅總結(jié) NAS 在 CV 領(lǐng)域的應(yīng)用,NLP 的應(yīng)用將另寫綜述)。
搜索空間
搜索空間原則上定義了網(wǎng)絡(luò)架構(gòu)。對于一個任務(wù),結(jié)合相關(guān)屬性的先驗(yàn)知識可以縮小搜索空間的大小并簡化搜索。但是同時也引入了人類偏見,這可能妨礙發(fā)現(xiàn)超越當(dāng)前人類知識的新穎架構(gòu)模塊。
搜索策略
搜索策略定義了使用怎樣的算法可以快速、準(zhǔn)確找到最優(yōu)的網(wǎng)絡(luò)結(jié)構(gòu)參數(shù)配置。
性能評估策略
因?yàn)樯疃葘W(xué)習(xí)模型的效果非常依賴于訓(xùn)練數(shù)據(jù)的規(guī)模,通常意義上的訓(xùn)練集、測試集和驗(yàn)證集規(guī)模實(shí)現(xiàn)驗(yàn)證模型的性能會非常耗時,所以需要一些策略去做近似的評估。
圖 1 網(wǎng)絡(luò)架構(gòu)搜索方法
1.1 搜索空間
搜索空間,顧名思義,代表一組可供搜索的神經(jīng)網(wǎng)絡(luò)架構(gòu)。
搜索空間根據(jù)網(wǎng)絡(luò)類型可以劃分為鏈?zhǔn)郊軜?gòu)空間、多分支架構(gòu)空間、cell/block 構(gòu)建的搜索空間。根據(jù)搜索空間覆蓋范圍可分為 macro(對整個網(wǎng)絡(luò)架構(gòu)進(jìn)行搜索)和 micro(僅搜索 cell,根據(jù) cell 擴(kuò)展搜索空間)。
1. 第一種搜索空間是鏈?zhǔn)郊軜?gòu)空間(圖 2 左圖所示)。鏈?zhǔn)郊軜?gòu)空間的每一層輸出都是下一層的輸入。搜索空間包括以下參數(shù):
(1)網(wǎng)絡(luò)最大層數(shù) n。(2)每一層的運(yùn)算類型:池化、連接、卷積(depthwise separable convolutions,dilated convolutions、deconvolution)等類型。(3)運(yùn)算相關(guān)的超參數(shù):濾波器的大小、個數(shù)、 strides 等。(4)激活函數(shù):tanh,relu,identity,sigmoid 等。
圖 2 鏈?zhǔn)郊軜?gòu)空間(左圖)與多分支架構(gòu)空間(有圖)
2. VGG19 等模型已經(jīng)證明直筒的鏈?zhǔn)浇Y(jié)構(gòu)容易造成梯度彌散,卷積網(wǎng)絡(luò)無法使層數(shù)更深。ResNet 和 DenseNet 等引入的跳躍連接和密集連接,使得更深的網(wǎng)絡(luò)成為可能。目前很多論文的實(shí)驗(yàn)數(shù)據(jù)也證實(shí)多分支架構(gòu)空間可以實(shí)現(xiàn)更高精度(代價是搜索空間呈指數(shù)級別增加)。圖 2 右圖所示為多分支架構(gòu)空間連接示意圖。
3. 基于基本的 cell/block 構(gòu)建的搜索空間。
很多神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)雖然很深,但會有基本的 cell/block,通過改變 cell/block 堆疊結(jié)構(gòu),一方面可以減少優(yōu)化變量數(shù)目,另一方面相同的 cell/ block 可以在不同任務(wù)之間進(jìn)行遷移。BlockQNN[2] 結(jié)合 Inception blocks 和 residue blocks,設(shè)計 block 模塊,通過堆疊 block 設(shè)計搜索空間。Zoph et al[3] 設(shè)計兩類 cells:normal cell 和 reduction cell (normal cell 不改變輸入 feature map 的大小的卷積,而 reduction cell 將輸入 feature map 的長寬各減少為原來的一半的卷積,通過增加 stride 的大小來降低 size),通過構(gòu)建重復(fù)模塊(cells)的深度堆疊結(jié)構(gòu)。這個堆疊結(jié)構(gòu)是固定的,但其中各個模塊的結(jié)構(gòu)可以改變。
圖 3 基于 cell/block 構(gòu)建的搜索空間
Cell 作為基本單元,也可以固定不變。PNAS[9] 學(xué)習(xí)的是單一一種 cell 類型,而沒有區(qū)分 Normal cell 和 Reduction cell.
1.2 搜索策略
搜索算法通常是一個迭代過程,定義了使用怎樣的算法可以快速、準(zhǔn)確找到最優(yōu)的網(wǎng)絡(luò)結(jié)構(gòu)參數(shù)配置。常見的搜索方法包括:隨機(jī)搜索、貝葉斯優(yōu)化、進(jìn)化算法、強(qiáng)化學(xué)習(xí)、基于梯度的算法。其中強(qiáng)化學(xué)習(xí)和進(jìn)化學(xué)習(xí)是主流算法,也是本章節(jié)重點(diǎn)介紹對象。
在搜索過程的每個步驟或迭代中,從搜索空間產(chǎn)生“樣本”形成一個神經(jīng)網(wǎng)絡(luò),稱為“子網(wǎng)絡(luò)”。所有子網(wǎng)絡(luò)都在訓(xùn)練數(shù)據(jù)集上進(jìn)行訓(xùn)練,然后將它們在驗(yàn)證數(shù)據(jù)集上的準(zhǔn)確性視為目標(biāo)(或作為強(qiáng)化學(xué)習(xí)中的獎勵)進(jìn)行優(yōu)化。搜索算法的目標(biāo)是找到優(yōu)化目標(biāo)的最佳子網(wǎng)絡(luò),例如最小化驗(yàn)證損失或最大化獎勵。
基于強(qiáng)化學(xué)習(xí)的搜索方法
基于強(qiáng)化學(xué)習(xí)(reinforcement learning ,RL)的方法已經(jīng)成為 NAS 的主流方法[4]。RL 有四個基元:agent, action,environment 和 reward. 強(qiáng)化學(xué)習(xí)是通過獎勵或懲罰(reward)來學(xué)習(xí)怎樣選擇能產(chǎn)生最大積累獎勵的行動(action)的算法。
NAS 的核心思想是通過一個 controller RNN 在搜索空間(search space)中得到一個子網(wǎng)絡(luò)結(jié)構(gòu)(child network),然后用這個子網(wǎng)絡(luò)結(jié)構(gòu)在數(shù)據(jù)集上訓(xùn)練,在驗(yàn)證集上測試得到準(zhǔn)確率,再將這個準(zhǔn)確率回傳給 controller,controller 繼續(xù)優(yōu)化得到另一個網(wǎng)絡(luò)結(jié)構(gòu),如此反復(fù)進(jìn)行直到得到最佳結(jié)果,整個過程稱為 Neural Architecture Search。
基于 NAS 的 RL 算法主要區(qū)別在于:
(a) 如何定義行動空間(在新的空間選擇配置還是在修訂已經(jīng)存在的網(wǎng)絡(luò))
(b) 如何更新行動策略。Zoph et al 首先使用梯度策略更新策略 [4],并在其后的工作中使用 proximal policy optimization。Baker et al. 使用 Q-learning 更新行動策略。
在探索高維搜索空間時,基于 RL 的搜索成本非常高。NAS[4] 在使用 800 塊 GPU 情況下耗時 28 天。其后續(xù)工作 [3] 使用 450 塊 GPU 耗時 4 天生成簡單的搜索空間。
基于進(jìn)化學(xué)習(xí)的搜索方法
進(jìn)化學(xué)習(xí)(Evolutionary algorithms ,EA)為了達(dá)到自動尋找高性能的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),需要進(jìn)化一個模型簇(population)。每一個模型,也就是個體(individual),都是一個訓(xùn)練過的結(jié)構(gòu)。模型在單個校驗(yàn)數(shù)據(jù)集(validation dataset)上的準(zhǔn)確度就是度量個體質(zhì)量或適應(yīng)性的指標(biāo)。
在一個進(jìn)化過程中[7],工作者(worker)隨機(jī)從模型簇中選出兩個個體模型;根據(jù)優(yōu)勝劣汰對模型進(jìn)行識別,不合適的模型會立刻從模型簇中被剔除,即代表該模型在此次進(jìn)化中的消亡;而更優(yōu)的模型則成為母體(parent model),進(jìn)行繁殖;通過這一過程,工作者實(shí)際上是創(chuàng)造了一個母體的副本,并讓該副本隨機(jī)發(fā)生變異。研究人員把這一修改過的副本稱為子代(child);子代創(chuàng)造出來后,經(jīng)過訓(xùn)練并在校驗(yàn)集上對它進(jìn)行評估之后,把子代放回到模型簇中。此時,該子代則成為母體繼續(xù)進(jìn)行上述幾個步驟的進(jìn)化。
簡言之,該進(jìn)化算法就是在隨機(jī)選出的個體中擇其優(yōu),因此該方法也屬于聯(lián)賽選擇算法(tournament selection)的一種。
另外,如無其他說明,模型簇一般能容納 1000 個個體,工作者的數(shù)量一般是個體數(shù)量的 1/4,而消亡個體的目錄會被刪除,以保證整個算法能長時間在有限空間中運(yùn)行。
進(jìn)化學(xué)習(xí)的一個缺點(diǎn)是進(jìn)化過程通常不穩(wěn)定,最終的模型簇質(zhì)量取決于隨機(jī)變異。Chen et al[8] 提出通過 RL 控制器確定變異替代隨機(jī)變異,穩(wěn)定搜索過程。
Chenxi Liu et al.[9] 使用了基于序列模型的優(yōu)化(SMBO)策略,按復(fù)雜度逐漸增大順序搜索架構(gòu),同時學(xué)習(xí)一個用于引導(dǎo)該搜索的代理函數(shù)(surrogate function),類似于 A* 搜索。
1.3 性能評估策略
性能評估策略是實(shí)現(xiàn)搜索加速的過程。基于強(qiáng)化學(xué)習(xí)、進(jìn)化學(xué)習(xí)等搜索策略,為了引導(dǎo)搜索空間,每個子網(wǎng)絡(luò)都需要訓(xùn)練和評估。但是訓(xùn)練每個子網(wǎng)絡(luò)需要巨大的資源消耗(比如 NAS[4] 需要 2000 GPU*天)。通常加速 NAS 的方法是通過訓(xùn)練后再查找近似度量的方式(例如減少訓(xùn)練 epochs,簡化評估數(shù)據(jù)集 [3][4]、使用低分辨率圖像、每一卷積層使用更少的濾波器)。本章節(jié)介紹兩種更優(yōu)的類型:(a) 代理度量 improved proxy;(b) 權(quán)值共享 weight-sharing。
1. 使用代理度量時,子網(wǎng)絡(luò)之間的相對排名需要保持與最終模型準(zhǔn)確率相關(guān)。Zhong et al.[10] 提出 FLOPS、子模型的 model size 與最終模型準(zhǔn)確率負(fù)相關(guān),介紹一種應(yīng)用于獎勵計算的修正函數(shù),子網(wǎng)絡(luò)的準(zhǔn)確性可以通過提前訓(xùn)練停止獲得,彌合代理度量和真實(shí)準(zhǔn)確率的差距。有些算法提出通過預(yù)測神經(jīng)網(wǎng)絡(luò)模型的準(zhǔn)確率、學(xué)習(xí)曲線、驗(yàn)證曲線等來改進(jìn)代理度量,預(yù)測準(zhǔn)確率低/學(xué)習(xí)曲線差的子網(wǎng)絡(luò)暫停訓(xùn)練或直接放棄。
2. 權(quán)值共享。
子網(wǎng)絡(luò)直接繼承已經(jīng)訓(xùn)練好的模型權(quán)重參數(shù),可以顯著降低模型的運(yùn)算量 [7]。One-Shot 架構(gòu)搜索 [11] 將所有架構(gòu)視作一個 one-shot 模型(超圖)的子圖,子圖之間通過超圖的邊來共享權(quán)重。一些論文直接在模型基礎(chǔ)上添加卷積層或插入跳躍連接,參數(shù)權(quán)重可以直接復(fù)用,減少模型的運(yùn)算量。
1.4 Multi-Objective NAS
以 Google 的 NAS 為基礎(chǔ),很多模型專注于優(yōu)化模型的準(zhǔn)確率而忽視底層硬件和設(shè)備,例如工作站,嵌入式設(shè)備和移動終端具有不同的計算資源和環(huán)境,僅考慮準(zhǔn)確率高的模型難以在移動終端部署。
圖 4 基于單目標(biāo) VS 多目標(biāo)神經(jīng)網(wǎng)絡(luò)架構(gòu)搜索算法對比
MONAS/ MnasNet/DPP-Net[12][13][14] 等模型提出基于移動端的多目標(biāo)神經(jīng)網(wǎng)絡(luò)搜索算法,評價指標(biāo)從準(zhǔn)確率擴(kuò)展到功耗、推斷延時、計算強(qiáng)度、內(nèi)存占用、FLOPs 等指標(biāo)。如圖 4 所示單目標(biāo)和多目標(biāo)神經(jīng)網(wǎng)絡(luò)架構(gòu)搜索算法對比。
多目標(biāo)神經(jīng)網(wǎng)絡(luò)架構(gòu)搜索采用帕雷托最優(yōu)尋找最佳解決方案。帕雷托最優(yōu)來源于經(jīng)濟(jì)學(xué)的概念,指資源分配的一種理想狀態(tài)。延伸到工程,解決方案在不降低其他目標(biāo)的前提下,任何目標(biāo)都能不能得到改善,則認(rèn)為是帕雷托最優(yōu)的。
多目標(biāo) NAS 可以分為兩類:基于 RL 和基于 EA 的算法。MnasNet/ MONAS 是基于 RL 的多目標(biāo)算法。本人在知乎寫過一篇叫基于 MnasNet 的閱讀筆記,詳情可參閱:https://zhuanlan.zhihu.com/p/42474017
NAS 局限性:
NAS 的搜索空間有很大的局限性,目前 NAS 算法仍然使用手工設(shè)計的結(jié)構(gòu)和 blocks,NAS 僅僅是將這些 blocks 堆疊。NAS 還不能自行設(shè)計網(wǎng)絡(luò)架構(gòu)。NAS 的一個發(fā)展方向是更廣泛的搜索空間,尋找真正有效率的架構(gòu),當(dāng)然這也對搜索策略和性能評估策略提出更高的要求。
2. AutoML概述
構(gòu)建一個典型的機(jī)器學(xué)習(xí)項(xiàng)目,一般分成以下步驟:收集原始數(shù)據(jù)(標(biāo)注數(shù)據(jù))、清洗數(shù)據(jù)、特征工程、模型構(gòu)建、超參數(shù)調(diào)優(yōu)、模型驗(yàn)證和模型部署。整個過程中,模型構(gòu)建最能體現(xiàn)創(chuàng)造力,而最耗時的,要數(shù)特征工程和超參數(shù)調(diào)優(yōu)。
圖 5 AutoML 開源框架全景圖
AutoML 框架能幫助算法工程師減輕負(fù)擔(dān),降低特征工程和超參數(shù)調(diào)優(yōu)的工作量,NAS 可以完成模型的構(gòu)建,基于 AutoML 的一攬子解決方案(如圖 5 包含 AutoML 開源框架)。
AutoML 抽象所有 deep learning 的復(fù)雜過程,所需要的僅僅是數(shù)據(jù)。目前互聯(lián)網(wǎng)巨頭已經(jīng)在很多行業(yè)提供 AutoML 服務(wù),如微軟的 CustomVision.AI、谷歌 Cloud AutoML、中科院的 BDA 系統(tǒng)、阿里 PAI 等。這些平臺僅僅需要上傳數(shù)據(jù),AutoML 實(shí)現(xiàn)深度學(xué)習(xí)的訓(xùn)練、調(diào)優(yōu)、云服務(wù)等,如圖 6 所示(當(dāng)然現(xiàn)在還是半自動化的人工參與狀態(tài),全自動化的 AutoML 是未來發(fā)展方向)。
圖 6 AutoML 工作流程圖
阿里的 PAI Studio 匯集了阿里集團(tuán)大量優(yōu)質(zhì)分布式算法,包括數(shù)據(jù)處理、特征工程、機(jī)器學(xué)習(xí)算法、文本算法等,可高效完成海量、億級維度數(shù)據(jù)的復(fù)雜計算,給集團(tuán)業(yè)務(wù)帶來更為精準(zhǔn)的洞察力。
AutoML Vision 是 Cloud AutoML 這個大項(xiàng)目推出的第一項(xiàng)服務(wù),提供自定義圖像識別系統(tǒng)自動開發(fā)服務(wù)。根據(jù)谷歌介紹,即使是沒有機(jī)器學(xué)習(xí)專業(yè)知識的的小白,只需了解模型基本概念,就能借助這項(xiàng)服務(wù)輕松搭建定制化的圖像識別模型。只需在系統(tǒng)中上傳自己的標(biāo)簽數(shù)據(jù),就能得到一個訓(xùn)練好的機(jī)器學(xué)習(xí)模型。整個過程,從導(dǎo)入數(shù)據(jù)到標(biāo)記到模型訓(xùn)練,都可以通過拖放式界面完成。除了圖像識別,谷歌未來還計劃將 AutoML 服務(wù)拓展到翻譯、視頻和自然語言處理等領(lǐng)域。目前 Cloud AutoML 的費(fèi)用是 20 美金/小時,相當(dāng)于國內(nèi)算法工程師的時薪。
機(jī)器學(xué)習(xí)的平臺化降低了 AI 產(chǎn)品的使用成本,最終會降低機(jī)器學(xué)習(xí)的準(zhǔn)入門檻,但提高了個人的職業(yè)門檻。隨著谷歌、亞馬遜、微軟、BAT 等大廠對 AI 的持續(xù)投入,調(diào)參效果和業(yè)務(wù)范圍會越來越廣。筆者所在的項(xiàng)目組經(jīng)過 6 個月努力發(fā)版上線一個應(yīng)用,降低了 60% 的人力成本,自動化效率提高到 80%。工業(yè)時間業(yè)務(wù)不止模型調(diào)參那么簡單,需要結(jié)合很多圖像數(shù)據(jù)的先驗(yàn)知識,隨著 NAS 的發(fā)展,也許不能取代 100% 的人力成本,但是在項(xiàng)目團(tuán)隊(duì)中解放 50% 以上的算法工程師還是可行的。
以上僅為個人閱讀論文后的理解、總結(jié)和思考。觀點(diǎn)難免偏差,望讀者以懷疑批判態(tài)度閱讀,歡迎交流指正。
3. 參考文獻(xiàn)
[1] Thomas. Elsken,Jan Hendrik.Metzen: Neural Architecture Search: A Survey .arXiv preprint arXiv: 1808.05377 (2018)
[2] Zhao Zhong, Zichen Yang, Boyang Deng:BlockQNN: Efficient Block-wise Neural Network Architecture Generation .arXiv preprint arXiv: 1808.05584 (2018)
[3] Zoph B, Vasudevan V, Shlens J, Le QV .Learning Transferable Architectures for Scalable Image Recognition.arXiv preprint arXiv: 1707.07012 (2017)
[4] Barret Zoph and Quoc V Le. Neural architecture search with reinforcement learning. ICLR’17,2016.
[5] Han Cai, Tianyao Chen, Weinan Zhang, Yong Yu, and Jun Wang. Efficient architecture search by network transformation. AAAI’18, 2017.
[6] Chenxi Liu, Barret Zoph, Jonathon Shlens, Wei Hua, Li-Jia Li, Li Fei-Fei, Alan Yuille, Jonathan Huang, and Kevin Murphy. Progressive neural architecture search. arXiv preprint arXiv:1712.00559, 2017.
[7] Esteban Real ,Sherry Moore,Andrew Selle , Saurabh Saxena .Large-Scale Evolution of Image Classifiers .arXiv preprint arXiv:1703.01041
[8] Yukang Chen, Qian Zhang, Chang Huang, Lisen Mu, Gaofeng Meng, and Xinggang Wang. Reinforced evolutionary neural architecture search. arXiv preprint arXiv:1808.00193, 2018.
[9] Chenxi Liu, Barret Zoph, Jonathon Shlens, Wei Hua, Li-Jia Li, Li Fei-Fei, Alan Yuille, Jonathan Huang, and Kevin Murphy. Progressive neural architecture search. arXiv preprint arXiv:1712.00559, 2017.
[10] Zhao Zhong, Junjie Yan, and Cheng-Lin Liu. Practical network blocks design with q-learning. AAAI’18, 2017.
[11] Andrew Brock, Theodore Lim, James M Ritchie, and Nick Weston. Smash: one-shot model architecture search through hypernetworks. ICLR’18, 2017.
[12] Chi-Hung Hsu, Shu-Huan Chang, Da-Cheng Juan, Jia-Yu Pan, Yu-Ting Chen, Wei Wei, and Shih-Chieh Chang. Monas: Multi-objective neural architecture search using reinforcement learning. arXiv preprint arXiv:1806.10332,2018.
[13] Jin-Dong Dong, An-Chieh Cheng, Da-Cheng Juan, Wei Wei, and Min Sun. Dpp-net: Device-aware progressive search for pareto-optimal neural architectures. arXiv preprint arXiv:1806.08198, 2018.
[14] Mingxing Tan, Bo Chen, Ruoming Pang, Vijay Vasudevan, and Quoc V Le. Mnasnet: Platform-aware neural architecture search for mobile. arXiv preprint arXiv:1807.11626, 2018.
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。