機器之心報導
參與:魔王、杜偉、小舟
僅使用基礎數學運算就能自動搜索機器學習算法?谷歌 Quoc V. Le 等人提出了 AutoML-Zero 方法。
AutoML-Zero 旨在通過從空程序或隨機程序開始,僅使用基礎數學運算,來自動發現能夠解決機器學習任務的電腦程式。其目標是同時搜索 ML 算法的所有屬性,包括模型結構和學習策略,同時將人類偏見最小化。
近來,機器學習(ML)取得了顯著的成功,這要歸功於深度神經網絡等 ML 算法。與此同時,這一領域研究中遇到的困難又催生了 AutoML,AutoML 旨在實現 ML 算法的自動化設計。
目前,AutoML 主要通過結合複雜的手動設計組件來開發解決方案。神經架構搜索就是一個典型的示例,在這個子域中,研究人員基於複雜層(如卷積、批歸一化和 dropout)來自動構建神經網絡。
在 AutoML 中使用這些手動設計組件的另一種方法是從零開始搜索完整的算法。這種方法具有一定的難度,因為它需要探索大型且稀疏的搜索空間。但同時,這種方法也具有巨大的潛在益處,它不會偏向於我們已經了解的東西,並且有可能發現新的、更好的 ML 架構。
從零開始學習算法的早期研究主要聚焦算法的一個方面(如學習規則),以減少搜索空間和計算量。但自 20 世紀 90 年代後這類研究逐漸冷門,直到現在才重新得到重視。
2018 年 3 月,谷歌大腦團隊即進行相關研究,使用進化的 AutoML 來發現神經網絡架構。如今,谷歌將這項研究進一步擴展,證明從零開始進化 ML 算法是有可能的。相關研究被 ICML 2020 接收,這項研究出自谷歌大腦團隊 Quoc V. Le 等學者之手。
論文連結:https://arxiv.org/pdf/2003.03384.pdf
GitHub 項目地址:https://github.com/google-research/google-research/tree/master/automl_zero#automl-zero
在這項研究中,谷歌提出了新方法 AutoML-Zero,該方法從空程序(empty program)開始,僅使用基本的數學運算作為構造塊,使用進化方法來自動找出完整 ML 算法的代碼。
在一些小的圖像分類問題上,AutoML-Zero 方法重新發現了一些基本的 ML 技巧,如具備反向傳播的雙層神經網絡和線性回歸等,而這些是之前的研究人員經過數年時間才發現的。
這一結果表明,自動發現更新穎的 ML 算法以解決更棘手的問題,這一想法在未來是可行的。
接下來,我們來看 AutoML-Zero 方法的具體實現原理。
從零開始進化學習算法
谷歌使用經典進化方法的變體「正則化進化搜索方法」來搜索算法空間。這些方法被證明在發現電腦程式方面很有效,其簡潔性和可擴展性使得它們非常適合發現學習算法。
正則化進化搜索方法中的 cycle。
在這項研究中,谷歌團隊使用空程序對群體進行初始化,然後不斷重複循環來生成更好的學習算法。
在每一次循環中,兩個(或更多)隨機模型展開競爭,最準確的模型成為「parent」。之後 parent 模型複製自己得到變異了的子模型,即子模型的代碼以隨機形式進行了修改,例如任意插入、移除或修改一行代碼。
接下來,研究人員在圖像分類任務上評估變異後的算法。
整個過程如下圖所示:
使用空程序對群體進行初始化。經過多代後,得到進化後的群體。其中兩個算法進行競爭,最準確的一個獲勝並生成子模型。經過多次迭代後,最終的群體包含高度準確的分類器。
探索有難度的搜索空間
與之前的 AutoML 工作不同,AutoML-Zero 的搜索空間非常稀疏:準確算法的比例大約是 1:1012。原因在於算法構造塊的細粒度,它僅包含基礎運算,如變量賦值、加和矩陣相乘。在這樣的環境下,隨機搜索無法在合理時間內找到解,然而進化的速度提升了數萬倍。
谷歌研究者將搜索分配到多個機器上,並構建了多個小型分類任務以評估每個子算法。此類評估使用高度優化的代碼執行。
儘管搜索空間稀疏,但隨著時間的推移,進化搜索也能發現更複雜和有效的技術。
最開始進化搜索發現的是最簡單的算法——具備硬編碼權重的線性模型。經過一段時間後,隨機梯度下降(SGD)被創造出來學習權重,儘管梯度本身還沒有作為構造塊。一開始 SGD 存在一些缺陷,但它很快就進行了迭代修復,並開始了對預測和學習算法的一系列改進。
在谷歌的實驗案例中,這一搜索過程發現了一些已有的有用概念。最後,該方法構建的模型優於具有類似複雜性的手動設計模型。
進化實驗的流程。從左到右按時間順序,谷歌研究者發現算法變得越來越複雜,也越來越準確。
進化後的算法
上圖描述了由該方法生成的最佳進化算法。最終得到的算法包含了多項技術,如將噪聲注入作為數據增強方式、雙線性模型、梯度歸一化和加權平均等。對基線的改進也可以遷移到搜索中未用到的數據集。
谷歌在論文中介紹了進化後代碼的不同行對這些技術的實現,並通過控制變量研究驗證了它們的價值。
通過更多的實驗,研究者發現,控制進化過程評估算法適用性的任務能夠指導進化搜索。
例如,當數據量減少時,noisy ReLU 就會出現。當訓練步驟減少時,學習率有所衰減,從而加快收斂速度。
這類有針對性的發現很重要。自動發明工具的機器造出錘子或針是件很有趣的事,但是如果它能在你展示釘子後造出錘子,展示線後造出針,這不是更有趣嗎?
這就像剛才提到的,當數據量較少時(「釘子」),noisy ReLU 出現(「錘子」);當訓練步驟減少時(「線」),學習率出現下降(「針」)。
結論
谷歌這項研究還比較初級,尚未進化出新的算法。但是進化後得到的算法能夠超越搜索空間中存在的簡單神經網絡,這一點已經足夠振奮人心。目前,搜索進程需要大量計算。未來幾年,隨著硬體設備的發展,搜索方法變得更加高效,搜索結果或許會有所改進。
原文連結:https://ai.googleblog.com/2020/07/automl-zero-evolving-code-that-learns.html
2020 WAIC· 開發者日將於 7 月 10 日 - 11 日在線上舉辦,設置主論壇、分論壇、高峰對話、開發者日百度公開課、開源開放 Demo Day、黑客馬拉松等多個環節。添加機器之心小助手微信(syncedai6),備註 「開發者日」,小助手會邀你入群,圍觀直播。
原標題:《谷歌AutoML新進展,進化算法加持,僅用數學運算自動找出ML算法》
閱讀原文