谷歌AutoML鼻祖新作AutoML-Zero:從零開始構建機器學習算法

谷歌AutoML鼻祖新作AutoML-Zero:從零開始構建機器學習算法

【新智元導讀】市面上的自動機器學習算法多如牛毛,但並沒有得到很好的普及,因為這些算法限制了搜索的空間,很多研究者還是需要自己設計機器學習模型的結構,而谷歌此次發佈的AutoML-Zero搜索空間完全沒有限制,可以從最基礎的數學公式開始。「新智元急聘主筆、編輯、運營經理、客戶經理,添加HR微信(Dr-wly)瞭解詳情。」

AutoML 試圖將特徵工程、模型選擇、參數調節這些與特徵、模型、優化、評價有關的重要步驟進行自動化地學習,使得機器學習模型無需人工干預即可生成。谷歌這次提出的方法跟以往的有何不同呢?

新方法可自動搜索新算法,僅利用基本的數學公式

Automl-Zero 旨在自動發現機器學習算法,從空的或隨機的程序開始,只使用基本的數學運算。它可以同時無偏好地搜索機器學習算法的所有方面,包括模型結構和學習策略

儘管 Automl-Zero 的搜索域很廣,但進化搜索看起來表現不錯,通過搜索發現了線性迴歸、帶有反向傳播的雙層神經網絡

,甚至是超過手工設計的複雜度相當的基線算法。

谷歌AutoML鼻祖新作AutoML-Zero:從零開始構建機器學習算法

上面的圖顯示了我們實驗中的一個例子,可以看到演化算法是如何來一步步解決二分類任務的。首先是個線性模型,沒有任何優化方法,然後逐步發現了 SGD 來進行優化,接著開始加入隨機的學習率,再往後發現了ReLU激活函數,隨機權重初始化,梯度歸一化等等,越來越接近我們手工設計的網絡結構和優化方法。

谷歌AutoML鼻祖新作AutoML-Zero:從零開始構建機器學習算法

如果想了解更多的細節可以去論文中查找。原文鏈接:https://arxiv.org/abs/2003.03384

幾乎從零開始,跟傳統的組裝型自動機器學習區別很大

我們手工構建一個典型的機器學習模型,要經過以下幾個步驟,數據預處理、模型構建、學習、預測,而 AutoML-Zero 的工作原理,可以簡單理解為將各個步驟涉及的基本數學方法放在一個籃子裡,然後隨機從籃子取出放在對應的步驟,利用進化搜索,不斷得到最優的組合

AutoML-Zero 跟之前的自動機器學習有什麼異同呢?之前的自動學習主要集中在體系結構上,它依賴於專家設計的複雜層作為構建塊——或類似的限制性搜索空間。我們的目標是證明 AutoML 可以走得更遠: 只需使用基本的數學運算作為構建塊,來發現一個完整的機器學習方法, 我們通過引入一個新的框架來證明這一點,在這個搜索空間中可以顯著減少人類經驗的偏見,發現一些有趣的東西。

我們用 auto-sklearn 來解釋下傳統的自動機器學習所使用的方法,對細節感興趣的同學可以看下這篇論文。

谷歌AutoML鼻祖新作AutoML-Zero:從零開始構建機器學習算法

原文鏈接:http://papers.nips.cc/paper/5872-efficient-and-robust-automated-machine-learning.pdf

作者開發了一個基於 scikit-learn 的強大的新 AutoML 系統(使用 15 個分類器,14 個特徵預處理方法和 4 種數據預處理方法,從而產生具有 110 個超參數的結構化搜索空間)。這個系統是在有限的參數空間中,通過自動對比在類似數據集上的性能,以及評估這些自動構造的模型性能,來實現自動搜索最優的機器學習方法。

如何用Python實現傳統的AutoML

到這裡你應該理解了,AutoML-Zero 的普適性更強一些,可以發現未知的機器學習方法,而 auto-sklearn 只是在現有的結構和參數中自動找到最優的。

我們用 Python 來舉個簡單的例子:

<code>import autosklearn.classification
import sklearn.model_selection
import sklearn.datasets
import sklearn.metrics
X, y = sklearn.datasets.load_digits(return_X_y=True)
X_train, X_test, y_train, y_test = \\
sklearn.model_selection.train_test_split(X, y, random_state=1)
AutoML = autosklearn.classification.AutoSklearnClassifier()
AutoML.fit(X_train, y_train)
y_hat = AutoML.predict(X_test)
print("Accuracy score", sklearn.metrics.accuracy_score(y_test, y_hat))
/<code>

如果想親自動手實驗的話可以安裝 Anaconda ,它集成了所需要的大部分Python科學計算庫,然後通過conda安裝 auto-sklearn。


分享到:


相關文章: