只會高中數學運算就能發現算法?Google 開源的 AutoML-Zero 有多厲害

只會高中數學運算就能發現算法?Google 開源的 AutoML-Zero 有多厲害

譯者 | 劉暢

來源 | AI科技大本營(ID:rgznai100)

機器學習研究,已經在多個方面都取得了進步,包括模型結構和優化方法等。而使此類研究自動化的工作(稱為AutoML)也有重大進展。這一進展主要集中在神經網絡的體系結構,神經網絡目前主要是依賴於專家設計複雜的層來構建塊(或類似的限制性搜索空間)。

本文的目標是證明AutoML可以走得更遠。如今有可能僅使用基本的數學運算作為構建塊就可以自動發現完整的機器學習算法。

本文介紹了一種新的框架來證明這一點,該框架使用了一個更一般的搜索空間,這可以顯著減少主觀設計意願。儘管搜索空間很大,但是進化搜索仍然可以發現使用反向傳播訓練的兩層神經網絡。然後,在一些任務上可以超越這些簡單的神經網絡。即使這些網絡用了目前頂級的優化算法,如歸一化梯度、權重平均等。

此外,這種搜索可以使算法適應不同類型的任務:例如,當可用數據很少時會出現類似dropout的效果。我們相信從零開始發現機器學習算法的初步成功,為該研究領域指明瞭一個十分有希望的新方向。

只會高中數學運算就能發現算法?Google 開源的 AutoML-Zero 有多厲害

引言

近年來,神經網絡在許多關鍵的任務上取得了卓越的性能。對機器學習研究的時間長度和難度催生了一個名為AutoML的新領域,該領域是為了通過花費機器計算時間而不是人類研究時間來使機器學習技術進步。這項工作取得了豐碩的成果,但到目前為止,現在的研究均嚴重依賴於人類設計的搜索空間。一個常見的例子就是神經網絡架構搜索,它由專家設計的複雜層來作為構建塊,並遵守反向傳播的規則來限制搜索空間。

類似地,其他AutoML研究也找到了將搜索空間限制在單一算法內的方法,例如反向傳播期間使用的學習規則,LSTM的門控結構或數據增廣;在這些研究工作中,所有其他的算法仍然是手工設計的。這種方法可以節省計算時間,但是有兩個缺點。首先,人為設計的塊結構會使搜索結果偏向於人為設計的算法,這可能會降低AutoML的創新能力。更少的選擇項也限制了創新,因為無法發現無法搜索的內容。其次,受約束的搜索空間需要精心組合,從而給研究人員帶來新的負擔,並違背了所謂的節省人類時間的目標。

為了解決這個問題,本文提出了僅使用少量限制和簡單數學運算模塊的自動搜索所有機器學習算法的方法。我們將這種方法稱為AutoML-Zero,它的目的是為了以最少的人為參與進行學習。

換句話說,AutoML-Zero旨在同時搜索細粒度空間的模型,優化過程,初始化等操作,從而減少了人工設計的工作量,甚至可以發現非神經網絡算法。為了證明這一點在如今是可行的,本文提出了針對這一挑戰的初步解決方案。

AutoML-Zero搜索空間的通用性使其比現有的AutoML算法對應空間搜索更難。現有的AutoML搜索空間已經構建了密集且具有良好的解決方案,因此不再強調搜索方法本身。例如,在同一搜索空間上進行比較發現,領先的技術通常僅比簡單隨機搜索(RS)略勝一籌。

而AutoML-Zero有所不同:由於搜索空間是更廣泛的,以致最終結果變得十分稀疏。我們提出的框架將機器學習算法表示為包含三個分量函數的計算機程序,這些功能一次可以對一個樣本進行預測和學習。這些函數中的指令將基本的數學運算賦於內存中。每個指令使用的操作和存儲器地址都是搜索空間中的自由參數,分量函數的大小也是如此。

總的來說,本文的貢獻是:

  • AutoML-Zero,可以用最少的人工參與,從頭開始自動搜索ML算法;

  • 帶有源代碼和僅結合基本數學運算搜索空間的新框架;

  • 詳細的實驗結果,顯示了使用進化搜索算法發現ML算法的潛力。

代碼地址:

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

只會高中數學運算就能發現算法?Google 開源的 AutoML-Zero 有多厲害

方法

AutoML-zero方法可以分為兩個部分來講,一是搜索空間,二是搜索方法。

搜索空間

