AutoML——降低機器學習門檻的利器

很多初入機器學習的人會執泥於看論文和數學公式去理解背後的原理,可是絕大部分人這麼干之後,不出幾日就會沒有繼續深入的慾望了。我的建議是去看代碼,知道如何實現了,通過現象看本質,很快就能明白原理是什麼,跟上面的方法是殊途同歸的,但是缺點是你理解的東西很難讓別人也明白。這就是為啥我曾經在講座上講的東西,自認為很簡單的東西,聽的人就是聽不懂。

閑言少敘,書歸正傳,今天給大家講的是自動學習機AutoML。

本人是程序員出身,做過跟機器學習、深度學習相關的大大小小的項目也不下十個了,發現一個有趣的現象,不管是圖像識別、語音識別還是機器翻譯的項目結構差別是很小的,但是一個效果好的模型卻需要大量的經驗來調優。實現過程有以下步驟:

數據預處理

特性選擇

模型演算法選擇

調參

上線後模型的再優化

效果評估

為了讓機器學習模型的設計變得更加簡單,我們希望能讓這一過程自動化。谷歌團隊在這方面做不少嘗試,他們將AutoML應用於深度學習的兩大數據集中,專註圖像識別的 CIFAR-10 與語言建模的 Penn Treebank。在兩個數據集上,系統自行設計的模型性能表現與目前機器學習專家所設計的領先模型不相上下。他們的實現方式是,使用一個控制器神經網路生成一個子模型架構,然後在特定的任務中對其進行訓練和評估。然後,該反饋被用來通知控制器作出改進下一輪的提案。我們重複這個過程數千次——生成新的架構,測試它們,並將反饋給控制器來學習。

至於某些媒體上宣傳的《谷歌發布「AutoML」新技術人工智慧可自我創造》,我只能呵呵了,想像力真好!AutoML主要完成的功能有兩個,一是模型/演算法選擇,二是模型超參數優化。

涉及的方法有:

貝葉斯優化

結構化數據和超大數據的邏輯回歸

元學習

遷移學習

組合優化

整體過程:

1、元學習的熱啟動:在機器學習框架中尋找效果好的演算法;計算不同數據集之間的相似度,相似的數據可以採取類似的超參數。

2、超參數優化,演算法包括:Hyperopt(TPE 演算法);SMAC(基於隨機森林);Spearmint。輸入不同的超參數為,以損失函數為準確率,調優器會在隨機選擇一些值的基礎上,利用貪心演算法去尋優。

AutoML的開源實現地址:

automl

tpot

auto_ml是Githut上為數不多的為生產環境設計的代碼,包含三個極優秀的開源框架:XGBoost,TensorFlow和LightGBM。可用於分類和預測任務,單次預測僅需1毫秒,支持序列化導出模型到本地。僅需幾行代碼即可構建一個回歸模型:

from auto_mlimport Predictor

fromauto_ml.utils import get_boston_dataset

fromauto_ml.utils_models import load_ml_model

# Load data

df_train,df_test = get_boston_dataset()

# Tell auto_mlwhich column is output

# Also notecolumns that arent purely numerical

# Examplesinclude [nlp, date, categorical, ignore]

column_descriptions= {

MEDV: output ,

CHAS: categorical

}

ml_predictor =Predictor(type_of_estimator=regressor,column_descriptions=column_descriptions)

ml_predictor.train(df_train)

# Score themodel on test data

test_score =ml_predictor.score(df_test, df_test.MEDV)

# auto_ml isspecifically tuned for running in production

# It can getpredictions on an individual row (passed in as a dictionary)

# A singleprediction like this takes ~1 millisecond

# Here we willdemonstrate saving the trained model, and loading it again

file_name =ml_predictor.save()

trained_model =load_ml_model(file_name)

# .predict and.predict_proba take in either:

# A pandasDataFrame

# A list ofdictionaries

# A singledictionary (optimized for speed in production evironments)

predictions =trained_model.predict(df_test)

print(predictions)

個人認為,AutoML才是真正的機器學習,它把經驗性的工作自動化,現在的機器學習只是半成品。AutoML能極大地降低未來機器學習的門檻,將是普通人使用機器學習的利器。

版權聲明:本文為個人原創文章,歡迎轉載,請保留署名及出處,作者古筱凡,出處知乎:中谷視覺。


推薦閱讀:

學習筆記CB001:NLTK庫、語料庫、詞概率、雙連詞、詞典
2-1 Model Representation
機器學習基礎與實踐(一)----數據清洗
1-4 Supervised Learning

TAG:機器學習 | 深度學習DeepLearning | Python |