您當前的位置:首頁 > 書法

AutoMl及NAS概述:更有效地設計神經網路模型工具

作者:由 阿里云云棲號 發表于 書法時間:2018-09-14

摘要:

還在為自己構建深度模型框架而抓耳饒腮嗎?AutoML及NAS瞭解下,能夠自動生成合適的模型結構,解脫你的雙手,善待你的頭髮。

隨著人工智慧的迅速發展,深度學習工具箱也發生比較大的變化,從之前受歡迎的Caffe到Tensorflow等框架,好的深度學習框架能夠幫助開發人員快速且高效地開發出相應的任務模型,完成相關的任務。這類深度學習工具箱都需要自己設計對應的網路模型,需要大量的實驗以獲得最終模型,整個過程比較費時費力。那在這個構造模型的過程中,肯定會想到,能不能讓機器自己根據資料集構建合適的模型呢?答案是可以的。本文介紹的是近來新的一種深度學習工具箱——AutoML和神經架構搜尋( Neural Architecture Search,NAS),它們是深度學習領域中新一任國王,以快速且簡單粗暴的方式,並在不需要太多人為參與的情況下為我們的機器學習任務獲得高精度模型。使用起來簡單有效,這才是我們想要的人工智慧!那麼它是怎樣工作的?如何使用呢?下面為大家一一展開介紹。以下是需要了解有關AutoML和NAS的所有資訊。

神經架構搜尋(NAS)

開發神經網路模型通常需要大量的模型工程,一般可以透過遷移學習快速搭建出一個“能用”的模型出來,但如果真的想要獲得最佳效能,通常最好是自己根據具體任務設計自己的網路,這就需要專業的技能( 從商業角度來看,這是昂貴的),並且總的來說自己設計網路模型具有很高的挑戰性,而且我們甚至可能不知道當前最先進的技術!且在設計模型的過程中需要進行很多次的試驗,並根據實驗結果調整網路模型,整個實驗本身耗時耗力,代價昂貴。

這就是NAS的用武之地,NAS是一種搜尋最佳神經網路架構的演算法。大多數模型演算法都具有以下結構,首先定義一組可能用於我們網路的“構建塊”。例如,在最先的NASNet論文中,為影象識別網路提出了一些常用的塊:

AutoMl及NAS概述:更有效地設計神經網路模型工具

用於影象識別網路的NASNet模組

在NAS演算法中,控制器遞迴神經網路(RNN)對這些構建塊進行取樣,將它們組合在一起以建立某種端到端模型。該體系結構通常體現出與最先進的網路(例如ResNets 或 DenseNets)相同的模型樣式 ,只是使用的構建塊有著差別或配置的方式不同罷了。

然後對這種新的網路架構進行訓練以使得模型收斂,並在驗證集上保持獲得一些準確性,由此產生的精度可以用於更新控制器,以便控制器隨著時間的推移產生更好的架構,可能選擇出更好的構建塊或更好的組合方式,使用策略梯度更新控制器權重。整個端到端設定如下所示。

AutoMl及NAS概述:更有效地設計神經網路模型工具

NAS演算法

這是一種相當直觀的方法!簡單來說:讓演算法抓住不同的構建塊並將這些塊放在一起構成一個網路,然後訓練並測試該網路。根據模型的結果,調整用於製作網路的構建塊和組合方式。

這個演算法成功的部分原因及論文中證明出這樣的好結果是由於它的約束和假設。NAS發現的體系結構在比實際資料小得多的資料集上進行訓練和測試,這樣做是因為像ImageNet這樣的大型資料集訓練需要耗費很長的時間。但是,在較小但結構相似的資料集上表現好的網路也應該在更大、更復雜的資料集上表現更好,這在深度學習領域中通常是這樣。

其次,搜尋空間本身是非常有限的。NAS旨在構建與當前最先進技術風格非常相似的架構。對於影象識別,網路中有一組重複的構建塊,同時逐步進行下采樣,如左下圖所示。在當前的研究中,可以選擇重複用於構建塊的組合也是非常常用的。NAS發現網路的主要創新部分在於構建塊是如何連線的。右下方就是在ImageNet網路中發現的最佳構建塊和模型結構。

AutoMl及NAS概述:更有效地設計神經網路模型工具

AutoMl及NAS概述:更有效地設計神經網路模型工具

結構搜尋的相關進展

NASNet論文可以說是非常創新的,因為它為深度學習研究提供了新的方向。不幸的是,對於Google公司以外的普通使用者來說,這種方法是非常低效且無法復現的。該方法使用了 450塊GPU,且需要3-4天的訓練才能找到表現優異的結構。因此,NAS的許多最新研究都集中在使這一過程更加高效。

漸進式神經架構搜尋(Progressive Neural Architecture Search, PNAS) 建議使用所謂的基於序列模型的最佳化(SMBO)策略,而不是NASNet中使用的強化學習。使用SMBO,我們不是隨機抓取並嘗試從外部設定構建塊,而是測試塊按複雜程度增加搜尋結構。這種操作不會縮小搜尋空間,但它確實使得搜尋以更智慧的方式完成。SMBO基本上是在說: 不要一次性嘗試所有事情,從簡單開始,只有在需要時才使得結構變得複雜。PNAS方法比原始NAS的效率高5-8倍。

高效神經架構搜尋(Efficient Neural Architecture Search,ENAS) 是嘗試使一般架構搜尋更有效的另一種嘗試,只使用一塊GPU即可。作者的假設是,NAS的計算瓶頸是訓練每個模型以使其收斂,在獲得其測試精度,丟棄所有訓練的權重。

在研究和實踐中反覆表明,遷移學習有助於在短時間內實現高精度模型,因為針對某些類似任務進行訓練的網路發現了相似的權重,且遷移學習基本上只是網路權重的轉移。ENAS演算法強制所有模型共享權重,而不是從頭開始訓練使其收斂。在之前模型中嘗試過的任何構建塊都將使用之前學過的權重。因此,我們 每次訓練新模型時都會進行遷移學習,其收斂速度更快!

該論文的實驗結果展示了ENAS的效率,使用單個1080Ti GPU進行了半天的培訓。

AutoMl及NAS概述:更有效地設計神經網路模型工具

ENAS的效能和效率

深度學習的新方法:AutoML

許多人將AutoML稱為深度學習的新方式,即整個系統的變化。我們只需執行預設的NAS演算法,而不是設計複雜的深度網路。Google最近透過提供Cloud AutoML將其發揮到了極致,只需上傳你的資料,Google的NAS演算法就會為你找到一個快速簡便的架構!

AutoML的這個想法是簡單地抽象出深度學習的所有複雜部分,只需要你的資料,讓AutoML單獨完成網路設計的難點!這樣,深度學習變得像其他任何一個外掛工具,獲取一些資料並自動建立由複雜神經網路驅動的決策功能。

AutoMl及NAS概述:更有效地設計神經網路模型工具

Google Cloud的AutoML管道

Cloud AutoML需要花費20美元,且有一點不好的是,一旦經過訓練,獲得的模型並不能匯出,必須使用他們的API在雲上執行剛剛構建好的網路。當然,還有一些完全免費的可供選擇,但確實需要進行更多的工作。

AutoKeras 是一個使用ENAS演算法的GitHub專案,該軟體可以使用pip安裝。由於它是用Keras編寫的,因此很容易被控制和使用,因此你甚至可以深入研究ENAS演算法並嘗試進行一些修改。如果你更喜歡TensorFlow或Pytorch,對應的也有公共程式碼專案!

總的來說,今天使用AutoML方法有多種選擇,這取決於你是否會使用你想要的演算法,以及你願意花多少錢來獲取更多的程式碼。

NAS和AutoML未來前景預測

很高興看到過去幾年在深度學習自動化方面取得的重大進展,它使得使用者和業務更容易訪問,且使得大眾使用深度學習變得更加容易。但是,總有一些空間需要改進。

架構搜尋變得更加有效。與ENAS一樣,使用一塊GPU並在一天的訓練時間裡就找到一個合適的網路是非常了不起的。但是,我們的搜尋空間仍然是非常有限的。目前的NAS演算法仍然使用的是之前人為設計的結構塊,只是將它們組合在一起!

另外一個強大且可能具有突破性的未來發展方向將是一個更廣泛的範圍搜尋,以真正尋找新穎的架構。這些演算法可能會揭示這些龐大而複雜的網路中更隱藏的深層學習秘密。當然,這樣的搜尋空間需要有效的演算法設計。

NAS和AutoML的這一新方向為AI社群提供了令人興奮的挑戰,並且真正有機會在科學領域取得另一項突破。

以上為譯文,本文由阿里云云棲社群組織翻譯。

譯文連結

文章原標題《Everything You Need to Know About AutoML and Neural Architecture Search》

譯者:海棠,審校:Uncle_LLD。

文章為簡譯,更為詳細的內容,請檢視原文。

更多技術乾貨敬請關注雲棲社群知乎機構號:阿里云云棲社群 - 知乎

標簽: nas  模型  AutoML  網路  演算法