一文看懂深度學習新王者「AutoML」:是什麼、怎麼用?
原作:George Seif
夏乙 安妮 編譯整理
量子位 出品 | 公眾號 QbitAI
AutoML和神經架構搜尋(NAS),是深度學習領域的新一代王者。
這些方法能
快糙猛
地搞定機器學習任務,簡單有效,高度符合當代科技公司核心價值觀。
它們背後原理如何,怎樣使用?
技術部落格TowardDataScience有一篇文章,就全面介紹了關於AutoML和NAS你需要了解的一切。
NAS
要了解AutoML,還得從NAS說起。
在開發神經網路的過程中,架構工程事關重大,架構先天不足,再怎麼訓練也難以得到優秀的結果。
當然,提到架構,很多人會想到遷移學習:把ImageNet上訓練的ResNet拿來,換個我需要的資料集再訓練訓練更新一下權重,不就好了嘛!
這種方法的確也可行,但是要想得到最好的效果,還是根據實際情況設計自己的網路架構比較靠譜。
設計神經網路架構,能稱得上機器學習過程中門檻最高的一項任務了。想要設計出好架構,需要專業的知識技能,還要大量試錯。
NAS就為了搞定這個費時費力的任務而生。
這種演算法的目標,就是搜尋出最好的神經網路架構。它的工作流程,通常從定義一組神經網路可能會用到的“建築模組”開始。比如說Google Brain那篇NasNet論文,就為影象識別網路總結了這些常用模組:
其中包含了多種卷積和池化模組。
論文:Learning Transferable Architectures for Scalable Image Recognition
地址:
https://
arxiv。org/pdf/1707。0701
2。pdf
NAS演算法用一個迴圈神經網路(RNN)作為
控制器
,從這些模組中挑選,然後將它們放在一起,來創造出某種端到端的架構。
這個架構,通常會呈現出和ResNet、DenseNet等最前沿網路架構一樣的風格,但是內部模組的組合和配置有所區別。一個架構的好壞,往往就取決於選擇的模組和在它們之間構建的連線。
接下來,就要訓練這個新網路,讓它收斂,得到在留出驗證集上的準確率。這個準確率隨後會用來透過策略梯度更新控制器,讓控制器生成架構的水平越來越高。
過程如下圖所示:
這個過程很直觀了。簡單來說,很有小朋友搭積木的風範:讓一個演算法挑出一些積木,然後把它們組裝在一起,做成一個神經網路。訓練、測試,根據這個結果來調整選積木的標準和組裝的方式。
這個演算法大獲成功,NasNet論文展現出非常好的結果,有一部分原因是出於他們做出的限制和假設。
論文裡訓練、測試NAS演算法發現的架構,都用了一個比現實情況小得多的資料集。當然,這是一種折衷的方法,要在ImageNet那麼大的資料集上訓練驗證每一種搜尋結果,實在是太耗費時間了。
所以,他們做出了一個
假設
:如果一個神經網路能在結構相似的小規模資料集上得到更好的成績,那麼它在更大更復雜的資料集上同樣能表現得更好。
在深度學習領域,這個假設基本上是成立的。
上面還提到了一個
限制
,這指的是搜尋空間其實很有限。他們設計NAS,就要用它來構建和當前最先進的架構風格非常類似的網路。
在影象識別領域,這就意味著用一組模組重複排列,逐步下采樣,如下圖所示:
這些模組也都是當前研究中常用的。NAS演算法在其中所做的新工作,主要是給這些模組換個連線方式。
下面,就是它發現的ImageNet最佳神經網路架構:
架構搜尋的進展
這篇NASNet論文帶動了行業內的一次進步,它為深度學習研究指出了一個全新方向。
但是,用450個GPU來訓練,找到一個優秀的架構也需要訓練3到4天。也就是說,對於除了Google之外的普通貧民使用者們,這種方法還是門檻太高、效率太低。
NAS領域最新的研究,就都在想方設法讓這個架構搜尋的過程更高效。
2017年穀歌提出的
漸進式神經架構搜尋(PNAS)
,建議使用名叫“基於序列模型的最佳化(SMBO)”的策略,來取代NASNet裡所用的強化學習。用SMBO策略時,我們不是隨機抓起一個模組就試,而是按照複雜性遞增的順序來測試它們並搜尋結構。
這並不會縮小搜尋空間,但確實用更聰明的方法達到了類似的效果。SMBO基本上都是在講:相比於一次嘗試多件事情,不如從簡單的做起,有需要時再去嘗試複雜的辦法。這種PANS方法
比原始的NAS效率高5到8倍
,也
便宜
了許多。
論文:Progressive Neural Architecture Search
地址:
https://
arxiv。org/pdf/1712。0055
9。pdf
高效神經架構搜尋(ENAS)
,是谷歌打出的讓傳統架構搜尋更高效的第二槍,這種方法很親民,只要有GPU的普通從業者就能使用。作者假設NAS的計算瓶頸在於,需要把每個模型到收斂,但卻只是為了衡量測試精確度,然後所有訓練的權重都會丟棄掉。
論文:Efficient Neural Architecture Search via Parameter Sharing
地址:
https://
arxiv。org/pdf/1802。0326
8。pdf
因此,ENAS就要透過改進模型訓練方式來提高效率。
在研究和實踐中已經反覆證明,遷移學習有助在短時間內實現高精確度。因為為相似任務訓練的神經網路權重相似,遷移學習基本只是神經網路權重的轉移。
ENAS演算法強制將所有模型的權重共享,而非從零開始訓練模型到收斂,我們在之前的模型中嘗試過的模組都將使用這些學習過的權重。因此,每次訓練新模型是都進行遷移學習,收斂速度也更快。
下面這張表格表現了ENAS的效率,而這只是用單個1080Ti的GPU訓練半天的結果。
△
ENAS的表現和效率
深度學習新方法AutoML
很多人將AutoML稱為深度學習的新方式,認為它改變了整個系統。有了AutoML,我們就不再需要設計複雜的深度學習網路,只需執行一個預先設定好的NAS演算法。
最近,Google提供的Cloud AutoML將這種理念發揮到了極致。只要你上傳自己的資料,Google的NAS演算法就會為你找到一個架構,用起來又快又簡單。
AutoML的理念就是把深度學習裡那些複雜的部分都拿出去,
你只需要提供資料
,隨後就讓AutoML在神經網路設計上盡情發揮吧。這樣,深度學習就變得像外掛一樣方便,只要有資料,就能自動創建出由複雜神經網路驅動的決策功能。
△
谷歌雲的AutoML pipeline
不過,AutoML價格也並不算親民,每小時收費20美元。此外,一旦你開始訓練,則無法匯出模型,並且得用谷歌提供的API在雲上執行你的網路,這些限制看起來都不是很方便,
AutoKeras也是一個使用了ENAS演算法的GitHub專案,可以使用pip安裝。它是用Keras編寫的,因此很容易控制和使用,甚至可以自己深入研究ENAS演算法並嘗試進行一些改動。
如果你喜歡用TensorFlow或者Pytorch,也有一些開源專案可用:
https://
github。com/melodyguan/e
nas
https://
github。com/carpedm20/EN
AS-pytorch
總的來說,若你想使用AutoML,現在已經有很多不同的選擇,這完全取決於你是否會使用你想要的演算法,以及你對這件事的預算如何。
AutoML和NAS未來會怎樣?
過去幾年,在深度學習工作的自動化上,整個領域都在大步向前,讓深度學習更貼近大眾、更易用。
不過,進步的空間永遠都有。
架構搜尋已經越來越高效了,用ENAS,一個GPU一天就能找出一種新的網路架構。的確鵝妹子嚶,但是這個搜尋空間依然非常有限,而且,現在NAS演算法所用的基本結構和模組還是人工設計的,只是將組裝的過程自動化了。
將來要想取得重大突破,在更廣闊的搜尋範圍裡搜尋真正的新架構是一個重要方向。
如果這樣的演算法出現,甚至能為我們揭示龐大複雜深度神經網路中隱藏的秘密。
當然,要實現這樣的搜尋空間,需要設計出更高效的演算法。
最後,附上原文傳送門:
https://
towardsdatascience。com/
the-end-of-open-ai-competitions-ff33c9c69846
這篇文章全面介紹了用來自動尋找神經網路架構的AutoML,量子位之前還介紹過很多深度學習其他工作的自動化框架,比如自動特徵工程、自動調參等等。
歡迎檢視:自動機器學習工具全景圖:精選22種框架,解放煉丹師
—
完
—
歡迎大家關注我們的專欄:量子位 - 知乎專欄
誠摯招聘
量子位正在招募編輯/記者,工作地點在北京中關村。期待有才氣、有熱情的同學加入我們!相關細節,請在量子位公眾號(QbitAI)對話介面,回覆“招聘”兩個字。
量子位 QbitAI· 頭條號簽約作者
վ‘ᴗ’ ի 追蹤AI技術和產品新動態