自動機器學習(AutoML):一種能自主設計深度神經網絡的AI網絡

自動機器學習(AutoML):一種能自主設計深度神經網絡的AI網絡

來源:Datawhale

作者:瞿曉陽,AutoML書籍作者

本文約3450字,建議閱讀9分鐘

本文介紹人們開始探索如何利用已有的機器學習知識和神經網絡框架來讓人工智能自主搭建適合業務場景的網絡。

隨著深度神經網絡的不斷髮展,各種模型和新穎模塊的不斷髮明利用,人們逐漸意識到開發一種新的神經網絡結構越來越費時費力,為什麼不讓機器自己在不斷的學習過程中創造出新的神經網絡呢?

正是出於這個構思,2017年Google推出了AutoML,一個能自主設計深度神經網絡的AI網絡。

自此,人工智能又有了更進一步的發展,人們開始探索如何利用已有的機器學習知識和神經網絡框架來讓人工智能自主搭建適合業務場景的網絡,人工智能的另一扇大門被打開。

深度學習vs自動化深度學習

隨著深度神經網絡的廣泛應用和不斷髮展,越來越強大的網絡模型被構建,從AlexNet,到VGGNet,GoogleNet以及ResNet。

雖然這些模型足夠靈活,但人工神經網絡結構仍然需要大量的專業知識並且需要充足的時間,而且調參對於深度模型來說也是一項非常痛苦的事情,眾多的超參數和網絡結構參數會產生爆炸性的組合。

是否有可能使這一過程自動化,讓每一個人,甚至是不瞭解機器學習的人可以輕鬆地將機器學習應用於所面臨的問題,自動化深度學習(AutoDL)就是答案。

如圖1所示,是現在的深度學習方法與自動化深度學習的對比圖,自動化深度學習的目標是通過超參數優化的方法讓機器學會自動設計網絡及調參優化。

自動機器學習(AutoML):一種能自主設計深度神經網絡的AI網絡

圖1:傳統深度學習與AutoDL比較

什麼是神經架構搜索(NAS)

神經架構搜索(NAS)是一種針對特定數據集從頭開始自動設計性能良好的模型的技術,NAS技術與超參數優化所解決的問題相同:在搜索空間中找到對目標任務表現良好的網絡結構。

NAS主要由三個基本問題組成,分別是搜索空間、優化方法、以及評估方法。

  • 搜索空間針對目標任務定義了一組可能的神經網絡結構。
  • 優化方法確定如何探索搜索空間以找到好的架構。
  • 評估方法評估通過優化方法考慮的每種網絡結構的性能。

由於神經網絡的結構和連接通常可以由可變長度的字符串指定,在實際問題中,根據特定數據集生成指定的“子網絡”,通過訓練得到驗證集的準確性。

自動機器學習(AutoML):一種能自主設計深度神經網絡的AI網絡

圖2:NAS組件

搜索空間

如其名,就是可供搜索的一個網絡結構集合,它的數字表示為:

  • 網絡的結構(如:神經網絡的深度,即隱藏層個數,和特定的隱藏層寬度)
  • 配置(如:操作/網絡間的鏈接類型,核的大小,過濾器的數量)

因此,給定搜索空間,可以將其中的神經網絡結構編碼成該空間下的表示。這種搜索空間被稱為marco(宏)搜索空間。

好的搜索空間為好的搜索結果提供可能性,搜索空間的設計不斷髮展,除了傳統的鏈式結構外,“多分支”結構也開始起著越來越重要的作用,啟發於ResNet和DenseNet提出的跳躍連接和密集連接,這些跳躍連接也已經被加入到搜索空間的定義中。

另一個趨勢是設計一個只包含一個基本單元(cell)搜索空間,被用作整個網絡中的block(如卷積塊)的構建。這類搜索空間被稱為micro(微)搜索空間,其中搜索成本和複雜性可以被顯著的降低。

除了減小搜索複雜度外,僅僅通過改變單元(cell)堆疊的數量,可以很容易地把找到的最好的block的設計推廣到其他任務。

