自動機器學習簡述(AutoML)

爲何須要自動機器學習

對於機器學習的新用戶而言,使用機器學習算法的一個主要的障礙就是算法的性能受許多的設計決策影響。隨着深度學習的流行,工程師須要選擇相應的神經網絡架構,訓練過程,正則化方法,超參數,等等,全部的這些都對算法的性能有很大的影響。因而深度學習工程師也被戲稱爲調參工程師。html

自動機器學習(AutoML)的目標就是使用自動化的數據驅動方式來作出上述的決策。用戶只要提供數據,自動機器學習系統自動的決定最佳的方案。領域專家再也不須要苦惱於學習各類機器學習的算法。python

自動機器學習不光包括你們熟知的算法選擇,超參數優化,和神經網絡架構搜索,還覆蓋機器學習工做流的每一步:git

  • 自動準備數據
  • 自動特徵選擇
  • 自動選擇算法
  • 超參數優化
  • 自動流水線/工做流構建
  • 神經網絡架構搜索
  • 自動模型選擇和集成學習

超參數優化 Hyper-parameter Optimization

學習器模型中通常有兩類參數,一類是能夠從數據中學習估計獲得,還有一類參數時沒法從數據中估計,只能靠人的經驗進行設計指定,後者成爲超參數。好比,支持向量機裏面的C, Kernal, game;樸素貝葉斯里面的alpha等。github

超參數優化有不少方法:算法

最多見的類型是黑盒優化 (black-box function optimization)。所謂黑盒優化,就是將決策網絡看成是一個黑盒來進行優化,僅關心輸入和輸出,而忽略其內部機制。決策網絡一般是能夠參數化的,這時候咱們進行優化首先要考慮的是收斂性。數組

如下的幾類方法都是屬於黑盒優化:網絡

  • 網格搜索 (grid search)
    Grid search你們都應該比較熟悉,是一種經過遍歷給定的參數組合來優化模型表現的方法。網格搜索的問題是很容易發生維度災難,優勢是很容易並行。
  • 隨機搜索 (random search)
    隨機搜索是利用隨機數求極小點而求得函數近似的最優解的方法。

    不少時候,隨機搜索比網格搜索效果要更好,可是咱們能夠從上圖看出,它們都不能保證找到最優解。
  • 貝葉斯優化
    貝葉斯優化是一種迭代的優化算法,包含兩個主要的元素,輸入數據假設的模型和一個採集函數用來來決定下一步要評估哪個點。每一步迭代,都使用全部的觀測數據fit模型,而後利用激活函數預測模型的機率分佈,決定如何利用參數點,權衡是Explaoration仍是Exploitation。相對於其它的黑盒優化算法,激活函數的計算量要少不少,這也是爲何貝葉斯優化被認爲是更好的超參數調優的算法。

黑盒優化的一些工具:架構

  • hyperopt
    hyperopt 是一個Python庫,能夠用來尋找實數,離散值,條件維度等搜索空間的最佳值。
  • Google Vizier
    Google的內部的機器學習系統 Google Vizier可以利用遷移學習等技術自動優化其餘機器學習系統的超參數
  • advisor
    Google Vizier的開源實現。
  • katib 
    基於Kubernetes的超參數優化工具

因爲優化目標具備不連續、不可導等數學性質,因此一些搜索和非梯度優化算法被用來求解該問題,包括咱們上面提到的這些黑盒算法。此類算法經過採樣和對採樣的評價進行搜索,每每須要大量對採樣的評價才能得到比較好的結果。然而,在自動機器學習任務中評價每每經過 k 折交叉驗證得到,在大數據集的機器學習任務上,得到一個評價的時間代價巨大。這也影響了優化算法在自動機器學習問題上的效果。因此一些減小評價代價的方法被提出來,其中多保真度優化(multi-fidelity methods就是其中的一種。這裏的技術包括:基於學習曲線來決定是否要提早終止訓練,探索-利用困境(exploration exploitation)的多臂老虎機算法 (Multi-armed bandit)等等。app

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

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

  • 對於大規模的模型或者複雜的機器學習流水線而言,須要評估的空間規模很是大
  • 配置空間很複雜
  • 沒法或者很難利用損失函數的梯度變化
  • 訓練集合的規模過小
  • 很容易過擬合

相關參考

元學習 Meta Learning

元學習也就是‘學習如何學習’,經過對現有的學習任務之間的性能差別進行系統的觀測,而後學習已有的經驗和元數據,用於更好的執行新的學習任務。這樣作能夠極大的該靜機器學習流水線或者神經網絡架構的設計,也能夠用數據驅動的方式取代手工做坊似的算法工程工做。

從某種意義上來講,元學習覆蓋了超參數優化,由於元數據的學習包含了:超參數,流水線的構成,神經網絡架構,模型構成,元特徵等等。

機器學習的算法咱們又稱爲‘學習器’,學習器就是假定一個模型,該模型擁有不少未知參數,利用訓練數據和優化算法來找到最適合這些訓練數據的參數,生成一個新的算法,或者參數已知的模型,並利用該模型/算法來預測新的未知數據。若是說世界上只有一個模型,那麼問題就簡單了,問題是模型有不少,不一樣的模型擁有不一樣的超參數,咱們每每還會把模型和算法組裝在一塊兒構成複合模型和機器學習的流水線,這個時候,我就須要知道解決不一樣的問題要構建那些不一樣的模型。元學習就在這個時候,咱們能夠把超參數,流水線,神經網絡架構這些都當作是一個新的模型的未知參數,把不一樣學習任務的性能指標當作是輸入數據,這樣咱們就能夠利用優化算法來找到性能最好的那組參數。這個模式能夠一直嵌套,也就是說,你能夠有‘元元元學習‘,固然我但願你不要走得太遠,找不到回來的路。

元學習的方法包括:

  • 經過模型評估來學習
  • 經過任務的屬性,元特徵來學習
    如下列出了一些常見的元特徵
  • 從現有的模型中學習,包括:
    • 遷移學習
    • 利用RNN在學習過程當中修改本身的權重

元學習的一個很大的挑戰就是若是經過不多的訓練數據來學習一個複雜的模型,這就是one-shot或者few-shot的問題。

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

相關參考:

神經網絡架構搜索 Neural Architecture Search

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

NAS主要包含三個部分:

  • 搜索空間 search space
  • 搜索策略 search strategy
  • 性能估計策略 performance estimation strategy

相關參考

自動化特徵工程

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

Featuretools是一個開源庫,用來實現自動化特徵工程。它是一個很好的工具,旨在加快特徵生成的過程,從而讓你們有更多的時間專一於構建機器學習模型的其餘方面。換句話說,它使你的數據處於「等待機器學習」的狀態。

Featuretools程序包中的三個主要組件:

  • 實體(Entities)

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

  • 特徵基元(Feature primitives)

  • 一個Entity能夠視做是一個Pandas的數據框的表示,多個實體的集合稱爲Entityset。

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

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

 

參考:

其它自動機器學習工具集

如下列出一些開源的自動機器學習工具空你們參考,選擇。

參考:

相關文章
相關標籤/搜索