天天看點

讓AI去學習AI:你已經是個成熟的模型了,該學會自己訓練了

雲栖号資訊:【 點選檢視更多行業資訊

在這裡您可以找到不同行業的第一手的上雲資訊,還在等什麼,快來!

導讀:讓計算機自己去學習和訓練規則,是否能達到更好的效果呢?自動機器學習就是答案,也就是所謂“AI的AI”,讓AI去學習AI。

讓AI去學習AI:你已經是個成熟的模型了,該學會自己訓練了

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

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

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

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

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

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

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

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

讓AI去學習AI:你已經是個成熟的模型了,該學會自己訓練了

02 什麼是神經架構搜尋(NAS)

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

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

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

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

讓AI去學習AI:你已經是個成熟的模型了,該學會自己訓練了
  1. 搜尋空間

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

網絡的結構(如:神經網絡的深度,即隐藏層個數,和特定的隐藏層寬度)

配置(如:操作/網絡間的連結類型,核的大小,過濾器的數量)

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

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

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

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

  1. 搜尋算法

搜尋算法是一個疊代過程,用于确定以何種規則來探索搜尋空間。

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

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

1)基于強化學習的方法

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

讓AI去學習AI:你已經是個成熟的模型了,該學會自己訓練了

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

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

讓AI去學習AI:你已經是個成熟的模型了,該學會自己訓練了

2)基于進化算法的方法

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

初始化操作,對現有的各個個體進行編碼,把這些個體編碼成種群。

選擇操作,從種群中根據适應度挑選出優秀的個體。

繁殖操作,分為兩種:有性繁殖操作和無性繁殖操作,無性繁殖的操作包括變異操作,有性繁殖包括交叉操作或者組合操作。

網絡訓練操作,對上一步繁殖操作得到的所有個體神經網絡進行訓練,訓練到收斂為止。

适應度計算操作,使用指定的驗證集對每個已訓練的網絡計算驗證準确率,把驗證準确率作為适應度。

具體流程如下圖所示:

讓AI去學習AI:你已經是個成熟的模型了,該學會自己訓練了

3)基于可微分架構搜尋的方法

可微分架構搜尋方法很多種,其中比較出名的是卡内基梅隆大學提出的DARTS(Differentiable Architecture Search)。

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

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

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

讓AI去學習AI:你已經是個成熟的模型了,該學會自己訓練了

03 加速方案

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

  1. 改進代理(Improve proxy)

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

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

根據子網絡的學習曲線預測神經架構的精度。

回歸模型。使用基于網絡設定和驗證曲線的特征來預測部分訓練模型的最終性能。

訓練代理模型,基于progressively architectural properties預測子網絡的準确性。

  1. 權值共享(Weight sharing)

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

在進化過程中,允許子網絡繼承父本的權重,而不是從頭訓練每個子模型。使用One shot 模型實作共享。

設計帶有輔助超網絡的“主”模型,以生成以模型架構為條件的主模型的權重。從超網絡代表的分布中采樣的權重。

使用one-shot模型,主要有兩種方法:

第一種是訓練表示各種候選結構的one-shot模型,然後使用預訓練的one-shot模型權重在驗證集上随機評估這些候選結構。

另一種是使用包含整個搜尋空間的one-shot模型訓練所有權重,同時,使用梯度下降來優化候選結構的分布。

通過網絡轉換/态射來探索搜尋空間,它使用諸如插入層或添加跳過連接配接之類的操作将訓練好的神經網絡修改為新的結構。由于網絡轉換/态射從現有的訓練網絡開始,是以重用權重并且僅需為數不多的訓練疊代來完成新的結構的訓練。

讓AI去學習AI:你已經是個成熟的模型了,該學會自己訓練了

04 神經網絡架構搜尋的快速實作

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

讓AI去學習AI:你已經是個成熟的模型了,該學會自己訓練了
讓AI去學習AI:你已經是個成熟的模型了,該學會自己訓練了

總結

傳統的人工智能旨在使用機器幫助人類完成特定的任務,随着人工智能的發展,在計算機領域衍生出了機器學習,機器學習旨在通過計算機程式完成對資料的分析,進而得到對世界上某件事情的預測并做出決定。

當機器學習不斷發展,其複雜程度也不斷增加,完全依靠人為對計算機進行規定,使其按照人為設定的規則運作時,耗費了大量的人力資源。

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

關于作者:瞿曉陽 ,華中科技大學計算機系統結構博士,美國中佛羅裡達大學通路學者,大型金融集團科技公司資深算法工程師,一直從事機器學習、大資料、體系結構方面的研究工作,在AutoML平台、面向AI的雲原生架構、高性能計算、高效能存儲系統等方面經驗豐富。

【雲栖号線上課堂】每天都有産品技術專家分享!

課程位址:

https://yqh.aliyun.com/zhibo

立即加入社群,與專家面對面,及時了解課程最新動态!

【雲栖号線上課堂 社群】

https://c.tb.cn/F3.Z8gvnK

原文釋出時間:2020-05-13

本文作者:瞿曉陽

本文來自:“

大資料DT 微信公衆号

”,了解相關資訊可以關注“

大資料DT