搜索算法

搜索算法是一個迭代過程,用於確定以何種規則來探索搜索空間。

在搜索過程的每個步驟或迭代中,一個來自於搜索空間的樣本會被生成,即子網絡(child network)。所有的子網絡在訓練集上被訓練,在驗證集上的準確率作為目標被優化(或者是強化學習中的獎勵)。

搜索算法的目的是找到最佳子網絡,例如最小化驗證集損失或最大化獎勵。主流的NAS搜索策略大致可以分為強化學習、進化算法和可微分的梯度下降算法。

1. 基於強化學習的方法

強化學習有三個基本要素:智能體(Agent)、環境(Environment)和獎勵(Reward),智能體以 “試錯”的方式進行學習,通過與環境交互獲得獎勵來指導行為。智能體和環境之間的交互可以被視為順序決策過程:在每個時間t,Agent在動作集合中選擇動作與環境交互並接收獎勵。

自動機器學習(AutoML):一種能自主設計深度神經網絡的AI網絡

圖3: 強化學習中智能體與環境的交互過程

神經架構自動搜索中,強化學習把架構的生成看成一個智能體(agent)在選擇動作(action)的過程,通過在測試集上測試網絡性能來獲取獎勵值(reward),從而指導架構的生成。

與傳統的強化學習問題略有不同的是構建了一個RNN控制器,通過迭代的方式來更新控制器從而生成合適的架構。

自動機器學習(AutoML):一種能自主設計深度神經網絡的AI網絡

圖4:基於強化學習的網絡架構搜索示意圖

2. 基於進化算法的方法

基於進化算法的神經網絡結構搜索,在演化步驟中,把子模型作為種群來進化。群體中的每個模型都是訓練過的網絡,並被視為個體,模型在驗證集上的表現(例如,準確度)作為每個個體的質量好壞。基於進化算法神經架構搜索的通用流程如下:

  • 初始化操作,對現有的各個個體進行編碼,把這些個體編碼成種群。
  • 選擇操作,從種群中根據適應度挑選出優秀的個體。
  • 繁殖操作,分為兩種:有性繁殖操作和無性繁殖操作,無性繁殖的操作包括變異操作,有性繁殖包括交叉操作或者組合操作。
  • 網絡訓練操作,對上一步繁殖操作得到的所有個體神經網絡進行訓練,訓練到收斂為止。
  • 適應度計算操作,使用指定的驗證集對每個已訓練的網絡計算驗證準確率,把驗證準確率作為適應度。

具體流程如下圖所示:

自動機器學習(AutoML):一種能自主設計深度神經網絡的AI網絡

圖5: 基於進化算法的神經架構搜索通用流程

3. 基於可微分架構搜索的方法

可微分架構搜索方法很多種,其中比較出名的是卡內基梅隆大學提出的

DARTS(DifferentiableArchitecture Search)。

與傳統的在離散的和不可微的搜索空間尚採用進化或強化學習搜索結構的方法不同,該方法是基於將結構表示的鬆弛化(relaxation),允許使用梯度下降來解決架構搜索的問題,所以效率可以比之前不可微的方法快幾個數量級。

簡單來說就是給操作(operations)的每個連接都賦一個權值alpha,優化的目的是為了通過梯度下降優化alpha矩陣,根據alpha的大小來確定連接方式。

神經網絡原有的權重稱為矩陣,在訓練集上固定alpha矩陣的值,然後梯度下降矩陣的值,再驗證集上固定矩陣的值,然後梯度下降alpha的值,循環往復直到這兩個值都比較理想。

自動機器學習(AutoML):一種能自主設計深度神經網絡的AI網絡

圖6:DARTS搜索空間

加速方案

無論是基於強化學習還是進化算法的搜索,子網絡都要被訓練和評估,以指導搜索過程。但是從頭開始訓練每個自網絡需要超大的資源和時間。所以NAS的加速方案被提出,主要代表方案是改進代理模型和權值共享。

