随着人工智能的迅速發展,深度學習工具箱也發生比較大的變化,從之前受歡迎的Caffe到Tensorflow等架構,好的深度學習架構能夠幫助開發人員快速且高效地開發出相應的任務模型,完成相關的任務。這類深度學習工具箱都需要自己設計對應的網絡模型,需要大量的實驗以獲得最終模型,整個過程比較費時費力。那在這個構造模型的過程中,肯定會想到,能不能讓機器自己根據資料集建構合适的模型呢?答案是可以的。本文介紹的是近來新的一種深度學習工具箱——AutoML和神經架構搜尋( Neural Architecture Search,NAS),它們是深度學習領域中新一任國王,以快速且簡單粗暴的方式,并在不需要太多人為參與的情況下為我們的機器學習任務獲得高精度模型。使用起來簡單有效,這才是我們想要的人工智能!那麼它是怎樣工作的?如何使用呢?下面為大家一一展開介紹。以下是需要了解有關AutoML和NAS的所有資訊。
神經架構搜尋(NAS)
開發神經網絡模型通常需要大量的模型工程,一般可以通過
遷移學習快速搭建出一個“能用”的模型出來,但如果真的想要獲得最佳性能,通常最好是自己根據具體任務設計自己的網絡,這就需要專業的技能( 從商業角度來看,這是昂貴的),并且總的來說自己設計網絡模型具有很高的挑戰性,而且我們甚至可能不知道目前最先進的技術!且在設計模型的過程中需要進行很多次的試驗,并根據實驗結果調整網絡模型,整個實驗本身耗時耗力,代價昂貴。
這就是NAS的用武之地,NAS是一種搜尋最佳神經網絡架構的算法。大多數模型算法都具有以下結構,首先定義一組可能用于我們網絡的“建構塊”。例如,在最先的
NASNet論文中,為圖像識别網絡提出了一些常用的塊:

用于圖像識别網絡的NASNet子產品
在NAS算法中,控制器遞歸神經網絡(RNN)對這些建構塊進行采樣,将它們組合在一起以建立某種端到端模型。該體系結構通常展現出與最先進的網絡(例如
ResNets或
DenseNets)相同的模型樣式 ,隻是使用的建構塊有着差别或配置的方式不同罷了。
然後對這種新的網絡架構進行訓練以使得模型收斂,并在驗證集上保持獲得一些準确性,由此産生的精度可以用于更新控制器,以便控制器随着時間的推移産生更好的架構,可能選擇出更好的建構塊或更好的組合方式,使用政策梯度更新控制器權重。整個端到端設定如下所示。
NAS算法
這是一種相當直覺的方法!簡單來說:讓算法抓住不同的建構塊并将這些塊放在一起構成一個網絡,然後訓練并測試該網絡。根據模型的結果,調整用于制作網絡的建構塊群組合方式。
這個算法成功的部分原因及
論文中證明出這樣的好結果是由于它的限制和假設。NAS發現的體系結構在比實際資料小得多的資料集上進行訓練和測試,這樣做是因為像ImageNet這樣的大型資料集訓練需要耗費很長的時間。但是,在較小但結構相似的資料集上表現好的網絡也應該在更大、更複雜的資料集上表現更好,這在深度學習領域中通常是這樣。
其次,搜尋空間本身是非常有限的。NAS旨在建構與目前最先進技術風格非常相似的架構。對于圖像識别,網絡中有一組重複的建構塊,同時逐漸進行下采樣,如左下圖所示。在目前的研究中,可以選擇重複用于建構塊的組合也是非常常用的。NAS發現網絡的主要創新部分在于建構塊是如何連接配接的。右下方就是在ImageNet網絡中發現的最佳建構塊和模型結構。
結構搜尋的相關進展
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進行了半天的教育訓練。
ENAS的性能和效率
深度學習的新方法:AutoML
許多人将AutoML稱為深度學習的新方式,即整個系統的變化。我們隻需運作預設的NAS算法,而不是設計複雜的深度網絡。Google最近通過提供
Cloud AutoML将其發揮到了極緻,隻需上傳你的資料,Google的NAS算法就會為你找到一個快速簡便的架構!
AutoML的這個想法是簡單地抽象出深度學習的所有複雜部分,隻需要你的資料,讓AutoML單獨完成網絡設計的難點!這樣,深度學習變得像其他任何一個插件工具,擷取一些資料并自動建立由複雜神經網絡驅動的決策功能。
Google Cloud的AutoML管道
Cloud AutoML需要花費20美元,且有一點不好的是,一旦經過訓練,獲得的模型并不能導出,必須使用他們的API在雲上運作剛剛建構好的網絡。當然,還有一些完全免費的可供選擇,但确實需要進行更多的工作。
AutoKeras是一個使用ENAS算法的GitHub項目,該軟體可以使用pip安裝。由于它是用Keras編寫的,是以很容易被控制和使用,是以你甚至可以深入研究ENAS算法并嘗試進行一些修改。如果你更喜歡
TensorFlow或
Pytorch,對應的也有公共代碼項目!
總的來說,今天使用AutoML方法有多種選擇,這取決于你是否會使用你想要的算法,以及你願意花多少錢來擷取更多的代碼。
NAS和AutoML未來前景預測
很高興看到過去幾年在深度學習自動化方面取得的重大進展,它使得使用者和業務更容易通路,且使得大衆使用深度學習變得更加容易。但是,總有一些空間需要改進。
架構搜尋變得更加有效。與ENAS一樣,使用一塊GPU并在一天的訓練時間裡就找到一個合适的網絡是非常了不起的。但是,我們的搜尋空間仍然是非常有限的。目前的NAS算法仍然使用的是之前人為設計的結構塊,隻是将它們組合在一起!
另外一個強大且可能具有突破性的未來發展方向将是一個更廣泛的範圍搜尋,以真正尋找新穎的架構。這些算法可能會揭示這些龐大而複雜的網絡中更隐藏的深層學習秘密。當然,這樣的搜尋空間需要有效的算法設計。
NAS和AutoML的這一新方向為AI社群提供了令人興奮的挑戰,并且真正有機會在科學領域取得另一項突破。
作者資訊
George Seif ,機器學習工程師
個人首頁:
https://towardsdatascience.com/@george.seif94本文由阿裡雲雲栖社群組織翻譯。
文章原标題《Everything You Need to Know About AutoML and Neural Architecture Search》,譯者:海棠,審校:Uncle_LLD。
文章為簡譯,更為詳細的内容,
請檢視原文。