一文讲解自动机器学习(AutoML)!
?Datawhale?
作者:瞿曉陽,AutoML書籍作者
寄語:讓計算機自己去學習和訓練規(guī)則,是否能達到更好的效果呢?自動機器學習就是答案,也就是所謂“AI的AI”,讓AI去學習AI。
隨著深度神經(jīng)網(wǎng)絡的不斷發(fā)展,各種模型和新穎模塊的不斷發(fā)明利用,人們逐漸意識到開發(fā)一種新的神經(jīng)網(wǎng)絡結(jié)構(gòu)越來越費時費力,為什么不讓機器自己在不斷的學習過程中創(chuàng)造出新的神經(jīng)網(wǎng)絡呢?
正是出于這個構(gòu)思,2017年Google推出了AutoML,一個能自主設計深度神經(jīng)網(wǎng)絡的AI網(wǎng)絡。
自此,人工智能又有了更進一步的發(fā)展,人們開始探索如何利用已有的機器學習知識和神經(jīng)網(wǎng)絡框架來讓人工智能自主搭建適合業(yè)務場景的網(wǎng)絡,人工智能的另一扇大門被打開。
深度學習vs自動化深度學習
隨著深度神經(jīng)網(wǎng)絡的廣泛應用和不斷發(fā)展,越來越強大的網(wǎng)絡模型被構(gòu)建,從AlexNet,到VGGNet,GoogleNet以及ResNet。
雖然這些模型足夠靈活,但人工神經(jīng)網(wǎng)絡結(jié)構(gòu)仍然需要大量的專業(yè)知識并且需要充足的時間,而且調(diào)參對于深度模型來說也是一項非常痛苦的事情,眾多的超參數(shù)和網(wǎng)絡結(jié)構(gòu)參數(shù)會產(chǎn)生爆炸性的組合。
是否有可能使這一過程自動化,讓每一個人,甚至是不了解機器學習的人可以輕松地將機器學習應用于所面臨的問題,自動化深度學習(AutoDL)就是答案。
如圖1所示,是現(xiàn)在的深度學習方法與自動化深度學習的對比圖,自動化深度學習的目標是通過超參數(shù)優(yōu)化的方法讓機器學會自動設計網(wǎng)絡及調(diào)參優(yōu)化。
圖1:傳統(tǒng)深度學習與AutoDL比較
什么是神經(jīng)架構(gòu)搜索(NAS)
神經(jīng)架構(gòu)搜索(NAS)是一種針對特定數(shù)據(jù)集從頭開始自動設計性能良好的模型的技術(shù),NAS技術(shù)與超參數(shù)優(yōu)化所解決的問題相同:在搜索空間中找到對目標任務表現(xiàn)良好的網(wǎng)絡結(jié)構(gòu)。
NAS主要由三個基本問題組成,分別是搜索空間、優(yōu)化方法、以及評估方法。
搜索空間針對目標任務定義了一組可能的神經(jīng)網(wǎng)絡結(jié)構(gòu)。
優(yōu)化方法確定如何探索搜索空間以找到好的架構(gòu)。
評估方法評估通過優(yōu)化方法考慮的每種網(wǎng)絡結(jié)構(gòu)的性能。
由于神經(jīng)網(wǎng)絡的結(jié)構(gòu)和連接通常可以由可變長度的字符串指定,在實際問題中,根據(jù)特定數(shù)據(jù)集生成指定的“子網(wǎng)絡”,通過訓練得到驗證集的準確性。
圖2:NAS組件
搜索空間
如其名,就是可供搜索的一個網(wǎng)絡結(jié)構(gòu)集合,它的數(shù)字表示為:
網(wǎng)絡的結(jié)構(gòu)(如:神經(jīng)網(wǎng)絡的深度,即隱藏層個數(shù),和特定的隱藏層寬度)
配置(如:操作/網(wǎng)絡間的鏈接類型,核的大小,過濾器的數(shù)量)
因此,給定搜索空間,可以將其中的神經(jīng)網(wǎng)絡結(jié)構(gòu)編碼成該空間下的表示。這種搜索空間被稱為marco(宏)搜索空間。
好的搜索空間為好的搜索結(jié)果提供可能性,搜索空間的設計不斷發(fā)展,除了傳統(tǒng)的鏈式結(jié)構(gòu)外,“多分支”結(jié)構(gòu)也開始起著越來越重要的作用,啟發(fā)于ResNet和DenseNet提出的跳躍連接和密集連接,這些跳躍連接也已經(jīng)被加入到搜索空間的定義中。
另一個趨勢是設計一個只包含一個基本單元(cell)搜索空間,被用作整個網(wǎng)絡中的block(如卷積塊)的構(gòu)建。這類搜索空間被稱為micro(微)搜索空間,其中搜索成本和復雜性可以被顯著的降低。
除了減小搜索復雜度外,僅僅通過改變單元(cell)堆疊的數(shù)量,可以很容易地把找到的最好的block的設計推廣到其他任務。
搜索算法
搜索算法是一個迭代過程,用于確定以何種規(guī)則來探索搜索空間。
在搜索過程的每個步驟或迭代中,一個來自于搜索空間的樣本會被生成,即子網(wǎng)絡(child network)。所有的子網(wǎng)絡在訓練集上被訓練,在驗證集上的準確率作為目標被優(yōu)化(或者是強化學習中的獎勵)。
搜索算法的目的是找到最佳子網(wǎng)絡,例如最小化驗證集損失或最大化獎勵。主流的NAS搜索策略大致可以分為強化學習、進化算法和可微分的梯度下降算法。
1. 基于強化學習的方法
強化學習有三個基本要素:智能體(Agent)、環(huán)境(Environment)和獎勵(Reward),智能體以 “試錯”的方式進行學習,通過與環(huán)境交互獲得獎勵來指導行為。智能體和環(huán)境之間的交互可以被視為順序決策過程:在每個時間t,Agent在動作集合中選擇動作與環(huán)境交互并接收獎勵。
圖3:?強化學習中智能體與環(huán)境的交互過程
神經(jīng)架構(gòu)自動搜索中,強化學習把架構(gòu)的生成看成一個智能體(agent)在選擇動作(action)的過程,通過在測試集上測試網(wǎng)絡性能來獲取獎勵值(reward),從而指導架構(gòu)的生成。
與傳統(tǒng)的強化學習問題略有不同的是構(gòu)建了一個RNN控制器,通過迭代的方式來更新控制器從而生成合適的架構(gòu)。
圖4:基于強化學習的網(wǎng)絡架構(gòu)搜索示意圖
2. 基于進化算法的方法
基于進化算法的神經(jīng)網(wǎng)絡結(jié)構(gòu)搜索,在演化步驟中,把子模型作為種群來進化。群體中的每個模型都是訓練過的網(wǎng)絡,并被視為個體,模型在驗證集上的表現(xiàn)(例如,準確度)作為每個個體的質(zhì)量好壞。基于進化算法神經(jīng)架構(gòu)搜索的通用流程如下:
初始化操作,對現(xiàn)有的各個個體進行編碼,把這些個體編碼成種群。
選擇操作,從種群中根據(jù)適應度挑選出優(yōu)秀的個體。
繁殖操作,分為兩種:有性繁殖操作和無性繁殖操作,無性繁殖的操作包括變異操作,有性繁殖包括交叉操作或者組合操作。
網(wǎng)絡訓練操作,對上一步繁殖操作得到的所有個體神經(jīng)網(wǎng)絡進行訓練,訓練到收斂為止。
適應度計算操作,使用指定的驗證集對每個已訓練的網(wǎng)絡計算驗證準確率,把驗證準確率作為適應度。
具體流程如下圖所示:
圖5:? 基于進化算法的神經(jīng)架構(gòu)搜索通用流程
3. 基于可微分架構(gòu)搜索的方法
可微分架構(gòu)搜索方法很多種,其中比較出名的是卡內(nèi)基梅隆大學提出的
DARTS(DifferentiableArchitecture Search)。
與傳統(tǒng)的在離散的和不可微的搜索空間尚采用進化或強化學習搜索結(jié)構(gòu)的方法不同,該方法是基于將結(jié)構(gòu)表示的松弛化(relaxation),允許使用梯度下降來解決架構(gòu)搜索的問題,所以效率可以比之前不可微的方法快幾個數(shù)量級。
簡單來說就是給操作(operations)的每個連接都賦一個權(quán)值alpha,優(yōu)化的目的是為了通過梯度下降優(yōu)化alpha矩陣,根據(jù)alpha的大小來確定連接方式。
神經(jīng)網(wǎng)絡原有的權(quán)重稱為矩陣,在訓練集上固定alpha矩陣的值,然后梯度下降矩陣的值,再驗證集上固定矩陣的值,然后梯度下降alpha的值,循環(huán)往復直到這兩個值都比較理想。
圖6:DARTS搜索空間
加速方案
無論是基于強化學習還是進化算法的搜索,子網(wǎng)絡都要被訓練和評估,以指導搜索過程。但是從頭開始訓練每個自網(wǎng)絡需要超大的資源和時間。所以NAS的加速方案被提出,主要代表方案是改進代理模型和權(quán)值共享。
1.?改進代理(Improve proxy)
很明顯代理模型的引入會帶有誤差,研究證明子網(wǎng)絡的FLOPs(每秒計算的浮點數(shù))和模型大小與最終準確度呈負相關(guān),因此引入了一種應用于獎勵計算的校正函數(shù),通過早期停止獲得子網(wǎng)絡的精度,彌合代理與真實準確性之間的差距。
根據(jù)這一想法,研究者們提出了幾種通過“預測”神經(jīng)架構(gòu)的精度來改進代理度量的方法,預計精確度較差的子網(wǎng)絡將被暫停訓練或直接放棄。以下是三種預測神經(jīng)架構(gòu)搜索的方法:
根據(jù)子網(wǎng)絡的學習曲線預測神經(jīng)架構(gòu)的精度。
回歸模型。使用基于網(wǎng)絡設置和驗證曲線的特征來預測部分訓練模型的最終性能。
訓練代理模型,基于progressively architectural properties預測子網(wǎng)絡的準確性。
2. 權(quán)值共享(Weight sharing)
在神經(jīng)網(wǎng)絡的搜索和訓練過程中,涉及到很多權(quán)值和超參數(shù),權(quán)值共享可以實現(xiàn)加速,在這里列舉幾個權(quán)值共享的經(jīng)典方法:
在進化過程中,允許子網(wǎng)絡繼承父本的權(quán)重,而不是從頭訓練每個子模型。使用One shot 模型實現(xiàn)共享。
設計帶有輔助超網(wǎng)絡的“主”模型,以生成以模型架構(gòu)為條件的主模型的權(quán)重。從超網(wǎng)絡代表的分布中采樣的權(quán)重。
使用one-shot模型,主要有兩種方法:
第一種是訓練表示各種候選結(jié)構(gòu)的one-shot模型,然后使用預訓練的one-shot模型權(quán)重在驗證集上隨機評估這些候選結(jié)構(gòu)。
另一種是使用包含整個搜索空間的one-shot模型訓練所有權(quán)重,同時,使用梯度下降來優(yōu)化候選結(jié)構(gòu)的分布。
通過網(wǎng)絡轉(zhuǎn)換/態(tài)射來探索搜索空間,它使用諸如插入層或添加跳過連接之類的操作將訓練好的神經(jīng)網(wǎng)絡修改為新的結(jié)構(gòu)。由于網(wǎng)絡轉(zhuǎn)換/態(tài)射從現(xiàn)有的訓練網(wǎng)絡開始,因此重用權(quán)重并且僅需為數(shù)不多的訓練迭代來完成新的結(jié)構(gòu)的訓練。
圖7:one-shot結(jié)構(gòu)圖,實現(xiàn)連接無法刪除而虛線連接可以刪除
神經(jīng)網(wǎng)絡架構(gòu)搜索的快速實現(xiàn)
使用開源的開源自動機器學習項目例如微軟的NNI和亞馬遜的AutoGluon可以快速實現(xiàn)常用NAS算法。下面簡單介紹使用AutoGluon在10分鐘內(nèi)快速實現(xiàn)ENAS的過程:
1. 定義基礎Block結(jié)構(gòu)
2. 定義ENAS單元結(jié)構(gòu)
3. 定義超網(wǎng)絡
4. 構(gòu)造ENAS_Scheduler開始訓練
5. 訓練結(jié)束可以查看搜索到的最佳結(jié)構(gòu)
總結(jié)
傳統(tǒng)的人工智能旨在使用機器幫助人類完成特定的任務,隨著人工智能的發(fā)展,在計算機領域衍生出了機器學習,機器學習旨在通過計算機程序完成對數(shù)據(jù)的分析,從而得到對世界上某件事情的預測并做出決定。當機器學習不斷發(fā)展,其復雜程度也不斷增加,完全依靠人為對計算機進行規(guī)定,使其按照人為設定的規(guī)則運行時,耗費了大量的人力資源。
如果讓計算機自己去學習和訓練規(guī)則,是否能達到更好的效果呢?自動機器學習就是答案,也就是所謂“AI的AI”,讓AI去學習AI,從而減少人工的參與,讓機器完成更復雜的工作,掀起下一代人工智能的浪潮。
本文摘編自《深入理解AutoML和AutoDL》,經(jīng)出版方授權(quán)發(fā)布。作為國內(nèi)首本系統(tǒng)介紹AutoML的中文書籍,該書提供了大量AutoML和AutoDL的啟發(fā)性思路和理解角度,確實是一本AutoML入門的好書。
往期精彩回顧適合初學者入門人工智能的路線及資料下載機器學習在線手冊深度學習在線手冊AI基礎下載(pdf更新到25集)本站qq群1003271085,加入微信群請回復“加群”獲取一折本站知識星球優(yōu)惠券,復制鏈接直接打開:https://t.zsxq.com/yFQV7am喜歡文章,點個在看
總結(jié)
以上是生活随笔為你收集整理的一文讲解自动机器学习(AutoML)!的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 送给即将毕业的大学生:乔布斯在斯坦福的大
- 下一篇: 推荐五篇论文| 轻量级的Transfor