1. 改進代理(Improve proxy)

很明顯代理模型的引入會帶有誤差,研究證明子網絡的FLOPs(每秒計算的浮點數)和模型大小與最終準確度呈負相關,因此引入了一種應用於獎勵計算的校正函數,通過早期停止獲得子網絡的精度,彌合代理與真實準確性之間的差距。

根據這一想法,研究者們提出了幾種通過“預測”神經架構的精度來改進代理度量的方法,預計精確度較差的子網絡將被暫停訓練或直接放棄。以下是三種預測神經架構搜索的方法:

  • 根據子網絡的學習曲線預測神經架構的精度。
  • 迴歸模型。使用基於網絡設置和驗證曲線的特徵來預測部分訓練模型的最終性能。
  • 訓練代理模型,基於progressively architectural properties預測子網絡的準確性。

2. 權值共享(Weight sharing)

在神經網絡的搜索和訓練過程中,涉及到很多權值和超參數,權值共享可以實現加速,在這裡列舉幾個權值共享的經典方法:

  • 在進化過程中,允許子網絡繼承父本的權重,而不是從頭訓練每個子模型。使用One shot 模型實現共享。
  • 設計帶有輔助超網絡的“主”模型,以生成以模型架構為條件的主模型的權重。從超網絡代表的分佈中採樣的權重。
  • 使用one-shot模型,主要有兩種方法:
    • 第一種是訓練表示各種候選結構的one-shot模型,然後使用預訓練的one-shot模型權重在驗證集上隨機評估這些候選結構。
    • 另一種是使用包含整個搜索空間的one-shot模型訓練所有權重,同時,使用梯度下降來優化候選結構的分佈。
  • 通過網絡轉換/態射來探索搜索空間,它使用諸如插入層或添加跳過連接之類的操作將訓練好的神經網絡修改為新的結構。由於網絡轉換/態射從現有的訓練網絡開始,因此重用權重並且僅需為數不多的訓練迭代來完成新的結構的訓練。
自動機器學習(AutoML):一種能自主設計深度神經網絡的AI網絡

圖7:one-shot結構圖,實現連接無法刪除而虛線連接可以刪除

神經網絡架構搜索的快速實現

使用開源的開源自動機器學習項目例如微軟的NNI和亞馬遜的AutoGluon可以快速實現常用NAS算法。下面簡單介紹使用AutoGluon在10分鐘內快速實現ENAS的過程:

1. 定義基礎Block結構

自動機器學習(AutoML):一種能自主設計深度神經網絡的AI網絡

2. 定義ENAS單元結構

自動機器學習(AutoML):一種能自主設計深度神經網絡的AI網絡

3. 定義超網絡

自動機器學習(AutoML):一種能自主設計深度神經網絡的AI網絡

4. 構造ENAS_Scheduler開始訓練

自動機器學習(AutoML):一種能自主設計深度神經網絡的AI網絡

5. 訓練結束可以查看搜索到的最佳結構

自動機器學習(AutoML):一種能自主設計深度神經網絡的AI網絡

總結

傳統的人工智能旨在使用機器幫助人類完成特定的任務,隨著人工智能的發展,在計算機領域衍生出了機器學習,機器學習旨在通過計算機程序完成對數據的分析,從而得到對世界上某件事情的預測並做出決定。當機器學習不斷髮展,其複雜程度也不斷增加,完全依靠人為對計算機進行規定,使其按照人為設定的規則運行時,耗費了大量的人力資源。

如果讓計算機自己去學習和訓練規則,是否能達到更好的效果呢?自動機器學習就是答案,也就是所謂“AI的AI”,讓AI去學習AI,從而減少人工的參與,讓機器完成更復雜的工作,掀起下一代人工智能的浪潮。

—完—

關注清華-青島數據科學研究院官方微信公眾平臺“ AI數據派 ”及姊妹號“ 數據派THU ”獲取更多講座福利及優質內容。


分享到:


相關文章: