你所須要知道的關於AutoML和NAS的知識點

【GiantPandaCV導讀】本文是筆者第一次進行翻譯國外博客,第一次嘗試,因爲水平的限制,可能有的地方翻譯表達的不夠準確,在翻譯過程當中儘可能還原做者的意思,若是須要解釋的部分會在括號中添加,若有問題歡迎指正。本文翻譯的是《Everything you need to know about AutoML and Neural Architecture Search》得到了4.8k的高贊。git

做者:George Seifgithub

翻譯:pprpweb

日期:2018/8/21算法

AutoML和NAS是深度學習領域的新秀。不須要過多的工做量,他們可使用最暴力的方式讓你的機器學習任務達到很是高的準確率。既簡單又有效率。微信

那麼AutoML和NAS是如何起做用的呢?如何使用這種工具?網絡

Neural Architecture Search

神經網絡架構搜索,簡稱NAS。開發一個神經網絡模型每每須要大量的工程架構方面的設計。有時候能夠經過遷移學習完成一個任務,可是若是想要有更好的性能,最好設計本身的網絡。架構

爲本身的任務設計網絡架構須要很是專業的技能,而且很是有挑戰性。咱們極可能不知道當前最新技術的侷限在哪裏(SOTA技術的瓶頸咱們並不清楚),因此會進行不少試錯,這樣的話很是浪費時間和金錢。app

爲了解決這個問題,NAS被提出來了,這是一種能夠搜索最好的神經網絡結構的算法。大多數算法都是按照如下方式進行的:機器學習

  1. 首先定義一個Building Blocks的集合,集合中元素表明的是可能用於神經網絡搜索的基本單元。好比說NASNet中提出瞭如下Building Block。
Building Block

在NAS算法中,控制器RNN會從這些Building Blocks中採樣,將他們拼接起來構建一個端到端的網絡架構。這種結構一般與SOTA網絡的架構相同,如ResNet、DenseNet,可是使用的模塊組合和配置有較大的區別。編輯器

對新產生的網絡架構進行訓練,使其收斂,並在驗證集上進行測試獲得準確率。產生的準確率能夠用於更新控制器,以便於控制器可以生成更好的網絡結構。控制器的權重使用的是策略梯度進行更新的。整個端到端的設置以下圖所示:

NAS端到端流程

整個過程很是符合直覺。簡單來講,讓算法從不一樣的block之中採樣,而後將這些模塊組合起來構建新的網絡。而後訓練並測試該網絡,根據得到的結果,調整使用的block模塊以及各個block之間的鏈接方式。

這篇文章(Learning Transferable Architectures for Scalable Image Recognition)展現了這種方法得到的出色的結果是由於他受到了限制和假設。NAS設計的網絡通常都是在遠遠比真實世界數據集上訓練和測試的。這是由於在相似ImageNet這樣比較大型的數據集上訓練花費時間代價過大。可是在深度學習時代中,在比較小,可是結構類似的數據集上表現較好的網絡,在更大更復雜的數據集上也應該表現更好。

第二點就是搜索空間很是侷限。NAS被設計用來構建與SOTA類似的網絡架構。對於圖像分類任務來講,網絡構建須要重複的模塊,而後逐步進行下采樣,如左圖所示。NAS設計的網絡的主要新穎部分是這些塊的鏈接方式。

鏈接方式

下圖是在ImageNet中搜索獲得的最好的block結構。能夠發現這幾個都包含了至關隨機的混合操做,包括許多可分離卷積。

ImageNet上搜索結果

架構搜索方面的進步

NASNet論文取得了驚人的進步,由於其提供了深度學習研究的新方向。不幸的是,他對於除Google之外的普通人來講效率很低,很難實現。使用了450個GPU,並花費了3-4天時間的訓練才找到一個出色的網絡架構。所以,NAS方面不少的研究都集中於如何提升搜索過程的效率上。

Progressive Neural Architecture Search(PNAS)漸進式神經架構搜索提出使用一種叫作基於順序模型的優化策略(SMBO: Sequiential Model-Based Optimisation)。與NASNet使用的強化學習方法不一樣,SMBO不是隨機的從Block集合中抓取和嘗試,而是對block進行測試,並按照複雜性增長的順序搜索網絡架構。這種方法雖然不會縮小搜索空間,可是能讓搜索以更智能的方式完成。

SMBO的基本意思是:從簡單開始,而不是當即嘗試全部可能。PNAS這種方法的效率是NAS的8倍。

Efficient Nerual Architecture Search(ENAS)是另一種試圖提升通用網絡架構搜索效率的方式。ENAS的提出能讓更多沒有充足GPU資源的人也能使用神經網絡搜索。做者的假設是NAS的計算瓶頸在於對每一個模型進行收斂的訓練,而後測試其準確率,而後就丟棄訓練過的權重。

在研究和實踐中已經反覆證實,因爲接受過相似訓練任務的網絡具備類似的權重,遷移學習有助於在短期內實現更高的精度。ENAS算法強制讓全部模型共享權重,而不是去從頭訓練從頭收斂。 所以,每次訓練新的模型的時候,實際上都進行了遷移學習,這樣收斂速度會很是快。

下表顯示了使用單個1080Ti GPU進行半天的訓練後ENAS的效率要高得多。

NAS算法對比

深度學習新範式:AutoML

許多人將AutoML稱爲深度學習的新方法,無需設計複雜的深度網絡,只需運行預設的NAS算法。Google經過提供Gloud AutoML將這一點發揮到了極致。只需上傳數據,Google的NAS算法便可爲你提供快速簡便的網絡架構。

AutoML的想法是簡單地抽象出深度學習的全部複雜部分。須要提供的只有數據。剩下的讓AutoML設計最困難的部分。這樣一來,深度學習就會像其餘工具同樣,成爲插件工具。

AutoML工做流程

Cloud AutoML的價格確實高達2000美圓,很遺憾,訓練好之後也沒法導出模型;將不得不使用他們的API在雲上運行你的網絡。還有其餘一些徹底免費的替代方法,但確實須要更多工做。

AutoKeras是一個使用ENAS算法的GitHub項目。可使用pip進行安裝。因爲它是用Keras編寫的,所以很是易於控制和使用,所以能夠深刻研究ENAS算法並嘗試進行一些修改。若是你更喜歡TensorFlow或Pytorch,能夠參考如下項目:

https://github.com/melodyguan/enas

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

對NAS和AutoML將來的預測

很高興看到過去幾年在自動化深度學習方面取得了長足的進步。它使用戶和企業更易於獲取;整體來看,深度學習的力量將變得更加易於公衆使用。可是,依然有一些改進的空間。

網絡架構搜索變得更加高效;使用ENAS找到一個網絡在一個GPU上,通過一天的訓練就能夠獲得至關不錯的結果。然而,咱們的搜索空間仍然很是有限。目前的NAS算法仍然使用手工設計的結構和構建塊,只是將它們以不一樣的方式組合在一塊兒而已。

一個強大的和潛在的突破性的將來方向將是更普遍的搜索,真正尋找新的架構。這種算法可能會揭示出在這些龐大而複雜的網絡中隱藏的更深層次的學習祕密。固然,這樣的搜索空間須要高效的算法設計。

NAS和AutoML的這個新方向爲人工智能社區提供了使人興奮的挑戰,併爲科學上的另外一個突破提供了真正的機會。

英文原文

連接:https://towardsdatascience.com/everything-you-need-to-know-about-automl-and-neural-architecture-search-8db1863682bf

後記

英文翻譯過來有點拗口,感謝閱讀。筆近期將研究這個方向,歡迎類似方向的同窗添加個人微信,多多溝通。


本文分享自微信公衆號 - GiantPandaCV(BBuf233)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索