作者將算法表示為在較小的虛擬內存上起作用的計算機程序,這些虛擬內存具有用於標量,向量和矩陣變量的單獨地址空間。所有這些都是浮點數,並且共享任務輸入特徵圖的維度。

作者將程序表示為一系列指令。每個指令都有一個確定其功能的操作,為了避免選擇操作的偏向性,本文使用了一個簡單的標準:需要由高層次的學習來確定。作者有目的地排除了機器學習概念,矩陣分解和導數。

受監督學習工作的啟發,作者將算法表示為具有三個分量函數的程序,Setup/Predict/Learn。如下圖所示:

只會高中數學運算就能發現算法?Google 開源的 AutoML-Zero 有多厲害

下圖的進化過程對上述函數的使用進行了闡釋。在下圖中,兩個for循環實現了訓練和驗證階段,為簡單起見,一次處理一個樣本。訓練階段會交替執行“預測”和“學習”。

只會高中數學運算就能發現算法?Google 開源的 AutoML-Zero 有多厲害

搜索方法

搜索實驗必須通過修改分量函數中的指令來發現機器學習算法。本文使用了正則化進化搜索方法,這是因為它十分簡單,而且最近在架構搜索方面取得了不錯的成績。此方法如下圖所示。

只會高中數學運算就能發現算法?Google 開源的 AutoML-Zero 有多厲害

由父代產生子代的突變必須針對搜索空間進行定製;本文在三種類型的動作中使用了隨機選擇:(i)在分量函數中的隨機位置插入隨機指令或刪除指令,(ii)將分量函數中的所有指令隨機化,或(iii)通過將指令替換為隨機選擇來修改指令的參數之一。如下圖所示。

只會高中數學運算就能發現算法?Google 開源的 AutoML-Zero 有多厲害
只會高中數學運算就能發現算法?Google 開源的 AutoML-Zero 有多厲害

實驗

在接下來的實驗部分中,本文將分別回答以下三個問題:“搜索AutoML-Zero空間有多困難?”,“可以使用本文的框架以最少的人工輸入來發現合理的算法嗎?”,以及“可以通過改變搜索實驗中使用的任務類型來發現不同的算法嗎?”

1、在搜索空間中尋找簡單的神經網絡

下圖總結了對4種任務類型的分析結果:發現一個完整的算法/僅學習線性的方法/仿射回歸數據。AutoML-Zero搜索空間是通用的,但這是有代價的:即使對於一些簡單的任務,好的算法也是稀疏的。隨著任務變得越來越困難,解決方案變得越來越稀疏,並且其性能大大優於RS。

只會高中數學運算就能發現算法?Google 開源的 AutoML-Zero 有多厲害

2、用最少的人工輸入進行搜索

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

3、發現算法的普適性

在本節中,作者將通過搜索三種不同的任務類型來展示本文方法更廣泛的適用性。每種任務類型都會有自己的挑戰(例如“數據太少”)。我們將展示進化適應算法應對挑戰的過程。由於我們已經從頭開始獲得了合理的模型,因此現在只需使用下圖的有效神經網絡初始化種群即可,這可以節省時間。

只會高中數學運算就能發現算法?Google 開源的 AutoML-Zero 有多厲害只會高中數學運算就能發現算法?Google 開源的 AutoML-Zero 有多厲害

總結

在本文中,作者為AutoML提出了一個宏偉的目標:從基本的操作中自動發現整個ML算法,通過減少人在搜索空間帶來的偏好,希望這最終會產生新的ML內容。

本文構建了一個表示ML算法的新框架來證明該研究方向的潛力,該算法將ML算法表示為由三個分量函數(Setup,Predict,Learn)組成的計算機程序。從空的分量函數開始,僅使用基本的數學運算,本文算法逐步演變出了線性迴歸,神經網絡,梯度下降,權重平均,歸一化梯度等。這些結果顯示該算法是十分有希望的,但仍有許多工作要做。

論文地址:

https://arxiv.org/abs/2003.03384

只會高中數學運算就能發現算法?Google 開源的 AutoML-Zero 有多厲害

☞微軟CEO薩提亞·納德拉:不要重複造輪子,提升技術強密度

☞GitHub 標星 10,000+,Apache 頂級項目 ShardingSphere 的開源之路

☞港科大鄭光廷院士問診未來,揭露 AI 最新應用與實踐

☞大促下的智能運維挑戰:阿里如何抗住“雙11貓晚”?

☞以太坊2.0中的Custody Game及MPC實現

☞很用心的為你寫了9道MySQL面試題,建議收藏!


分享到:


相關文章: