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

前言

本篇是和Kabuto_hui(ISN國家重點實驗室成員)合做修改生成的,感謝Kabuto_hui。更多技術文章請訪問,Kabuto_hui的csdn博客()連接:http://blog.csdn.net/kabuto_huipython

導讀

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

腦圖

如下是一個學習指南。程序員

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呢?github

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

參考資料

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

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

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

相關文章
相關標籤/搜索