Google自動程式設計框架AutoML入門指南

longmanma發表於2021-09-09

前言

本篇是和Kabuto_hui(ISN國家重點實驗室成員)合作修改生成的,感謝Kabuto_hui。更多技術文章請訪問,Kabuto_hui的csdn部落格()連結:http://blog.csdn.net/kabuto_hui

導讀

Google在AI First的戰略下,陸續釋出AI相關的產品,技術。據最新的報導:Google AutoML 系統自主編寫機器學習程式碼,其效率在某種程度上竟然超過了專業的研發工程師。AutoML的目標並不是要將人類從開發過程中剝離出去,也不是要開發全新的人工智慧,而是讓人工智慧繼續維持某種速度來改變世界。筆者認為,機器程式設計即將取代程式設計師,純屬無稽之談。

腦圖

以下是一個學習指南。

AutoML-自動機器學習的由來

​ 今年在 ICML 2017International Conference on Machine Learning, ICML)國際機器學習大會和ECMLPKDD 2017(European Conference on Machine Learning and Principles and Practice of Knowledge Discovery in Databases, ECMLPKDD)歐洲機器學習會議和資料庫知識發現的原理與實踐上將會舉行關於AutoML的研討會。那麼什麼是AutoML呢?

img

概述:什麼是AutoML?

​ 機器學習(Machine Learning, ML)近年來取得了相當大的成功,越來越多的學科需要依賴它。然而,這個成功的關鍵是需要人類機器學習工程師完成以下的工作:

  • 預處理資料
  • 選擇適當的功能
  • 選擇一個適當的模型選擇系列
  • 優化模型超引數
  • 後處理機器學習模型
  • 嚴格分析所得的結果

由於這些任務的複雜性通常超過了非機器學習專家的能力,機器學習應用的快速增長產生了對於現成的機器學習方法的需求,而且這些現成的機器學習方法簡單易使用且不需要專業的知識。我們稱以機器學習的漸進自動化為目標的研究領域為AutoML(Automatic Machine Learning, AutoML)。

​雖然它的終端使用者面向那些沒有專業機器學習知識的人,但AutoML依然向機器學習專業人士提供了一些新的工具,如:

  • 執行深層表示的架構搜尋

  • 分析超引數的重要性

遵循“優化程式設計”的範例,AutoML主張開發可以用資料驅動的方式自動例項化的靈活軟體包。

AutoML的架構

aa.png

AutoML網路的設計從卷積架構的初始版本進行多年的仔細實驗和細化完成的。

在AutoML中,一種控制器神經網路能夠提議一個“子”模型架構,然後針對特定任務進行訓練與質量評估;而反饋給控制器的資訊則會被用來改進下一輪的提議。我們重複這個過程數千次——從而生成新的架構,然後經過測試和反饋,讓控制器進行學習。最終,控制器將學會為好的架構分配高的概率,以便在延續的驗證資料集上實現更高的準確性,並且對於架構空間的差異很小。如下圖所示:

hh.png

如果AutoML取得成功的話,這可以啟發新型的神經網路,不僅專家可以根據自己的特定需求建立神經網路,機器學習可以讓每個人都從中獲益。

AutoML的例項

​ AutoML旨在建立可以由ML新手”開箱即用“的軟體。最近可能展示的一些例項:

  • AutoWEKA是一種可以同時選擇機器學習演算法和其對應超引數的方法;通過使用WEKA包,可以為各種資料集自動生成良好的模型。
  • 深層神經網路眾所周知依賴於他們的超引數,一些現代優化器在引數設定方面已經比人類做的更好了(如Bergstra等Snoek等)。
  • 建立一個模型搜尋科學:一個複雜的計算機視覺架構可以自動被例項化以在3種不同的任務中獲得最先進的結果:面部匹配,面部識別和物件識別。

AutoML所使用的方法

​ AutoML借鑑了機器學習的許多學科,主要是:

  • 貝葉斯優化
  • 結構化資料和大資料的迴歸模型
  • Meta 學習
  • 轉移學習
  • 組合優化

促進AutoML的超引數優化系統

​ 用於貝葉斯優化的機器學習超引數系統可以促進AutoML,主要包括:

  • Hyperopt,包括TPE演算法

  • 基於序列模型的演算法配置(SMAC)

  • [Spearmint](https://github.com/JasperSnoek/spearmint

此外,還提供了兩個可用於超引數優化的軟體包:

  • RoBO-魯棒的貝葉斯優化框架(Robust Bayesian Optimization framework)

  • SMAC3 – SMAC演算法的python實現

AutoML的功能淺析

​ 一般情況下,進行機器學習首先需要大量的訓練資料,再由機器學習工程師/資料科學家對資料進行分析,設計演算法形成訓練模型;這需要大量的專業知識。但是,如果使用AutoML,就像是在使用一個工具,我們只需要將訓練資料集傳入AutoML,那麼這個工具就會自動幫我們生成引數和模型,形成訓練模型,這樣即使不具備機器學習方面深入的專業知識也可以進行機器學習方面的工作。

AutoML

目前還需要人類去使用AutoML,配置引數;在未來就是通過大量的人工智慧來生成AutoML Box,再將資料傳遞到AutoML Box中生產訓練模型,如下圖所示:

AutoML2

參考資料

  • AutoML

  • http://www.ml4aad.org/automl/workshops/

  • http://slides.com/streguer/automl/fullscreen#/

相關文章