自動機器學習(AutoML)幾個重要方向匯總
?超參數(shù)優(yōu)化(HPO)
學習器模型中一般有兩類參數(shù),一類是可以從數(shù)據(jù)中學習估計得到,還有一類參數(shù)時無法從數(shù)據(jù)中估計,只能靠人的經(jīng)驗進行設計指定,后者成為超參數(shù)。比如,支持向量機里面的C,Kernal,game;樸素貝葉斯里面的alpha等。
超參數(shù)優(yōu)化有很多方法,最常見的類型是黑盒優(yōu)化(black-box function optimization)。所謂黑盒優(yōu)化,就是將決策網(wǎng)絡當作是一個黑盒來進行優(yōu)化,僅關(guān)心輸入和輸出,而忽略其內(nèi)部機制。決策網(wǎng)絡通常是可以參數(shù)化的,這時候我們進行優(yōu)化首先要考慮的是收斂性。以下的幾類方法都是屬于黑盒優(yōu)化:
網(wǎng)格搜索(grid search)
Grid search是一種通過遍歷給定的參數(shù)組合來優(yōu)化模型表現(xiàn)的方法。網(wǎng)格搜索的問題是很容易發(fā)生維度災難,優(yōu)點是很容易并行。
隨機搜索(random search)
隨機搜索是利用隨機數(shù)求極小點而求得函數(shù)近似的最優(yōu)解的方法。
貝葉斯優(yōu)化
貝葉斯優(yōu)化是一種迭代的優(yōu)化算法,包含兩個主要的元素,輸入數(shù)據(jù)假設的模型和一個采集函數(shù)用來決定下一步要評估哪一個點。每一步迭代,都使用所有的觀測數(shù)據(jù)fit模型,然后利用激活函數(shù)預測模型的概率分布,決定如何利用參數(shù)點,權(quán)衡是Explaoration還是Exploitation。相對于其它的黑盒優(yōu)化算法,激活函數(shù)的計算量要少很多,這也是為什么貝葉斯優(yōu)化被認為是更好的超參數(shù)調(diào)優(yōu)的算法的原因。
黑盒優(yōu)化的一些工具:
Hyperopt:是一個Python庫,可以用來尋找實數(shù),離散值,條件維度等搜索空間的最佳值。
Google Vizier:是Google的內(nèi)部的機器學習系統(tǒng),Google Vizier能夠利用遷移學習等技術(shù)自動優(yōu)化其他機器學習系統(tǒng)的超參數(shù)。
Advisor:Google Vizier的開源實現(xiàn)。
Katib:基于Kubernetes的超參數(shù)優(yōu)化工具。
由于優(yōu)化目標具有不連續(xù)、不可導等數(shù)學性質(zhì),所以一些搜索和非梯度優(yōu)化算法被用來求解該問題,包括我們上面提到的這些黑盒算法。此類算法通過采樣和對采樣的評價進行搜索,往往需要大量對采樣的評價才能獲得比較好的結(jié)果。然而,在自動機器學習任務中評價往往通過k折交叉驗證獲得,在大數(shù)據(jù)集的機器學習任務上,獲得一個評價的時間代價巨大。這也影響了優(yōu)化算法在自動機器學習問題上的效果,所以一些減少評價代價的方法被提出來,其中多保真度優(yōu)化(multi-fidelity methods)就是其中的一種。這里的技術(shù)包括:基于學習曲線來決定是否要提前終止訓練等等。
?元學習(Meta Learning)
元學習也就是‘學習如何學習’,通過對現(xiàn)有的學習任務之間的性能差異進行系統(tǒng)的觀測,學習已有的經(jīng)驗和元數(shù)據(jù),用于更好地執(zhí)行新的學習任務。這樣做可以極大地改進機器學習流水線或者神經(jīng)網(wǎng)絡架構(gòu)的設計,也可以用數(shù)據(jù)驅(qū)動的方式取代手工作坊似的算法工程工作。
從某種意義上來說,元學習覆蓋了超參數(shù)優(yōu)化,因為元數(shù)據(jù)的學習包含了:超參數(shù)、流水線的構(gòu)成、神經(jīng)網(wǎng)絡架構(gòu)、模型構(gòu)成、元特征等等。機器學習的算法又稱為‘學習器’,學習器是假定一個模型,該模型擁有很多未知參數(shù),利用訓練數(shù)據(jù)和優(yōu)化算法來找到最適合這些訓練數(shù)據(jù)的參數(shù),生成一個新的算法或者參數(shù)已知的模型,并利用該模型/算法來預測新的未知數(shù)據(jù)。如果說世界上只有一個模型,那么問題就簡單了,但實際上是模型有很多,不同的模型擁有不同的超參數(shù),我們往往還會把模型和算法組裝在一起構(gòu)成復合模型和機器學習的流水線,這個時候就需要知道解決不同的問題要構(gòu)建哪些不同的模型。元學習可以把超參數(shù)、流水線、神經(jīng)網(wǎng)絡架構(gòu)這些都看成是一個新模型的未知參數(shù),把不同學習任務的性能指標看成是輸入數(shù)據(jù),這樣我們就可以利用優(yōu)化算法來找到性能最好的那組參數(shù)。這個模式可以一直嵌套,也就是說,你可以有“元元元學習”。
元學習的方法包括:1)通過模型評估來學習;2)通過任務的屬性/元特征來學習。元學習的一個很大的挑戰(zhàn)就是如果通過很少的訓練數(shù)據(jù)來學習一個復雜的模型,這就是one-shot或者few-shot的問題。像人類的學習一樣,每次學習無論成功失敗,我們都收獲一定的經(jīng)驗,人類很少從頭學習。在構(gòu)建自動學習的時候,我們也應該充分利用已有的每一次的學習經(jīng)驗,逐步地改進,使得新的學習更加有效。
?神經(jīng)網(wǎng)絡架構(gòu)搜索(Neural Architecture Search,NAS)
提起AutoML,其實大多數(shù)人都是因為Google的AutoML系統(tǒng)才知道這個故事的。隨著深度學習的流行,神經(jīng)網(wǎng)絡的架構(gòu)變得越來越復雜,越來越多的手工工程也隨之而來。神經(jīng)網(wǎng)絡架構(gòu)搜索就是為了解決這個問題。
NAS主要包含三個部分:
搜索空間(search space):搜索空間原則上定義了可以代表哪些體系結(jié)構(gòu)。結(jié)合適用于任務屬性的先驗知識可以減小搜索空間大小并簡化搜索。然而,這也引入了人為偏見,可能會阻止找到超越當前人類知識的新穎架構(gòu)構(gòu)建塊(building blocks)。
搜索策略(search strategy):搜索策略說明了如何做空間搜索。它包含了經(jīng)典的探索-開發(fā)(exploration-exploitation)之間的權(quán)衡。一方面,需要快速找到性能良好的架構(gòu),另一方面,避免過早收斂到次優(yōu)架構(gòu)(suboptimal architecture)區(qū)域。
性能估計策略(performance estimation strategy):NAS的目標通常是找到在未知數(shù)據(jù)實現(xiàn)高預測性能的架構(gòu)。性能評估是指評估此性能的過程:最簡單的選擇是對數(shù)據(jù)架構(gòu)執(zhí)行標準訓練和驗證,但遺憾的是,這種方法計算成本很高,限制了可以探索的體系結(jié)構(gòu)量。因此,最近的研究大多集中在開發(fā)出方法去降低這些性能估計成本。