08.25 一文看懂深度學習新王者「AutoML」:是什麼、怎麼用、如何發展?

原作:George Seif

夏乙 安妮 編譯整理

量子位 出品 | 公眾號 QbitAI

AutoML和神經架構搜索(NAS),是深度學習領域的新一代王者。

這些方法能快糙猛地搞定機器學習任務,簡單有效,高度符合當代科技公司核心價值觀。

一文看懂深度學習新王者「AutoML」:是什麼、怎麼用、如何發展?

它們背後原理如何,怎樣使用?

技術博客TowardDataScience有一篇文章,就全面介紹了關於AutoML和NAS你需要了解的一切。

NAS

要了解AutoML,還得從NAS說起。

在開發神經網絡的過程中,架構工程事關重大,架構先天不足,再怎麼訓練也難以得到優秀的結果。

當然,提到架構,很多人會想到遷移學習:把ImageNet上訓練的ResNet拿來,換個我需要的數據集再訓練訓練更新一下權重,不就好了嘛!

一文看懂深度學習新王者「AutoML」:是什麼、怎麼用、如何發展?

這種方法的確也可行,但是要想得到最好的效果,還是根據實際情況設計自己的網絡架構比較靠譜。

設計神經網絡架構,能稱得上機器學習過程中門檻最高的一項任務了。想要設計出好架構,需要專業的知識技能,還要大量試錯。

NAS就為了搞定這個費時費力的任務而生。

這種算法的目標,就是搜索出最好的神經網絡架構。它的工作流程,通常從定義一組神經網絡可能會用到的“建築模塊”開始。比如說Google Brain那篇NasNet論文,就為圖像識別網絡總結了這些常用模塊:

一文看懂深度學習新王者「AutoML」:是什麼、怎麼用、如何發展?

其中包含了多種卷積和池化模塊。

論文:Learning Transferable Architectures for Scalable Image Recognition

地址:https://arxiv.org/pdf/1707.07012.pdf

NAS算法用一個循環神經網絡(RNN)作為控制器,從這些模塊中挑選,然後將它們放在一起,來創造出某種端到端的架構。

這個架構,通常會呈現出和ResNet、DenseNet等最前沿網絡架構一樣的風格,但是內部模塊的組合和配置有所區別。一個架構的好壞,往往就取決於選擇的模塊和在它們之間構建的連接。

接下來,就要訓練這個新網絡,讓它收斂,得到在留出驗證集上的準確率。這個準確率隨後會用來通過策略梯度更新控制器,讓控制器生成架構的水平越來越高。

過程如下圖所示:

一文看懂深度學習新王者「AutoML」:是什麼、怎麼用、如何發展?

這個過程很直觀了。簡單來說,很有小朋友搭積木的風範:讓一個算法挑出一些積木,然後把它們組裝在一起,做成一個神經網絡。訓練、測試,根據這個結果來調整選積木的標準和組裝的方式。

一文看懂深度學習新王者「AutoML」:是什麼、怎麼用、如何發展?

這個算法大獲成功,NasNet論文展現出非常好的結果,有一部分原因是出於他們做出的限制和假設。

論文裡訓練、測試NAS算法發現的架構,都用了一個比現實情況小得多的數據集。當然,這是一種折衷的方法,要在ImageNet那麼大的數據集上訓練驗證每一種搜索結果,實在是太耗費時間了。

所以,他們做出了一個假設:如果一個神經網絡能在結構相似的小規模數據集上得到更好的成績,那麼它在更大更復雜的數據集上同樣能表現得更好。

在深度學習領域,這個假設基本上是成立的。

上面還提到了一個限制,這指的是搜索空間其實很有限。他們設計NAS,就要用它來構建和當前最先進的架構風格非常類似的網絡。

在圖像識別領域,這就意味著用一組模塊重複排列,逐步下采樣,如下圖所示:

一文看懂深度學習新王者「AutoML」:是什麼、怎麼用、如何發展?

這些模塊也都是當前研究中常用的。NAS算法在其中所做的新工作,主要是給這些模塊換個連接方式。

下面,就是它發現的ImageNet最佳神經網絡架構:

一文看懂深度學習新王者「AutoML」:是什麼、怎麼用、如何發展?

架構搜索的進展

這篇NASNet論文帶動了行業內的一次進步,它為深度學習研究指出了一個全新方向。

但是,用450個GPU來訓練,找到一個優秀的架構也需要訓練3到4天。也就是說,對於除了Google之外的普通貧民用戶們,這種方法還是門檻太高、效率太低。

一文看懂深度學習新王者「AutoML」:是什麼、怎麼用、如何發展?

NAS領域最新的研究,就都在想方設法讓這個架構搜索的過程更高效。

2017年穀歌提出的漸進式神經架構搜索(PNAS),建議使用名叫“基於序列模型的優化(SMBO)”的策略,來取代NASNet裡所用的強化學習。用SMBO策略時,我們不是隨機抓起一個模塊就試,而是按照複雜性遞增的順序來測試它們並搜索結構。

