自動機器學習簡述(AutoML)

EAWorld發表於2019-03-07

自動機器學習簡述(AutoML)

轉載本文需註明出處:微信公眾號EAWorld,違者必究。

目錄:

一、為什麼需要自動機器學習

二、超引數優化 Hyper-parameter Optimization

三、元學習 Meta Learning

四、神經網路架構搜尋 Neural Architecture Search

五、自動化特徵工程

六、其它自動機器學習工具集

一、為什麼需要自動機器學習

對於機器學習的新使用者而言,使用機器學習演算法的一個主要的障礙就是演算法的效能受許多的設計決策影響。隨著深度學習的流行,工程師需要選擇相應的神經網路架構,訓練過程,正則化方法,超引數等等,所有的這些都對演算法的效能有很大的影響。於是深度學習工程師也被戲稱為調參工程師。

自動機器學習(AutoML)的目標就是使用自動化的資料驅動方式來做出上述的決策。使用者只要提供資料,自動機器學習系統自動的決定最佳的方案。領域專家不再需要苦惱於學習各種機器學習的演算法。

自動機器學習不光包括大家熟知的演算法選擇,超引數優化,和神經網路架構搜尋,還覆蓋機器學習工作流的每一步:

自動機器學習簡述(AutoML)

  • 自動準備資料

  • 自動特徵選擇

  • 自動選擇演算法

  • 超引數優化

  • 自動流水線/工作流構建

  • 神經網路架構搜尋

  • 自動模型選擇和整合學習

二、超引數優化

Hyper-parameter Optimization

學習器模型中一般有兩類引數,一類是可以從資料中學習估計得到,還有一類引數時無法從資料中估計,只能靠人的經驗進行設計指定,後者成為超引數。比如,支援向量機裡面的C Kernal Gamma;樸素貝葉斯里面的alpha等。

超引數優化有很多方法:

最常見的型別是黑盒優化 (black-box function optimization)。所謂黑盒優化,就是將決策網路當作是一個黑盒來進行優化,僅關心輸入和輸出,而忽略其內部機制。決策網路通常是可以引數化的,這時候我們進行優化首先要考慮的是收斂性

以下的幾類方法都是屬於黑盒優化:

  • 網格搜尋 (grid search)

    Grid search大家都應該比較熟悉,是一種通過遍歷給定的引數組合來優化模型表現的方法。網格搜尋的問題是很容易發生維度災難,優點是很容易並行。

  • 隨機搜尋 (random search)

    隨機搜尋是利用隨機數求極小點而求得函式近似的最優解的方法。

自動機器學習簡述(AutoML)


