谷歌大腦開源項目AutoML-Zero:僅用數學運算就能探索出機器學習算法

五嘎子 4年前發布 | 1K 次閱讀 開源項目

  近年來,機器學習取得了巨大的成功,這些成功得益于機器學習算法的不斷優化,例如深度神經網絡。深度神經網絡在不斷發現問題和解決問題的過程中又推動了 AutoML 的發展。到目前為止,AutoML 一直致力于通過組合復雜的手工設計組件來構建解決方案。一個典型的例子是神經架構搜索,這是一個子領域,在這個子領域中,人們可以從復雜的層(例如卷積、批標準化和 dropout)自動構建神經網絡,這也是許多研究的主題。

  在 AutoML 中使用的這些手工設計的組件的另一種方法是從頭開始搜索整個算法,這很有挑戰性。因為它需要探索廣泛而稀疏的搜索空間,但它有很大的潛在好處:它不會偏向我們已知的內容,而且有可能發現新的、更好的機器學習架構。

  打個比方,我們可以這樣來描述 AutoML:如果一個人要建造一座房子,那么他從零開始動手,要比只使用預制板建造房子有更多的靈活性或改進的潛力。然而,對房屋的設計卻是極為艱難的一個步驟,因為與預制的整個房間的組合相比,將磚瓦和砂漿結合起來的可能方法要多得多。因此,早期對算法從頭開始學習的研究主要集中在算法的某一方面,例如學習規則,以此來減少搜索空間和所需的計算量。自 20 世紀 90 年代初以來該問題就沒有被重新研究過,直到現在。

  我們最近將在 ICML 2020 上發表的論文,論證了從零開始成功地進化機器算法是有可能的。我們提出的方法,稱為 AutoML_Zero,從空程序開始,僅使用基本的數學運算作為構建塊,應用進化方法自動找到完整機器學習算法的代碼。針對小圖像分類問題,我們的方法重新發現了基本的機器學習技術,如帶有反向轉播的二層神經網絡、線性回歸等,這些都是多年來研究人員發明的。這一結果證明了自動發現更多新的機器學習算法來解決未來更難的問題的可行性。

  論文地址:

  https://arxiv.org/abs/2003.03384

  GitHub 地址:

  https://github.com/google-research/google-research/tree/master/automl_zero

  從零開始進化學習算法

  我們使用經典進化方法的一種變體來搜索算法空間。自 20 世紀 80 年代以來,這些方法在發現計算機程序方面已被證明是有用的。它們的簡單性和可擴展性使其特別適合于學習算法的發現。

  在我們的例子中,population 是用空程序初始化的。然后,它在重復循環中進化,以產生越來越好的學習算法。在每個周期中,兩個(或更多)隨機模型相互競爭,最精確的模型成為父模型。親本克隆自身產生一個子代,子代會發生變異。也就是說,子代碼是以隨機的方式修改的,這可能意味著,例如,在代碼中任意插入、刪除或修改一行。然后在圖像分類任務中對變異算法進行評估。

谷歌大腦開源項目 AutoML-Zero:僅用數學運算就能探索出機器學習算法

  population 用空程序進行初始化。歷經許多代之后,我們看到一個更進化的 population,它的兩個算法相互競爭。最準確的算法將贏得生“孩子”的機會。經過許多這樣的事件之后,最終的 population 將包含高度精確的分類器。

  探索困難的搜索空間

  與以前的 AutoML 工作相比,我們的 AutoML-Zero 設置使得搜索空間非常稀疏,在 10^{12} 個候選者中可能只有一個精確的算法。這是由于提供給算法的構建塊的粒度造成的,這些構建塊只包括變量賦值、加法和矩陣乘法等基本操作。在這樣的環境中,隨機搜索無法在合理的時間內找到解決方案,然而根據我們的測量,進化速度可以加快數萬倍。我們將搜索分布在偶爾交換算法的多臺機器上(類似于現實生活中的遷移。)我們還構建了小的代理分類任務,用于評估每個子算法,并使用高度優化的代碼來執行這個評估。

  盡管如此稀疏,但隨著時間的推移,進化搜索會發現更復雜、更有效的技術。最初,出現了最簡單的算法,該算法用硬編碼的權重表示線性模型。隨著時間的推移,該算法發明了隨機梯度下降法(SGD)來學習權重,盡管梯度本身并沒有作為構建塊提供。雖然一開始存在缺陷,但 SGD 的問題得到了相對較快的解決,開始了對預測和學習算法進行一系列改進。在我們的簡單場景中,該過程發現了幾個已知對研究社區有用的概念。最后,我們的方法成功地構建了一個模型,性能優于類似復雜度的手工設計的模型。

谷歌大腦開源項目 AutoML-Zero:僅用數學運算就能探索出機器學習算法

  算法演進

  上圖包含了由我們的方法產生的最佳進化算法。最終的算法包括數據增強、雙線性模型、梯度歸一化和權重平均等噪聲注入技術,并且對基線的改進也轉移到搜索過程中未使用的數據集上。我們的論文描述了進化代碼的不同行是如何實現這些技術的,并通過消融研究驗證了它們的價值。

  通過更多的實驗,我們證明了通過控制“棲息地”(即進化過程評估算法適應度的任務)來引導進化搜索是可行的。例如,當我們減少數據量時,出現了有噪聲的 ReLU,這有助于正則化。或者,當我們減少訓練步數時,我們會見證學習率衰減的出現,從而實現更快的收斂。這類有針對性的發現很重要:如果自動工具發明器能想出一把錘子或一根針,事情可能會很有趣;但如果你給它看一些釘子時,它會想到一把錘子,給它看一些線時,它想出一根針,那就更有趣了。通過這樣的類比,在我們的工作中,當存在少量數據(“釘子”)時,就會發現有噪聲的 ReLU(“錘子”),而當存在少量訓練步驟時,學習率就會下降。

  結論

  我們認為這只是初步工作。我們還沒有從根本上進化出新的算法,但令人鼓舞的是,進化后的算法可以超越搜索空間中存在的簡單神經網絡。目前,搜索過程需要大量的計算。隨著未來幾年可用硬件規模的擴大和搜索方法的效率提高,搜索空間可能會變得更具包容性,搜索結果也會得到改善。隨著我們對 AutoML-Zero 的進一步了解,我們對發現新的機器學習算法的前景感到興奮。

  作者介紹:

  Esteban Real,主任軟件工程師。Chen Liang,軟件工程師,供職于 Google Research、Brain Team。

  原文鏈接:

  https://ai.googleblog.com/2020/07/automl-zero-evolving-code-that-learns.html

 本文由用戶 五嘎子 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!
  轉載自:https://www.infoq.cn/article/rPcCK0L8UfOeyy3TzXpu