AutoML
全稱是automated machine learning
萌焰,下面有一段AutoML
不是什么的描述:
AutoML is not automated data science. While there is undoubtedly overlap, machine learning is but one of many tools in the data science toolkit, and its use does not actually factor in to all data science tasks. For example, if prediction will be part of a given data science task, machine learning will be a useful component; however, machine learning may not play in to a descriptive analytics task at all.
大至意思是說不要迷信AutoML
婴噩,它只是數(shù)據(jù)科學(xué)眾多工具中的一種丸氛,而且它也只能解決眾多數(shù)據(jù)科學(xué)任務(wù)中的某些任務(wù)。
AutoML
可以做如下這些事情:
預(yù)處理(preprocess)并清理數(shù)據(jù)
選擇并構(gòu)造合適的特征(features)
從現(xiàn)有的模型部件中選擇合適的模型結(jié)構(gòu)(model family)奋献,類似堆積木
優(yōu)化模型超參數(shù)(hyperparameters)
后處理(postprocess)機(jī)器學(xué)習(xí)模型
嚴(yán)格分析模型輸出結(jié)果
從AutoML
可以做的這些事情可以看出,至少針對一些特定的場景,它是能夠做到全自動的寸癌,即數(shù)據(jù)清洗、特征選擇弱贼、建模蒸苇、超參優(yōu)化、模型評估等吮旅。我們可能關(guān)鍵是要知道automl適合哪些場景溪烤,把它做成我們AI的亮點,而不是所有。
在描述本文的AutoML
之前檬嘀,需要看幾個概念莺葫,即人工智能、機(jī)器學(xué)習(xí)枪眉、深度深度之間的關(guān)系捺檬,下圖是從網(wǎng)上找到的:
簡單的說機(jī)器學(xué)習(xí)是實現(xiàn)人工智能的一種手段,而深度學(xué)習(xí)是在機(jī)器學(xué)習(xí)的發(fā)展過程中贸铜,發(fā)展出來的一個分支堡纬,廣義上講它也是機(jī)器學(xué)習(xí),但是由于其實現(xiàn)機(jī)制和原來的機(jī)器學(xué)習(xí)算法有較大的不同蒿秦,所以發(fā)展為一個獨(dú)立的領(lǐng)域烤镐。機(jī)器學(xué)習(xí)和深度學(xué)習(xí)都是建模的有效工具,只是它們面向的場景有所不同棍鳖。
所以炮叶,
AutoML
也需要分為兩個種類,傳統(tǒng)的AutoML
和深度AutoML
渡处。即傳統(tǒng)的AutoML
是為了解決傳統(tǒng)機(jī)器學(xué)習(xí)的建模問題镜悉,它面向的是傳統(tǒng)機(jī)器學(xué)習(xí)相關(guān)算法,如線性回歸
医瘫、邏輯回歸
侣肄、決策樹
等等。而深度AutoML
更多的是面向深度學(xué)習(xí)中神經(jīng)網(wǎng)絡(luò)的建模醇份。
本文主要研究的就是面向深度學(xué)習(xí)領(lǐng)域的AutoML稼锅。
AutoML
和神經(jīng)架構(gòu)搜索(NAS)是深度學(xué)習(xí)領(lǐng)域當(dāng)前最熱門的話題。 它們能以快速而有效的方式僚纷,只需要做很少的工作矩距,即可為你的機(jī)器學(xué)習(xí)任務(wù)構(gòu)建好網(wǎng)絡(luò)模型,并獲得高精度怖竭。 簡單有效锥债!
Being able to go from idea to result with the least possible delay is key to doing good research.
將想法快速實現(xiàn)(變成結(jié)果)是優(yōu)秀研究的關(guān)鍵埂材。
AutoML完全改變了整個機(jī)器學(xué)習(xí)領(lǐng)域的游戲規(guī)則绍些,因為對于許多應(yīng)用程序恭朗,不需要專業(yè)技能和知識现柠。 許多公司只需要深度網(wǎng)絡(luò)來完成更簡單的任務(wù)功咒,例如圖像分類攀芯。 那么他們并不需要雇用一些人工智能專家甲雅,他們只需要能夠數(shù)據(jù)組織好履怯,然后交由AutoML來完成即可艇潭。
從上面這段話可以看出拼窥,AutoML
并不是萬能的戏蔑,并不是所有的機(jī)器學(xué)習(xí)問題都能交由它來完成,它是針對特定領(lǐng)域所提供的自動化解決方案鲁纠,以降低普通公司使用機(jī)器學(xué)習(xí)的門檻及成本总棵。
AutoML
是目前比較熱門的一個研究領(lǐng)域,主要應(yīng)用于圖像識別改含,但在其它領(lǐng)域應(yīng)用的較少情龄。
下面是使用Auto-Keras實現(xiàn)mnist的一個例子,用它來看看AutoML
到底在做什么捍壤。
1. Auto Keras
它是AutoML
的一個實現(xiàn)工具包骤视,google也有自己的automl,但是那個要收費(fèi)鹃觉,我就從這個著手专酗,先看看AutoML
能做什么,后期再去深入了解其實現(xiàn)原理及機(jī)制盗扇。
不出意外的情況下祷肯,安裝auto keras
只需要一行命令即可:pip3 install autokeras
,如果出現(xiàn)異常情況疗隶,比如缺少依賴包佑笋,按照異常提示補(bǔ)裝上即可。
下面是一個使用auto keras
編寫的手寫數(shù)字識別mnist的源碼:
from keras.datasets import mnist
import autokeras as ak
if __name__ == '__main__':
(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train = x_train.reshape(x_train.shape + (1,))
x_test = x_test.reshape(x_test.shape + (1,))
clf = ak.ImageClassifier(verbose=True, augment=False)
clf.fit(x_train, y_train, time_limit=12 * 60 * 60)
clf.final_fit(x_train, y_train, x_test, y_test, retrain=True)
y = clf.evaluate(x_test, y_test)
print(y * 100)
從上面的代碼可以看出它的寫法非常簡單抽减,一般使用tensorflow
構(gòu)建一個mnist
的神經(jīng)網(wǎng)絡(luò)模型允青,可能需要一兩百行代碼,中間涉及到各個輸入輸出層的構(gòu)造卵沉;而使用auto keras
只需要編寫幾行代碼,它的寫法有點類似機(jī)器學(xué)習(xí)工具包scikit-learn
法牲,完全隱藏了復(fù)雜的神經(jīng)網(wǎng)絡(luò)構(gòu)建過程史汗。
但是我們可以從這段代碼的運(yùn)行日志中看到它大概在做什么:
網(wǎng)絡(luò)結(jié)構(gòu)的構(gòu)建過程是自動的
訓(xùn)練過程是自動的
它構(gòu)造了不止一個網(wǎng)絡(luò)模型,每個模型它都會訓(xùn)練一番
后一個模型似乎是在前一個模型的基礎(chǔ)上做了一些調(diào)整拒垃,繼承了前一個模型停撞,并且會加一些操作(調(diào)整網(wǎng)絡(luò)結(jié)構(gòu))
調(diào)整的依據(jù)有可能是日志中的
loss
以及metric value
等,主要應(yīng)該還是它有自己內(nèi)部改變各種網(wǎng)絡(luò)結(jié)構(gòu)的算法悼瓮。(其實就是ENAS
算法)
下面是autokeras
官網(wǎng)上的一段說明:
Auto-Keras provides functions to automatically search for architecture and hyperparameters of deep learning models.
也就是說Auto-Keras提供了一些工具包戈毒,可以自動搜索神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),以及自動進(jìn)行深度學(xué)習(xí)模型的超參數(shù)調(diào)整横堡。
從對auto keras
的初步了解埋市,可以看出AutoML
通過自己的一套算法,把構(gòu)建網(wǎng)絡(luò)結(jié)構(gòu)命贴、調(diào)整網(wǎng)絡(luò)結(jié)構(gòu)道宅、調(diào)整超參數(shù)食听、模型評估等等過程全部封裝起來了,全部自動化完成污茵。將原來可能毫無目的的結(jié)構(gòu)調(diào)整樱报、參數(shù)調(diào)整,通過科學(xué)化的算法變成結(jié)構(gòu)有序的調(diào)整泞当,降低了機(jī)器學(xué)習(xí)的門檻迹蛤,縮短了整個建模過程。
2. 其它AutoML產(chǎn)品(工具包)
2.1 AutoWEKA
它是基于WEKA
的一種AutoML
實現(xiàn)襟士,WEKA
好像是一個老牌的數(shù)據(jù)挖掘工具盗飒。AutoWEKA
就是針對WEKA的自動模型選擇和超參數(shù)優(yōu)化〉蟹洌基于Java的箩兽。
2.2 Auto-sklearn
基于scikit-learn
的AutoML
實現(xiàn),它主要也是上面提到的章喉,針對傳統(tǒng)機(jī)器學(xué)習(xí)而言的自動建模汗贫。
該工具包使用15個分類器,14個特征預(yù)處理方法和4個數(shù)據(jù)預(yù)處理方法秸脱,產(chǎn)生具有110個超參數(shù)的結(jié)構(gòu)化假設(shè)空間落包。
它的基本原理可以通過下圖看個大概:
核心思想是使用貝葉斯優(yōu)化!
2.3 H2O AutoML
它是基于H2O
平臺的一個AutoML
實現(xiàn)摊唇,該平臺主要面向傳統(tǒng)機(jī)器學(xué)習(xí)算法咐蝇,但是也包含了簡單的深度學(xué)習(xí)網(wǎng)絡(luò)模型,比如DNN巷查。
這是一個非常好的機(jī)器學(xué)習(xí)平臺有序,它綜合了機(jī)器學(xué)習(xí)算法、深度學(xué)習(xí)算法岛请、數(shù)據(jù)分析旭寿、數(shù)據(jù)可視化、自動超參搜索崇败、以及多種訓(xùn)練指標(biāo)可視化等盅称,為用戶提供了一套完整的人工智能解決方案。
2.4 Google Cloud AutoML
谷歌的AutoML是一個新興的(alpha階段)云計算機(jī)學(xué)習(xí)工具軟件套件后室。 它基于谷歌最先進(jìn)的圖像識別研究缩膝,稱為神經(jīng)架構(gòu)搜索(NAS)。NAS基本上是一種算法岸霹,根據(jù)您的特定數(shù)據(jù)集疾层,搜索最佳神經(jīng)網(wǎng)絡(luò)以在該數(shù)據(jù)集上執(zhí)行特定任務(wù)。
Google AutoML是一套機(jī)器學(xué)習(xí)工具松申,可以輕松培訓(xùn)高性能深度網(wǎng)絡(luò)云芦,無需用戶掌握深度學(xué)習(xí)或AI知識; 所有你需要的是標(biāo)記數(shù)據(jù)俯逾! Google將使用NAS為您的特定數(shù)據(jù)集和任務(wù)找到最佳網(wǎng)絡(luò)。并且通過AutoML所找到的最佳網(wǎng)絡(luò)一般情況下要遠(yuǎn)遠(yuǎn)好于人工設(shè)計的神經(jīng)網(wǎng)絡(luò)舅逸!
下圖是Google Cloud's AutoML pipeline:
不過Google的這個是要收費(fèi)的桌肴,而且還很貴!
3. AutoML實現(xiàn)原理分析
根據(jù)Thomas Elsken的論文介紹琉历,AutoML
主要包含三大領(lǐng)域:
NAS
:Neural Architecture Search坠七,神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)搜索,即需要通過某種結(jié)構(gòu)及算法旗笔,實現(xiàn)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的自動生成彪置。Hyper-parameter optimization
:超參數(shù)優(yōu)化,針對神經(jīng)網(wǎng)絡(luò)中的超參數(shù)進(jìn)行自動優(yōu)化蝇恶。meta-learning
:元學(xué)習(xí)拳魁,或者叫learning to learn
,即學(xué)會學(xué)習(xí)
撮弧。
3.1 NAS
Neural Architecture Search(NAS)潘懊,即神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)搜索技術(shù),通過某種結(jié)構(gòu)及算法贿衍,實現(xiàn)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的自動生成授舟,它主要包含搜索空間,以及搜索策略贸辈、性能評估策略等幾個維度的知識释树。
3.1.1 搜索空間
可以簡單理解為基于一定的前提和假設(shè),并根據(jù)已有的經(jīng)驗擎淤,預(yù)置一些網(wǎng)絡(luò)結(jié)構(gòu)單元奢啥,就像堆積木一樣,預(yù)先提供了各種各樣的積木嘴拢,最終的網(wǎng)絡(luò)結(jié)構(gòu)就是通過搜索空間中的這些原始積木組合成的扫尺。
也正是因為如此,通過這種模式生成的最終網(wǎng)絡(luò)結(jié)構(gòu)其實只是在給定的搜索空間中查找效果最優(yōu)的模型結(jié)構(gòu)而已炊汤,機(jī)器只是沿著人類設(shè)計好的算法,依據(jù)某些評估指標(biāo)弊攘,通過不斷的測試從而生成一個比較完美的網(wǎng)絡(luò)結(jié)構(gòu)抢腐。
絕大部分機(jī)器學(xué)習(xí)都不是人工智能,計算機(jī)并不是真的具有智能了襟交,也不會無緣無故獲得既定目標(biāo)以外的能力迈倍。
下圖是對搜索空間以及空間中各單元之間關(guān)系的一個說明:
NAS
算法所生成的網(wǎng)絡(luò)結(jié)構(gòu)是基于這樣的一個前提:它認(rèn)為一個大的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)是由很多小的、重復(fù)的單元所組成的捣域。我們在構(gòu)建整個神經(jīng)網(wǎng)絡(luò)時啼染,只需要針對這些小的單元進(jìn)行搜索宴合,而不是每次針對整個網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行搜索。
如上圖左側(cè)上下兩張圖所示迹鹅,NAS
將這種最小的組件稱之為cells
或blocks
卦洽,有兩種類型的單元,一種是維持維度的正常單元(normal cell
)斜棚,一種是降低維度的還原/降低單元(reduction cell
)阀蒂,然后通過以預(yù)定義的方式堆疊這些單元來構(gòu)建最終的網(wǎng)絡(luò)架構(gòu)(右上圖右側(cè)部分)。
何為維持維度的單元弟蚀,何為降低維度的單元蚤霞,這部分我沒有看明白。
以圖像識別為例义钉,在Google的NASNet
網(wǎng)絡(luò)中昧绣,就將圖像識別網(wǎng)絡(luò)分成如下這些單元(或塊):
可以看出這是基于人類在圖像識別領(lǐng)域的前期研究經(jīng)驗的,它預(yù)置了很多塊捶闸,如各種維度的卷積層夜畴,各種維度的池化層等,這其中還會涉及到的些連接函數(shù)(激活函數(shù))鉴嗤。
接下來要做的事情就像堆積木一樣斩启,拼裝出各種各樣的網(wǎng)絡(luò)結(jié)構(gòu),并對這些結(jié)構(gòu)進(jìn)行訓(xùn)練評估醉锅,使用`RNN``網(wǎng)絡(luò)做為控制器兔簇,來不斷的重復(fù)這個過程,直接訓(xùn)練出滿意的網(wǎng)絡(luò)結(jié)構(gòu)硬耍。如下圖所示:
3.1.2 搜索策略
搜索策略詳細(xì)說明了如何探索搜索空間
垄琐,它圍繞著經(jīng)典的探索-利用權(quán)衡問題,一方面希望能盡快找到性能良好的架構(gòu)经柴,另一方面狸窘,也需要解決如何避免過早收斂到次優(yōu)架構(gòu)區(qū)域。
何為探索-利用問題坯认?網(wǎng)上找到的一個例子:
假設(shè)你家附近有十個餐館翻擒,到目前為止,你在八家餐館吃過飯牛哺,知道這八家餐館中最好吃的餐館可以打8分陋气,剩下的餐館也許會遇到口味可以打10分的,也可能只有2分引润,如果為了吃到口味最好的餐館巩趁,下一次吃飯你會去哪里?
所謂探索:是指做你以前從來沒有做過的事情淳附,以期望獲得更高的回報议慰。所謂利用:是指做你當(dāng)前知道的能產(chǎn)生最大回報的事情蠢古。那么,你到底該去哪家呢别凹?這就是探索-利用困境草讶。
搜索策略定義了使用怎樣的算法可以快速、準(zhǔn)確找到最優(yōu)的網(wǎng)絡(luò)結(jié)構(gòu)參數(shù)配置番川。常見的搜索方法包括:隨機(jī)搜索(random search)到涂、貝葉斯優(yōu)化(Bayesian optimization)、進(jìn)化算法(evolutionary methods)颁督、強(qiáng)化學(xué)習(xí)(reinforcement learning [RL])践啄、基于梯度的算法(gradient-based methods)。其中沉御,2017 年谷歌大腦的那篇強(qiáng)化學(xué)習(xí)搜索方法將這一研究帶成了研究熱點屿讽,后來 Uber、Sentient吠裆、OpenAI伐谈、Deepmind 等公司和研究機(jī)構(gòu)用進(jìn)化算法對這一問題進(jìn)行了研究,這個 task 算是進(jìn)化算法一大熱點應(yīng)用试疙。
注:國內(nèi)有很多家公司在做 AutoML诵棵,其中用到的一種主流搜索算法是進(jìn)化算法。
算法的演進(jìn)歷史
在2000年以前祝旷,
進(jìn)化算法
被用在了改進(jìn)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的各種研究上履澳。用進(jìn)化算法對神經(jīng)網(wǎng)絡(luò)超參數(shù)進(jìn)行優(yōu)化是一種很古老、很經(jīng)典的解決方案怀跛,90 年代的學(xué)者用進(jìn)化算法同時優(yōu)化網(wǎng)絡(luò)結(jié)構(gòu)參數(shù)和各層之間的權(quán)重距贷,因為當(dāng)時的網(wǎng)絡(luò)規(guī)模非常小,所以還能解決吻谋,但后續(xù)深度學(xué)習(xí)模型網(wǎng)絡(luò)規(guī)模都非常大忠蝗,無法直接優(yōu)化。從2013年漓拾,
貝葉斯優(yōu)化
也在之后獲得了一些成功阁最,以及2015年在cifar10上通過該算法生成的網(wǎng)絡(luò)結(jié)構(gòu)首次超過人類專家設(shè)計的。2017年骇两,使用
強(qiáng)化學(xué)習(xí)
算法闽撤,在cifar10和Penn上獲得了巨大的成功,也是從這時開始脯颜,NAS
開始變成機(jī)器學(xué)習(xí)中的熱門研究話題。但是當(dāng)時是使用800個GPU贩据,跑了三四周才跑完的栋操。從那以后闸餐,開始有越來越多的人研究如何提高NAS
算法的性能。其中最出名的就是ENAS
算法矾芙。
Esteban Real在2018年主導(dǎo)了一項研究舍沙,即研究強(qiáng)化學(xué)習(xí)
、進(jìn)化算法
剔宪、隨機(jī)搜索
三者的優(yōu)劣拂铡,主要是研究三者在cifar10
上的表現(xiàn)。最終研究結(jié)果表明葱绒,強(qiáng)化學(xué)習(xí)
和進(jìn)化算法
要優(yōu)于隨機(jī)搜索
感帅,另外在網(wǎng)絡(luò)規(guī)模小的情況下,進(jìn)化算法
表現(xiàn)是最好的地淀。
貝葉斯優(yōu)化
在超參數(shù)優(yōu)化問題上是最為流行的失球,但是很少有將其應(yīng)用于NAS
上,主要是因為典型的貝葉斯優(yōu)化工具包是基于高斯過程并專注于低維連續(xù)優(yōu)化問題帮毁。
在分層搜索領(lǐng)域实苞,比如結(jié)合進(jìn)化或者基于順序模型的優(yōu)化,蒙特卡洛樹搜索(Monte Carlo Tree Search)
也是研究方向之一烈疚。
3.1.3 性能評估策略
NAS
的目標(biāo)就是尋找在未知數(shù)據(jù)集上有很好預(yù)測性能的網(wǎng)絡(luò)結(jié)構(gòu)模型黔牵,性能評估模塊就是用來評估這些生成的網(wǎng)絡(luò)結(jié)構(gòu)的性能。而一種最簡單的性能評估方法爷肝,就是針對該網(wǎng)絡(luò)結(jié)構(gòu)猾浦,使用數(shù)據(jù)集進(jìn)行一次標(biāo)準(zhǔn)的訓(xùn)練和驗證,從而評估其性能阶剑。但是這種最簡單的方法跃巡,會帶來昂貴的計算開銷以及時間開銷,從而進(jìn)一步限制我們能探索到的網(wǎng)絡(luò)結(jié)構(gòu)數(shù)量牧愁。
因此素邪,最近的許多研究都集中在開發(fā)降低這些性能評估成本的方法上。
性能評估策略中猪半,有一種辦法是基于低保真的策略兔朦,比如更短的訓(xùn)練時間、使用更少的訓(xùn)練集磨确、使用更低的圖片分辨率沽甥、或者每層中使用更少的過濾器(filter),這種作法會大大的降低訓(xùn)練開銷乏奥,但是也會帶來一些指標(biāo)上的偏差摆舟,不過這種偏差對最終結(jié)果影響不大。
還有一種策略是基于推斷法,比如學(xué)習(xí)曲線推斷法恨诱,這種思路的核心思想是建議推斷初始學(xué)習(xí)曲線并終止那些預(yù)測表現(xiàn)不佳的曲線媳瞪,以加快架構(gòu)搜索過程。還有一種推斷法是基于代理模型的推斷照宝,即通過小的網(wǎng)絡(luò)模型的性能表現(xiàn)推斷出最終的網(wǎng)絡(luò)模型蛇受。
還有一種策略是是基于權(quán)重參數(shù)遷移的,即將一個已經(jīng)訓(xùn)練好的模型參數(shù)直接應(yīng)用于當(dāng)前網(wǎng)絡(luò)結(jié)構(gòu)厕鹃,當(dāng)前網(wǎng)絡(luò)模型就相當(dāng)于在一個高起點的情況下進(jìn)行學(xué)習(xí)兢仰,可以大大縮短訓(xùn)練時間。
還有一種策略叫One-Shot架構(gòu)搜索剂碴,原理沒有看明白把将。網(wǎng)上解釋是這種方法將所有架構(gòu)視作一個 one-shot 模型(超圖)的子圖,子圖之間通過超圖的邊來共享權(quán)重汗茄。
3.1.4 NAS未來的方向
目前絕大多數(shù)聚焦在NAS
上的研究都是針對圖像分類的秸弛。在其它領(lǐng)域仍然應(yīng)用較少,如語言建模洪碳、音樂建模递览、圖像修復(fù)、網(wǎng)絡(luò)壓縮瞳腌、語義分割等绞铃。
另外就NAS
的實現(xiàn)原理而言,其搜索空間是完全基于人類經(jīng)驗的嫂侍,比如針對圖像分類領(lǐng)域儿捧,我們給搜索空間定義了很多單元,如卷積層挑宠、池化層等菲盾,而這些基本只能針對圖像領(lǐng)域,我們無法將其應(yīng)用到其它領(lǐng)域中各淀,這種網(wǎng)絡(luò)結(jié)構(gòu)的搜索懒鉴,最終也會被限制在這些預(yù)定義好的單元之中。NAS
未來的一個研究方向就是定義一個更通用碎浇、更可擴(kuò)展的搜索空間临谱。
3.1.5 NAS的演進(jìn)
由于NAS
每次搜索網(wǎng)絡(luò)結(jié)構(gòu)都需要對其進(jìn)行一次訓(xùn)練,在Google的NASNet
網(wǎng)絡(luò)上奴璃,需要使用450塊GPU訓(xùn)練3到4天悉默,這種昂貴的開銷注定小公司是消費(fèi)不起的。
Efficient Neural Architecture Search (ENAS)苟穆,是目前比較出名的一種nas加強(qiáng)版算法抄课。它的理論基礎(chǔ)就是遷移學(xué)習(xí)和權(quán)重共享唱星,ENAS
算法強(qiáng)制所有模型共享權(quán)重,而不是從頭開始訓(xùn)練到收斂剖膳。 我們之前在之前模型中嘗試過的任何塊都將使用之前學(xué)過的權(quán)重魏颓。 因此,我們每次培訓(xùn)新模型時都會進(jìn)行轉(zhuǎn)移學(xué)習(xí)吱晒,收斂速度更快!
如上圖所示沦童,本來需要450塊GPU卡跑3仑濒,4天的模型,在使用了ENAS之后偷遗,只需要一塊1080Ti GPU墩瞳,跑半天即可。
我們最上面的例子中氏豌,
auto keras
就是使用了enas的算法喉酌。
3.2 Hyper-parameter optimization
超參數(shù)優(yōu)化,并不是最近才發(fā)展起來的泵喘,它一直伴隨著機(jī)器學(xué)習(xí)和深度學(xué)習(xí)泪电。幾乎每一種算法,都會涉及到各種各樣的超參數(shù)纪铺,這些超參數(shù)設(shè)置的好壞直接決定了建模了效率以及效果相速。而實際建模過程中,很多情況下就是憑經(jīng)驗進(jìn)行設(shè)置鲜锚,或者進(jìn)行大量的試錯突诬、反復(fù)訓(xùn)練。
超參數(shù)優(yōu)化就是通過算法層面芜繁,將超參數(shù)的設(shè)置交給計算機(jī)去搜索獲得旺隙。比較流行的算法主要有:貝葉斯優(yōu)化、隨機(jī)搜索骏令、網(wǎng)格搜索蔬捷。
這其中最有名的應(yīng)該就是貝葉斯優(yōu)化算法了,貝葉斯優(yōu)化是一種近似逼近的方法伏社,用各種代理函數(shù)來擬合超參數(shù)與模型評價之間的關(guān)系抠刺,然后選擇有希望的超參數(shù)組合進(jìn)行迭代,最后得出效果最好的超參數(shù)組合摘昌。代理函數(shù)中比較有名的就是高斯函數(shù)速妖。
貝葉斯優(yōu)化的核心思想是,通過用戶給定的兩個X值以及對應(yīng)的Y值聪黎,擬合一個高斯函數(shù)罕容,然后根據(jù)峰值找下一個可能的x值备恤,其實給我的感覺也是瞎猜,不過猜的比較體面锦秒。
其它兩種超參優(yōu)化算法就比較簡單了露泊,隨機(jī)搜索就是瞎猜,給計算機(jī)一個參數(shù)取值的范圍旅择,讓計算機(jī)去瞎猜并不斷嘗試惭笑;網(wǎng)格搜索更簡單,用戶先瞎猜好幾個取值生真,然后讓計算機(jī)去嘗試沉噩。
3.3 Meta-Learning
尚未研究。
3.4 算法相關(guān)
3.4.1 強(qiáng)化學(xué)習(xí)
強(qiáng)化學(xué)習(xí)是一種非常有意思的范式柱蟀,幾乎只要可以提煉出強(qiáng)化學(xué)習(xí)四要素川蒙,原問題就可以用強(qiáng)化學(xué)習(xí)來求解。
在 NAS 任務(wù)中长已,將架構(gòu)的生成看成是一個 agent 在選擇 action畜眨,reward 是通過一個測試集上的效果預(yù)測函數(shù)來獲得(這個函數(shù)類似于工程優(yōu)化問題中的 surrogate model,即代理模型)术瓮。這類工作整體的框架都是基于此康聂,不同的點在于策略表示和優(yōu)化算法。
3.4.2 進(jìn)化算法
進(jìn)化算法是一大類算法斤斧,大概的框架也基本類似早抠,先隨機(jī)生成一個種群(N 組解),開始循環(huán)以下幾個步驟:選擇撬讽、交叉蕊连、變異,直到滿足最終條件游昼。最近幾年流行一種基于概率模型的進(jìn)化算法 EDA (Estimation Distribution of Algorithm)甘苍,基本的思路類似遺傳算法,不同的是沒有交叉烘豌、變異的環(huán)節(jié)载庭,而是通過 learning 得到一個概率模型,由概率模型來 sample 下一步的種群廊佩。
用進(jìn)化算法對神經(jīng)網(wǎng)絡(luò)超參數(shù)進(jìn)行優(yōu)化是一種很古老囚聚、很經(jīng)典的解決方案,90 年代的學(xué)者用進(jìn)化算法同時優(yōu)化網(wǎng)絡(luò)結(jié)構(gòu)參數(shù)和各層之間的權(quán)重标锄,因為當(dāng)時的網(wǎng)絡(luò)規(guī)模非常小顽铸,所以還能解決,但后續(xù)深度學(xué)習(xí)模型網(wǎng)絡(luò)規(guī)模都非常大料皇,無法直接優(yōu)化谓松。
3.4.3 貝葉斯優(yōu)化
貝葉斯優(yōu)化(Bayesian Optimization)是超參數(shù)優(yōu)化問題的常用手段星压,尤其是針對一些低維的問題,基于高斯過程(Gaussian Processes)和核方法(kernel trick)鬼譬。對于高維優(yōu)化問題娜膘,一些工作融合了樹模型或者隨機(jī)森林來解決,取得了不錯的效果优质。
除了常見的三大類方法竣贪,一些工作也在研究分層優(yōu)化的思路,比如將進(jìn)化算法和基于模型的序列優(yōu)化方法融合起來巩螃,取各種方法的優(yōu)勢贾富。Real 在 2018 年的一個工作對比了強(qiáng)化學(xué)習(xí)、進(jìn)化算法和隨機(jī)搜索三類方法牺六,前兩種的效果會更好一些。
4. AutoML應(yīng)用場景
通過上面的描述可以知道汗捡,AutoML
其實是針對一些比較成熟的人工智能解決方案淑际,如常規(guī)機(jī)器學(xué)習(xí),以及圖像識別扇住、圖像分類等春缕,主要用來解決這類場景下,網(wǎng)絡(luò)模型的自動生成艘蹋,以及超參數(shù)的自動優(yōu)化锄贼。
目前的AutoML
并生成不了超出人類思維以外的模型,它其實只是在預(yù)先設(shè)置好的一堆積木中女阀,按照一定的策略去搭建一個組合的網(wǎng)絡(luò)宅荤,所有的網(wǎng)絡(luò)單元仍然是人類設(shè)置好的。
講白了就是面對這些場景浸策,科學(xué)家們已經(jīng)知道如何去做冯键,但是編寫各種各樣的網(wǎng)絡(luò)模型、調(diào)整超參數(shù)庸汗、訓(xùn)練等惫确,需要耗費(fèi)大量的時間及金錢。而AutoML
可以通過科學(xué)化的建模算法蚯舱,有效的提高建模效率及質(zhì)量改化,減少成本。所以針對這些場景使用AutoML
是合適的枉昏。
而在語言建模陈肛、音樂建模、圖像修復(fù)凶掰、網(wǎng)絡(luò)壓縮燥爷、語義分割等領(lǐng)域蜈亩,有可能在這些領(lǐng)域中,還沒有形成非常有效的解決方案前翎,那么AutoML
也就無從談起了稚配。
參考材料
解釋automl
相關(guān)知識,以及如何通過auto keras
組件包對mnist
進(jìn)行AutoML
實現(xiàn)港华。
auto keras
官網(wǎng)道川。
https://www.automl.org/automl/
AutoML
官網(wǎng)。
[Neural Architecture Search: A Survey](Neural Architecture Search: A Survey)
一篇針對NAS
當(dāng)前發(fā)展情況深度解讀的文章立宜,文章從三個維度對NAS
進(jìn)行了分析:搜索空間冒萄、搜索策略、性能評估策略橙数。
介紹Google AutoML
的一篇文章尊流。
一篇介紹AutoML
和NAS
的文章。