Google自動編程框架AutoML入門指南

前言

本篇是和Kabuto_hui(ISN國家重點實驗室成員)合作修改生成的,感謝Kabuto_hui。更多技術文章請訪問,Kabuto_hui的csdn博客()鏈接: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呢?

概述:什麼是AutoML?

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

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

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

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

  • 執行深層表示的架構搜索
  • 分析超參數的重要性

遵循「優化編程」的範例,AutoML主張開發可以用數據驅動的方式自動實例化的靈活軟體包。

##AutoML的架構

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

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

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

AutoML的實例

AutoML旨在創建可以由ML新手」開箱即用「的軟體。最近可能展示的一些實例:

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

AutoML所使用的方法

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

  • 貝葉斯優化
  • 結構化數據和大數據的回歸模型
  • Meta 學習
  • 轉移學習
  • 組合優化

促進AutoML的超參數優化系統

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

  • Hyperopt,包括TPE演算法
  • 基於序列模型的演算法配置(SMAC)
  • [Spearmint](github.com/JasperSnoek…

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

  • RoBO-魯棒的貝葉斯優化框架(Robust Bayesian Optimization framework)
  • SMAC3 - SMAC演算法的python實現

AutoML的功能淺析

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

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

參考資料

  • www.ml4aad.org/automl/
  • www.ml4aad.org/automl/work…
  • slides.com/streguer/au…

我的文章首發於公眾號 互聯網學術(IT-paper) 掃碼上車了解最新互聯網學術熱點

weixin.qq.com/r/dztQSJT (二維碼自動識別)


推薦閱讀:

機器學習項目流程清單
國內外深度學習開放數據集下載集合(值得收藏,不斷更新)
有bioinformatics, ML, 或者phd生涯問題的同學,可以私信我
【一起看論文】隨機特徵
10分鐘圖解論文直覺(開題)

TAG:人工智慧 | 機器學習 | 神經網路 |