自动机器学习(AutoML)
自動(dòng)機(jī)器學(xué)習(xí)(AutoML)
不再需要苦惱于學(xué)習(xí)各種機(jī)器學(xué)習(xí)的算法
目錄:
一、為什么需要自動(dòng)機(jī)器學(xué)習(xí)
二、超參數(shù)優(yōu)化 Hyper-parameter Optimization
三、元學(xué)習(xí) Meta Learning
四、神經(jīng)網(wǎng)絡(luò)架構(gòu)搜索 Neural Architecture Search
五、自動(dòng)化特征工程
六、其它自動(dòng)機(jī)器學(xué)習(xí)工具集
一、為什么需要自動(dòng)機(jī)器學(xué)習(xí)
對(duì)于機(jī)器學(xué)習(xí)的新用戶而言,使用機(jī)器學(xué)習(xí)算法的一個(gè)主要的障礙就是算法的性能受許多的設(shè)計(jì)決策影響。隨著深度學(xué)習(xí)的流行,工程師需要選擇相應(yīng)的神經(jīng)網(wǎng)絡(luò)架構(gòu),訓(xùn)練過(guò)程,正則化方法,超參數(shù)等等,所有的這些都對(duì)算法的性能有很大的影響。于是深度學(xué)習(xí)工程師也被戲稱為調(diào)參工程師。
自動(dòng)機(jī)器學(xué)習(xí)(AutoML)的目標(biāo)就是使用自動(dòng)化的數(shù)據(jù)驅(qū)動(dòng)方式來(lái)做出上述的決策。用戶只要提供數(shù)據(jù),自動(dòng)機(jī)器學(xué)習(xí)系統(tǒng)自動(dòng)的決定最佳的方案。領(lǐng)域?qū)<也辉傩枰鄲烙趯W(xué)習(xí)各種機(jī)器學(xué)習(xí)的算法。
自動(dòng)機(jī)器學(xué)習(xí)不光包括大家熟知的算法選擇,超參數(shù)優(yōu)化,和神經(jīng)網(wǎng)絡(luò)架構(gòu)搜索,還覆蓋機(jī)器學(xué)習(xí)工作流的每一步:
? 自動(dòng)準(zhǔn)備數(shù)據(jù)
? 自動(dòng)特征選擇
? 自動(dòng)選擇算法
? 超參數(shù)優(yōu)化
? 自動(dòng)流水線/工作流構(gòu)建
? 神經(jīng)網(wǎng)絡(luò)架構(gòu)搜索
? 自動(dòng)模型選擇和集成學(xué)習(xí)
二、超參數(shù)優(yōu)化Hyper-parameter Optimization
學(xué)習(xí)器模型中一般有兩類參數(shù),一類是可以從數(shù)據(jù)中學(xué)習(xí)估計(jì)得到,還有一類參數(shù)時(shí)無(wú)法從數(shù)據(jù)中估計(jì),只能靠人的經(jīng)驗(yàn)進(jìn)行設(shè)計(jì)指定,后者成為超參數(shù)。比如,支持向量機(jī)里面的C Kernal Gamma;樸素貝葉斯里面的alpha等。
超參數(shù)優(yōu)化有很多方法:
最常見(jiàn)的類型是黑盒優(yōu)化 (black-box function optimization)。所謂黑盒優(yōu)化,就是將決策網(wǎng)絡(luò)當(dāng)作是一個(gè)黑盒來(lái)進(jìn)行優(yōu)化,僅關(guān)心輸入和輸出,而忽略其內(nèi)部機(jī)制。決策網(wǎng)絡(luò)通常是可以參數(shù)化的,這時(shí)候進(jìn)行優(yōu)化首先要考慮的是收斂性。
以下的幾類方法都是屬于黑盒優(yōu)化:
? 網(wǎng)格搜索 (grid search)
Grid search大家都應(yīng)該比較熟悉,是一種通過(guò)遍歷給定的參數(shù)組合來(lái)優(yōu)化模型表現(xiàn)的方法。網(wǎng)格搜索的問(wèn)題是很容易發(fā)生維度災(zāi)難,優(yōu)點(diǎn)是很容易并行。
? 隨機(jī)搜索 (random search)
隨機(jī)搜索是利用隨機(jī)數(shù)求極小點(diǎn)而求得函數(shù)近似的最優(yōu)解的方法。
很多時(shí)候,隨機(jī)搜索比網(wǎng)格搜索效果要更好,但是可以從上圖看出,都不能保證找到最優(yōu)解。
? 貝葉斯優(yōu)化(http://t.cn/EfRNqz8)
貝葉斯優(yōu)化是一種迭代的優(yōu)化算法,包含兩個(gè)主要的元素,輸入數(shù)據(jù)假設(shè)的模型和一個(gè)采集函數(shù)用來(lái)來(lái)決定下一步要評(píng)估哪一個(gè)點(diǎn)。每一步迭代,都使用所有的觀測(cè)數(shù)據(jù)fit模型,然后利用激活函數(shù)預(yù)測(cè)模型的概率分布,決定如何利用參數(shù)點(diǎn),權(quán)衡是Explaoration還是Exploitation。相對(duì)于其它的黑盒優(yōu)化算法,激活函數(shù)的計(jì)算量要少很多,這也是為什么貝葉斯優(yōu)化被認(rèn)為是更好的超參數(shù)調(diào)優(yōu)的算法。
黑盒優(yōu)化的一些工具:
? hyperopt(http://t.cn/RyJDbzH)
hyperopt 是一個(gè)Python庫(kù),可以用來(lái)尋找實(shí)數(shù),離散值,條件維度等搜索空間的最佳值
? Google Vizier
Google的內(nèi)部的機(jī)器學(xué)習(xí)系統(tǒng) Google Vizier能夠利用遷移學(xué)習(xí)等技術(shù)自動(dòng)優(yōu)化其它機(jī)器學(xué)習(xí)系統(tǒng)的超參數(shù)
? advisor(http://t.cn/RpTEMhK)
Google Vizier的開(kāi)源實(shí)現(xiàn)
? katib (http://t.cn/EvQJWbq)
基于Kubernetes的超參數(shù)優(yōu)化工具
由于優(yōu)化目標(biāo)具有不連續(xù)、不可導(dǎo)等數(shù)學(xué)性質(zhì),所以一些搜索和非梯度優(yōu)化算法被用來(lái)求解該問(wèn)題,包括上面提到的這些黑盒算法。此類算法通過(guò)采樣和對(duì)采樣的評(píng)價(jià)進(jìn)行搜索,往往需要大量對(duì)采樣的評(píng)價(jià)才能獲得比較好的結(jié)果。然而,在自動(dòng)機(jī)器學(xué)習(xí)任務(wù)中評(píng)價(jià)往往通過(guò) k 折交叉驗(yàn)證獲得,在大數(shù)據(jù)集的機(jī)器學(xué)習(xí)任務(wù)上,獲得一個(gè)評(píng)價(jià)的時(shí)間代價(jià)巨大。這也影響了優(yōu)化算法在自動(dòng)機(jī)器學(xué)習(xí)問(wèn)題上的效果。所以一些減少評(píng)價(jià)代價(jià)的方法被提出來(lái),其中多保真度優(yōu)化(multi-fidelity methods)就是其中的一種。這里的技術(shù)包括:基于學(xué)習(xí)曲線來(lái)決定是否要提前終止訓(xùn)練,探索-利用困境(exploration exploitation)的多臂算法 (Multi-armed bandit)(http://t.cn/R5AMrlH)等等。
另外還有一些研究是基于梯度下降的優(yōu)化。
超參數(shù)優(yōu)化面臨許多挑戰(zhàn):
? 對(duì)于大規(guī)模的模型或者復(fù)雜的機(jī)器學(xué)習(xí)流水線而言,需要評(píng)估的空間規(guī)模非常大
? 配置空間很復(fù)雜
? 無(wú)法或者很難利用損失函數(shù)的梯度變化
? 訓(xùn)練集合的規(guī)模太小
? 很容易過(guò)擬合
相關(guān)參考
http://t.cn/EfRTKmq
http://t.cn/EfRTmLa
http://t.cn/EfRHzrV
http://t.cn/RM7FoqC
http://t.cn/RdEUPtd
http://t.cn/EfRQwnA
http://t.cn/EfRQio5
http://t.cn/EfR8vzx
三、元學(xué)習(xí) Meta Learning
元學(xué)習(xí)也就是"學(xué)習(xí)如何學(xué)習(xí)",通過(guò)對(duì)現(xiàn)有的學(xué)習(xí)任務(wù)之間的性能差異進(jìn)行系統(tǒng)的觀測(cè),然后學(xué)習(xí)已有的經(jīng)驗(yàn)和元數(shù)據(jù),用于更好的執(zhí)行新的學(xué)習(xí)任務(wù)。這樣做可以極大的改進(jìn)機(jī)器學(xué)習(xí)流水線或者神經(jīng)網(wǎng)絡(luò)架構(gòu)的設(shè)計(jì),也可以用數(shù)據(jù)驅(qū)動(dòng)的方式取代手工作坊似的算法工程工作。
從某種意義上來(lái)說(shuō),元學(xué)習(xí)覆蓋了超參數(shù)優(yōu)化,因?yàn)樵獢?shù)據(jù)的學(xué)習(xí)包含了:超參數(shù),流水線的構(gòu)成,神經(jīng)網(wǎng)絡(luò)架構(gòu),模型構(gòu)成,元特征等等。
機(jī)器學(xué)習(xí)的算法又稱為‘學(xué)習(xí)器’,學(xué)習(xí)器就是假定一個(gè)模型,該模型擁有很多未知參數(shù),利用訓(xùn)練數(shù)據(jù)和優(yōu)化算法來(lái)找到最適合這些訓(xùn)練數(shù)據(jù)的參數(shù),生成一個(gè)新的算法,或者參數(shù)已知的模型,并利用該模型/算法來(lái)預(yù)測(cè)新的未知數(shù)據(jù)。如果說(shuō)世界上只有一個(gè)模型,那么問(wèn)題就簡(jiǎn)單了,問(wèn)題是模型有很多,不同的模型擁有不同的超參數(shù),往往還會(huì)把模型和算法組裝在一起構(gòu)成復(fù)合模型和機(jī)器學(xué)習(xí)的流水線,這個(gè)時(shí)候,就需要知道解決不同的問(wèn)題要構(gòu)建那些不同的模型。元學(xué)習(xí)就在這個(gè)時(shí)候,可以把超參數(shù),流水線,神經(jīng)網(wǎng)絡(luò)架構(gòu)這些都看成是一個(gè)新的模型的未知參數(shù),把不同學(xué)習(xí)任務(wù)的性能指標(biāo)看成是輸入數(shù)據(jù),這樣就可以利用優(yōu)化算法來(lái)找到性能最好的那組參數(shù)。這個(gè)模式可以一直嵌套,也就是說(shuō),可以有‘元元元學(xué)習(xí)‘,當(dāng)然希望不要走得太遠(yuǎn),找不到回來(lái)的路。
元學(xué)習(xí)的方法包括:
? 通過(guò)模型評(píng)估來(lái)學(xué)習(xí)
? 通過(guò)任務(wù)的屬性,元特征來(lái)學(xué)習(xí)
以下列出了一些常見(jiàn)的元特征
? 從現(xiàn)有的模型中學(xué)習(xí),包括:遷移學(xué)習(xí);利用RNN在學(xué)習(xí)過(guò)程中修改自己的權(quán)重
元學(xué)習(xí)的一個(gè)很大的挑戰(zhàn)就是如果通過(guò)很少的訓(xùn)練數(shù)據(jù)來(lái)學(xué)習(xí)一個(gè)復(fù)雜的模型,這就是one-shot(http://t.cn/EfRmJZp)或者few-shot的問(wèn)題。
像人類的學(xué)習(xí)一樣,每次學(xué)習(xí)無(wú)論成功失敗,都收獲一定的經(jīng)驗(yàn),人類很少?gòu)念^學(xué)習(xí)。在構(gòu)建自動(dòng)學(xué)習(xí)的時(shí)候,也應(yīng)該充分利用已有的每一次的學(xué)習(xí)經(jīng)驗(yàn),逐步的改進(jìn),使得新的學(xué)習(xí)更加有效。
相關(guān)參考:
http://t.cn/EfRuJPM
http://t.cn/EyEri3B
http://t.cn/EfR1Iek
四、神經(jīng)網(wǎng)絡(luò)架構(gòu)搜索Neural Architecture Search
提起AutoML,其實(shí)大多數(shù)人都是因?yàn)镚oogle的AutoML系統(tǒng)才知道這個(gè)故事的。隨著深度學(xué)習(xí)的流行,神經(jīng)網(wǎng)絡(luò)的架構(gòu)變得越來(lái)越復(fù)雜,越來(lái)越多的手工工程也隨之而來(lái)。神經(jīng)網(wǎng)絡(luò)架構(gòu)搜索就是為了解決這個(gè)問(wèn)題。
NAS主要包含三個(gè)部分:
? 搜索空間 search space
? 搜索策略 search strategy
? 性能估計(jì)策略 performance estimation strategy
相關(guān)參考
http://t.cn/EfRD7WS
五、自動(dòng)化特征工程
自動(dòng)化特征工程可以幫助數(shù)據(jù)科學(xué)家基于數(shù)據(jù)集自動(dòng)創(chuàng)建能夠最好的用于訓(xùn)練的特征。
Featuretools(http://t.cn/Rl9tYUT)是一個(gè)開(kāi)源庫(kù),用來(lái)實(shí)現(xiàn)自動(dòng)化特征工程。它是一個(gè)很好的工具,旨在加快特征生成的過(guò)程,從而讓大家有更多的時(shí)間專注于構(gòu)建機(jī)器學(xué)習(xí)模型的其它方面。換句話說(shuō),使的數(shù)據(jù)處于“等待機(jī)器學(xué)習(xí)”的狀態(tài)。
Featuretools程序包中的三個(gè)主要組件:
? 實(shí)體(Entities)
? 深度特征綜合(Deep Feature Synthesis ,DFS)
? 特征基元(Feature primitives)
一個(gè)Entity可以視作是一個(gè)Pandas的數(shù)據(jù)框的表示,多個(gè)實(shí)體的集合稱為Entityset。
深度特征綜合(DFS)與深度學(xué)習(xí)無(wú)關(guān),不用擔(dān)心。實(shí)際上,DFS是一種特征工程方法,Featuretools的主干。支持從單個(gè)或者多個(gè)數(shù)據(jù)框中構(gòu)造新特征。
DFS通過(guò)將特征基元應(yīng)用于Entityset的實(shí)體關(guān)系來(lái)構(gòu)造新特征。這些特征基元是手動(dòng)生成特征時(shí)常用的方法。例如,基元“mean”將在聚合級(jí)別上找到變量的平均值。
相關(guān)參考
http://t.cn/EfRs7O2
http://t.cn/EfRsias
六、其它自動(dòng)機(jī)器學(xué)習(xí)工具集
以下列出一些開(kāi)源的自動(dòng)機(jī)器學(xué)習(xí)工具空大家參考、選擇
? Auto-Sklearn (http://t.cn/EfEPf5H)
? AutoKeras(http://t.cn/RDVQhH4)
? TPOT(http://t.cn/EfEPsHl)
? H2O AutoML (http://t.cn/EfE2fKw)
? Python auto_ml(http://t.cn/Ri1Ch74)
總結(jié)
以上是生活随笔為你收集整理的自动机器学习(AutoML)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: MegEngine基本概念
- 下一篇: Auto ML自动调参