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

2021-10-25 10:15:28 字數 2983 閱讀 5260

翻譯:pprp

日期:2018/8/21

automl和nas是深度學習領域的新秀。不需要過多的工作量,他們可以使用最暴力的方式讓你的機器學習任務達到非常高的準確率。既簡單又有效率。

那麼automl和nas是如何起作用的呢?如何使用這種工具?

神經網路架構搜尋,簡稱nas。開發乙個神經網路模型往往需要大量的工程架構方面的設計。有時候可以通過遷移學習完成乙個任務,但是如果想要有更好的效能,最好設計自己的網路。

為自己的任務設計網路架構需要非常專業的技能,並且非常有挑戰性。我們很可能不知道當前最新技術的侷限在**(sota技術的瓶頸我們並不清楚),所以會進行很多試錯,這樣的話非常浪費時間和金錢。

為了解決這個問題,nas被提出來了,這是一種可以搜尋最好的神經網路結構的演算法。大多數演算法都是按照以下方式進行的:

首先定義乙個building blocks的集合,集合中元素代表的是可能用於神經網路搜尋的基本單元。比如說nasnet中提出了以下building block。

在nas演算法中,控制器rnn會從這些building blocks中取樣,將他們拼接起來構建乙個端到端的網路架構。這種結構通常與sota網路的架構相同,如resnet、densenet,但是使用的模組組合和配置有較大的區別。

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

整個過程非常符合直覺。簡單來說,讓演算法從不同的block之中取樣,然後將這些模組組合起來構建新的網路。然後訓練並測試該網路,根據獲得的結果,調整使用的block模組以及各個block之間的連線方式。

這篇文章(learning transferable architectures for scalable image recognition)展示了這種方法獲得的出色的結果是因為他受到了限制和假設。nas設計的網路一般都是在遠遠比真實世界小的資料集上訓練和測試的。這是因為在類似imagenet這樣比較大型的資料集上訓練花費時間代價過大。但是在深度學習時代中,在比較小但是結構相似的資料集上表現較好的網路,在更大更複雜的資料集上也應該表現更好。

第二點就是搜尋空間非常侷限。nas被設計用來構建與sota相似的網路架構。對於影象分類任務來說,網路構建需要重複的模組,然後逐步進行下取樣,如左圖所示。 nas設計的網路的主要新穎部分是這些塊的連線方式。

下圖是在imagenet中搜尋得到的最好的block結構。可以發現這幾個都包含了相當隨機的混合操作,包括許多可分離卷積。

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倍。

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

下表顯示了使用單個1080ti gpu進行半天的培訓後enas的效率要高得多。

許多人將automl稱為深度學習的新方法,無需設計複雜的深度網路,只需執行預設的nas演算法。google通過提供gloud automl將這一點發揮到了極致。只需上傳資料,google的nas演算法即可為你提供快速簡便的網路架構。

automl的想法是簡單地抽象出深度學習的所有複雜部分。需要提供的只有資料。剩下的讓automl設計最困難的部分。這樣一來,深度學習就會像其他工具一樣,成為外掛程式工具。

cloud automl的**確實高達2000美元,很遺憾,訓練好以後也無法匯出模型; 將不得不使用他們的api在雲上執行你的網路。 還有其他一些完全免費的替代方法,但確實需要更多工作。

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

網路架構搜尋變得更加高效;使用enas找到乙個網路在乙個gpu上,經過一天的訓練就可以得到相當不錯的結果。然而,我們的搜尋空間仍然非常有限。目前的nas演算法仍然使用手工設計的結構和構建塊,只是將它們以不同的方式組合在一起而已。

乙個強大的和潛在的突破性的未來方向將是更廣泛的搜尋,真正尋找新的架構。這種演算法可能會揭示出在這些龐大而複雜的網路中隱藏的更深層次的學習秘密。當然,這樣的搜尋空間需要高效的演算法設計。

nas和automl的這個新方向為人工智慧社群提供了令人興奮的挑戰,並為科學上的另乙個突破提供了真正的機會。

關於DevOps趨勢你所需要知道的10件事

作者 chrispreimesberger 發表於 2014 09 12 現在企業 it都執行自動化。隨著新一代的 和應用程式使我們進入基礎設施融合和雲計算時代,為適應新環境的複雜程度,對企業及其原有系統來說是一種挑戰。結果是,devops 開發 和 營運 的混搭術語 脫穎而出成為乙個新的業務流程,...

關於快取你需要知道的

作後端開發的同學,快取是必備技能。這是你不需要花費太多的精力就能顯著提公升服務效能的靈丹妙藥。前提是你得知道如何使用它,這樣才能夠最大限度發揮它的功效,並抑制其 本文將介紹最如何正確的新增和更新快取。這部分將介紹在開始加快取之前我們必須要做的事情。這步非常重要,如果沒弄好,很有可能加了快取反而不如不...

關於棧,你需要知道這些

分別用四個字描述棧和佇列 棧 後進先出 佇列 先進先出 棧 一種特殊的線性表,其只允許在固定的一端進行插入和刪除元素操作。進行資料插入和刪除操作的一端稱為棧頂,另一端稱為棧底。棧中的資料元素遵守後進先出lifo last in first out 的原則。它的三個核心操作 入棧 棧的插入操作叫做進棧...