很多時候,隨機搜尋比網格搜尋效果要更好,但是我們可以從上圖看出,它們都不能保證找到最優解。

  • 貝葉斯優化(http://t.cn/EfRNqz8)

    貝葉斯優化是一種迭代的優化演算法,包含兩個主要的元素,輸入資料假設的模型和一個採集函式用來來決定下一步要評估哪一個點。每一步迭代,都使用所有的觀測資料fit模型,然後利用啟用函式預測模型的概率分佈,決定如何利用引數點,權衡是Explaoration還是Exploitation。相對於其它的黑盒優化演算法,啟用函式的計算量要少很多,這也是為什麼貝葉斯優化被認為是更好的超引數調優的演算法。

黑盒優化的一些工具:

  • hyperopt(http://t.cn/RyJDbzH)

    hyperopt 是一個Python庫,可以用來尋找實數,離散值,條件維度等搜尋空間的最佳值

  • Google Vizier

    Google的內部的機器學習系統 Google Vizier能夠利用遷移學習等技術自動優化其他機器學習系統的超引數

  • advisr(http://t.cn/RpTEMhK)

    Google Vizier的開源實現

  • katib (http://t.cn/EvQJWbq)

    基於Kubernetes的超引數優化工具

由於優化目標具有不連續、不可導等數學性質,所以一些搜尋和非梯度優化演算法被用來求解該問題,包括我們上面提到的這些黑盒演算法。此類演算法通過取樣和對取樣的評價進行搜尋,往往需要大量對取樣的評價才能獲得比較好的結果。然而,在自動機器學習任務中評價往往通過 k 折交叉驗證獲得,在大資料集的機器學習任務上,獲得一個評價的時間代價巨大。這也影響了優化演算法在自動機器學習問題上的效果。所以一些減少評價代價的方法被提出來,其中多保真度優化(multi-fidelity methods)就是其中的一種。這裡的技術包括:基於學習曲線來決定是否要提前終止訓練,探索-利用困境(exploration exploitation)的多臂老虎機演算法 (Multi-armed bandit)(http://t.cn/R5AMrlH)等等。

另外還有一些研究是基於梯度下降的優化。

超引數優化面臨許多挑戰:

  • 對於大規模的模型或者複雜的機器學習流水線而言,需要評估的空間規模非常大

  • 配置空間很複雜

  • 無法或者很難利用損失函式的梯度變化

  • 訓練集合的規模太小

  • 很容易過擬合

相關參考

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

三、元學習 Meta Learning

元學習也就是"學習如何學習",通過對現有的學習任務之間的效能差異進行系統的觀測,然後學習已有的經驗和後設資料,用於更好的執行新的學習任務。這樣做可以極大的該靜機器學習流水線或者神經網路架構的設計,也可以用資料驅動的方式取代手工作坊似的演算法工程工作。

從某種意義上來說,元學習覆蓋了超引數優化,因為後設資料的學習包含了:超引數,流水線的構成,神經網路架構,模型構成,元特徵等等。

機器學習的演算法我們又稱為‘學習器’,學習器就是假定一個模型,該模型擁有很多未知引數,利用訓練資料和優化演算法來找到最適合這些訓練資料的引數,生成一個新的演算法,或者引數已知的模型,並利用該模型/演算法來預測新的未知資料。如果說世界上只有一個模型,那麼問題就簡單了,問題是模型有很多,不同的模型擁有不同的超引數,我們往往還會把模型和演算法組裝在一起構成複合模型和機器學習的流水線,這個時候,我就需要知道解決不同的問題要構建那些不同的模型。元學習就在這個時候,我們可以把超引數,流水線,神經網路架構這些都看成是一個新的模型的未知引數,把不同學習任務的效能指標看成是輸入資料,這樣我們就可以利用優化演算法來找到效能最好的那組引數。這個模式可以一直巢狀,也就是說,你可以有‘元元元學習‘,當然我希望你不要走得太遠,找不到回來的路。

元學習的方法包括:

  • 通過模型評估來學習

  • 通過任務的屬性,元特徵來學習

    以下列出了一些常見的元特徵

自動機器學習簡述(AutoML)

  • 從現有的模型中學習,包括:

    遷移學習

    利用RNN在學習過程中修改自己的權重

元學習的一個很大的挑戰就是如果通過很少的訓練資料來學習一個複雜的模型,這就是one-shot(http://t.cn/EfRmJZp)或者few-shot的問題。

像人類的學習一樣,每次學習無論成功失敗,我們都收穫一定的經驗,人類很少從頭學習。在構建自動學習的時候,我們也應該充分利用已有的每一次的學習經驗,逐步的改進,使得新的學習更加有效。

相關參考:

http://t.cn/EfRuJPM

http://t.cn/EyEri3B

http://t.cn/EfR1Iek

四、神經網路架構搜尋

Neural Architecture Search

提起AutoML,其實大多數人都是因為Google的AutoML系統才知道這個故事的。隨著深度學習的流行,神經網路的架構變得越來越複雜,越來越多的手工工程也隨之而來。神經網路架構搜尋就是為了解決這個問題。

NAS主要包含三個部分:

  • 搜尋空間 search space

  • 搜尋策略 search strategy

  • 效能估計策略 performance estimation strategy

自動機器學習簡述(AutoML)


相關參考

http://t.cn/EfRD7WS

五、自動化特徵工程

自動化特徵工程可以幫助資料科學家基於資料集自動建立能夠最好的用於訓練的特徵。

Featuretools(http://t.cn/Rl9tYUT)是一個開源庫,用來實現自動化特徵工程。它是一個很好的工具,旨在加快特徵生成的過程,從而讓大家有更多的時間專注於構建機器學習模型的其他方面。換句話說,它使你的資料處於“等待機器學習”的狀態。

自動機器學習簡述(AutoML)

Featuretools程式包中的三個主要元件:

  • 實體(Entities)

  • 深度特徵綜合(Deep Feature Synthesis ,DFS)

  • 特徵基元(Feature primitives)

一個Entity可以視作是一個Pandas的資料框的表示,多個實體的集合稱為Entityset。

深度特徵綜合(DFS)與深度學習無關,不用擔心。實際上,DFS是一種特徵工程方法,是Featuretools的主幹。它支援從單個或者多個資料框中構造新特徵。

DFS通過將特徵基元應用於Entityset的實體關係來構造新特徵。這些特徵基元是手動生成特徵時常用的方法。例如,基元“mean”將在聚合級別上找到變數的平均值。

相關參考

http://t.cn/EfRs7O2

http://t.cn/EfRsias

六、其它自動機器學習工具集

以下列出一些開源的自動機器學習工具空大家參考、選擇

  • 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)

自動機器學習簡述(AutoML)

關於作者陶剛,Splunk資深軟體工程師,架構師,畢業於北京郵電大學,現在在溫哥華負責Splunk機器學習雲平臺的開發,曾經就職於SAP,EMC,Lucent等企業,擁有豐富的企業應用軟體開發經驗,熟悉軟體開發的各種技術,平臺和開發過程,在商務智慧,機器學習,·資料視覺化,資料採集,網路管理等領域都有涉及。

關於EAWorld:微服務,DevOps,資料治理,移動架構原創技術分享。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31562043/viewspace-2637851/,如需轉載,請註明出處,否則將追究法律責任。

相關文章