這並不會縮小搜索空間,但確實用更聰明的方法達到了類似的效果。SMBO基本上都是在講:相比於一次嘗試多件事情,不如從簡單的做起,有需要時再去嘗試複雜的辦法。這種PANS方法比原始的NAS效率高5到8倍,也便宜了許多。

論文:Progressive Neural Architecture Search

地址:https://arxiv.org/pdf/1712.00559.pdf

高效神經架構搜索(ENAS),是谷歌打出的讓傳統架構搜索更高效的第二槍,這種方法很親民,只要有GPU的普通從業者就能使用。作者假設NAS的計算瓶頸在於,需要把每個模型到收斂,但卻只是為了衡量測試精確度,然後所有訓練的權重都會丟棄掉。

論文:Efficient Neural Architecture Search via Parameter Sharing

地址:https://arxiv.org/pdf/1802.03268.pdf

因此,ENAS就要通過改進模型訓練方式來提高效率。

在研究和實踐中已經反覆證明,遷移學習有助在短時間內實現高精確度。因為為相似任務訓練的神經網絡權重相似,遷移學習基本只是神經網絡權重的轉移。

ENAS算法強制將所有模型的權重共享,而非從零開始訓練模型到收斂,我們在之前的模型中嘗試過的模塊都將使用這些學習過的權重。因此,每次訓練新模型是都進行遷移學習,收斂速度也更快。

下面這張表格表現了ENAS的效率,而這只是用單個1080Ti的GPU訓練半天的結果。

深度學習新方法AutoML

很多人將AutoML稱為深度學習的新方式,認為它改變了整個系統。有了AutoML,我們就不再需要設計複雜的深度學習網絡,只需運行一個預先設置好的NAS算法。

最近,Google提供的Cloud AutoML將這種理念發揮到了極致。只要你上傳自己的數據,Google的NAS算法就會為你找到一個架構,用起來又快又簡單。

AutoML的理念就是把深度學習裡那些複雜的部分都拿出去,你只需要提供數據,隨後就讓AutoML在神經網絡設計上盡情發揮吧。這樣,深度學習就變得像插件一樣方便,只要有數據,就能自動創建出由複雜神經網絡驅動的決策功能。

一文看懂深度學習新王者「AutoML」:是什麼、怎麼用、如何發展?

谷歌雲的AutoML pipeline

不過,AutoML價格也並不算親民,每小時收費20美元。此外,一旦你開始訓練,則無法導出模型,並且得用谷歌提供的API在雲上運行你的網絡,這些限制看起來都不是很方便,

AutoKeras也是一個使用了ENAS算法的GitHub項目,可以使用pip安裝。它是用Keras編寫的,因此很容易控制和使用,甚至可以自己深入研究ENAS算法並嘗試進行一些改動。

如果你喜歡用TensorFlow或者Pytorch,也有一些開源項目可用:

https://github.com/melodyguan/enas

https://github.com/carpedm20/ENAS-pytorch

總的來說,若你想使用AutoML,現在已經有很多不同的選擇,這完全取決於你是否會使用你想要的算法,以及你對這件事的預算如何。

AutoML和NAS未來會怎樣?

過去幾年,在深度學習工作的自動化上,整個領域都在大步向前,讓深度學習更貼近大眾、更易用。

不過,進步的空間永遠都有。

架構搜索已經越來越高效了,用ENAS,一個GPU一天就能找出一種新的網絡架構。的確鵝妹子嚶,但是這個搜索空間依然非常有限,而且,現在NAS算法所用的基本結構和模塊還是人工設計的,只是將組裝的過程自動化了。

將來要想取得重大突破,在更廣闊的搜索範圍裡搜索真正的新架構是一個重要方向。

如果這樣的算法出現,甚至能為我們揭示龐大複雜深度神經網絡中隱藏的秘密。

當然,要實現這樣的搜索空間,需要設計出更高效的算法。

最後,附上原文傳送門:

https://towardsdatascience.com/the-end-of-open-ai-competitions-ff33c9c69846

這篇文章全面介紹了用來自動尋找神經網絡架構的AutoML,量子位之前還介紹過很多深度學習其他工作的自動化框架,比如自動特徵工程、自動調參等等。

一文看懂深度學習新王者「AutoML」:是什麼、怎麼用、如何發展?

歡迎查看量子位歷史文章:自動機器學習工具全景圖:精選22種框架,解放煉丹師

誠摯招聘

量子位正在招募編輯/記者,工作地點在北京中關村。期待有才氣、有熱情的同學加入我們!相關細節,請在量子位公眾號(QbitAI)對話界面,回覆“招聘”兩個字。

量子位 QbitAI · 頭條號簽約作者

վ'ᴗ' ի 追蹤AI技術和產品新動態


分享到:


相關文章: