AutoML&NAS綜述 (下)


AutoML&NAS已經發展的十分迅速,本文主要翻譯自一篇比較新的綜述論文(AutoML: A Survey of the State-of-the-Art),文章對主要對原文的結構和主要內容進行了梳理和解讀。


四. 模型選擇

數據完了特徵,特徵也完了,就要生成模型並設置超參數了。

模型選擇有兩種兩方法:

  • 傳統模型選擇
  • NAS


傳統模型選擇,就是把一些傳統的機器學習算法,比如SVM,KNN,決策樹等等全拉過來,然後選擇效果最好的。(其實門道很多,不知道之後能不能填坑)


NAS則是重點部分,本文將從兩個方面介紹NAS:

  1. 模型結構最優化
  2. 生成出模型參數的方法


4.1 模型結構

NAS通過選擇和組合一組在搜索空間中預先定義的基本操作生成神經網絡模型。

這些操作可以大致分為卷積、池化、連接、逐元素相加(elemental addition)、跳躍連接(skip connection)等。

逐元素相加和跳接最早可以追溯到ResNet。

AI | AutoML&NAS綜述 (下)

這些操作的參數通常也是根據經驗預先確定的。例如,卷積的核大小通常設置為3×3和5×5,也有一些人工設計的卷積核,如深度可分離卷積(depthwise separable convolution)、擴張卷積(dilation convolution也有叫空洞卷積的)、可變形卷積(deformable convolution)等。

而模型結構大體可以分為4類:整體結構,基於cell的結構,層級結構,基於網絡態射的結構


a). 整體結構

最直觀的辦法就是生成整個神經網絡,

Neural architecture search with reinforcement learning.

Efficient neural architecture search via parameter sharing


AI | AutoML&NAS綜述 (下)


整體生成鏈式結構的例子(右上角估計涼了是截圖問題……)

作為一個整體生成的鏈結構神經結構的例子。圖中的每個節點表示一個具有特定操作的層,例如N1表示層1。每個節點的操作從搜索空間中選擇,包括卷積或最大值池化等。有向的邊表示信息流。例如,左圖中N2到N3的邊表示N3接收N2的輸出作為輸入。

上圖就是兩個不同的網絡,都是鏈結構的,右邊的相對左邊的就更復雜,因為右邊有很多諸如跳接或者多分枝網絡。


整體結構的缺點:

當網絡層數很深的時候,整體結構就需要很長時間去一點點搜索(因為整個網絡的每個小部分都要單獨搜索)。除此之外,這種耗時且精細的搜索就會導致網絡結構的“過擬合”,即搜出的網絡結構只能針對訓練時的數據集,應對更大的數據集或者其他任務時就沒有足夠的可移植性。(這點很要命的,考慮到現在都是拿CIFAR10做搜索)


b). 基於cell的結構

為了解決上述的問題,受到ResNet和DenseNet的啟發,

Efficient neural architecture search via parameter sharing

Learning transferable architectures for scalable image recognition

Practical block-wise neural network architecture generation


等工作提出了基於cell的結構,基於cell的結構首先搜索cell的結構,然後再堆疊這些cell已生成最終的網絡,這和之前提到的鏈式結構類似。

AI | AutoML&NAS綜述 (下)

Efficient neural architecture search via parameter sharing發現的cell結構

這種設計方法可極大地降低搜索的複雜度,舉個例子:

假設現在有6種預定義的基本操作,對第 j 層

AI | AutoML&NAS綜述 (下)

來說,有 j-1 層可以與其鏈接,於是就有

AI | AutoML&NAS綜述 (下)

種可能的決策(6是這一層是啥,乘上的是和前面怎麼連接)。可以看出這是一個等比數列,假設一共有12層,即 L=12 ,對這個等比數列求和,就有

AI | AutoML&NAS綜述 (下)

種可能的神經網絡。


而對於基於cell的網絡結構來說,一個cell有 B 個節點,一個節點由兩個子節點(預定義操作)組成。由於每個結點的決策是相互獨立的,節點有

AI | AutoML&NAS綜述 (下)

種可能。


除此之外,cell的功能也是有先驗的,比如卷積 cell (convolution cell)和削減cell(reduction cell),輸出會將空間分辨率除以2.

AI | AutoML&NAS綜述 (下)


上圖是結合卷積cell和削減cell生成了完整的網絡結構。假設這裡一個cell有8個節點,那麼最終的搜索空間就是

AI | AutoML&NAS綜述 (下)

這比之前整體結構的搜索空間小多了!


除此之外,對於整體結構,每個層是一個操作。而對於基於cell的結構,每個層是很複雜的cell結構。也就是說,如果我們在一個小數據集上搜索出了一個比較小的網絡,而需要遷移到更大的數據集上時,整體結構不好遷移,cell結構多懟幾個cell就好了。


Efficient neural architecture search via parameter sharing

Learning transferable architectures for scalable image recognition

Practical block-wise neural network architecture generation

Designing neural network architectures using reinforcement learning,

Large-scale evolution of image classifiers


回顧上邊這幾篇基於cell結構的論文,我們可以發現cell結構(邏輯上的)的兩個層級:


cell層找每個node的操作和鏈接。網絡層控制分辨率變化。

不過前期的基於cell的模型的效果有點弟弟,因為對網絡層級的搜索不到位,就是無腦堆堆堆


就像上面figure7所示的一樣。為了聯合學習可重複的cell和網絡的結構,Auto DeepLab定義了一個網絡層級結構的泛化表示,如下figure8。


AI | AutoML&NAS綜述 (下)


c). 層級結構


層級結構和基於cell的結構很類似,區別在於生成cell的方法。


基於cell的結構只有兩個層級,即基本操作組成cell,cell拼成網絡。而層級結構則有很多個層級,每個層級都可以由一些cell組成。高層的cell就由底層的cell迭代組合而成( 禁 止 套 娃 )


Hierarchical representations for efficient architecture search


AI | AutoML&NAS綜述 (下)

圖源:Hierarchical representations for efficient architecture search


圖上如Figure9所示,第一層級是基礎的操作,比如1×1卷積,3×3卷積/最大值池化。


這些基礎的組件組成了第二層級的cell。之後這些第二層的cell又作為基礎操作生成第三層級的cell,以此類推……最高層級的cell就是整個結構的有個motif(圖案?這個不知道怎麼翻譯……)


除此之外,一個高階cell可以用一個可學習的鄰接上三角矩陣G定義,

AI | AutoML&NAS綜述 (下)

表示第 k 個操作 O_k 部署在了第 i 和 j 個節點之間。


和基於Cell的結構相比,層級結構更加靈活,可以學習更加複雜和多變的拓撲結構。


d). 基於網絡態射(Network Morphism 可以認為是網絡“形態”的“映射”(轉變))的結構


基於Network Morphism(NM)的結構,可以將已經存在的神經網絡結構中的信息遷移到一個新的神經網絡,也就是說其可以對現在表現良好的網絡進行更新,而不是從頭搜索一個神經網絡。當然,新網絡的性能是要比舊網絡好的,至少也不必舊的網絡差。


Net2net: Accelerating learning via knowledge transfer

Network morphism

Efficient multi-objective neural architecture search via lamarckian evolution.


AI | AutoML&NAS綜述 (下)


4.2 超參數優化(HyperParamerter Optimization, HPO)


在定義了網絡結構的表示方法之後,下一步就是從很大的搜索空間裡搜索最優的網絡結構。


這樣的過程可以看作是對每個節點的操作和連接進行優化


我們可以認為,最終的網絡結構也是一個“超參數”,而搜索網絡結構和找學習率和batchsize一樣,是超參數優化。


a). 網格/隨機搜索


如果我們面前擺著很多超參數,那最直觀的方法就是把所有參數都拿過來試試。


不過遇到參數過多(連續)的情況,一個個試是不現實的,那麼就把他們的取值範圍列出來,間隔相同的長度畫一個網格,之後嘗試裡面的每一個點,這就是網格搜索。


而隨機搜索(論文名Random Search for Hyper-Paramerter Optimization)認為,不是所有的超參數都那麼重要,以至於你需要一個個搜。因此不如在整個空間裡隨機取樣。


AI | AutoML&NAS綜述 (下)

圖源:Random Search for Hyper-Paramerter Optimization


除此之外,為了找出超參數空間中表現良好的區域,


A practical guide to support vector classification


建議在整個空間先做一個比較粗粒度的網格搜索,認為那些表現較好的格點的附近是更好的區域,之後再在這些區域做更細的網格搜索。


Maximum-likelihood estimation with a contracting-grid search algorithm


提出了一個收縮網格搜索算法,其首先計算網格中每個點的似然值,之後一個新的網格就在最大似然值的中心生成。新網格中的點間距減少到舊網格的一半。對於固定次數的迭代重複此過程以收斂到局部最小值。


儘管隨機搜索在經驗上和理論上都比網格搜索好用,但是有個問題就是我們很難確定搜出來的點是不是效果最好的。只能認為搜的時間越長,越可能是最優解。


為了解決這個問題

Hyperband: A novel bandit-based approach to hyperparameter optimization


提出了Hyperband算法,Hyperband在資源和性能之間做了權衡。具體做法是一次訓一堆,給效果好的模型資源更多。


b). 強化學習(Reinforcement Learning,RL)


之前說過,NAS的老祖宗Neural architecture search with reinforcement Learning 用的就是RL,其通過RL訓練了一個RNN生成網絡的結構。


在此之後


Designing neural network architectures using reinforcement learning


的MetaQNN提供了一個“元建模”算法(meta modeling algorithm),該算法使用Q-learning和ε-greedy探索策略和經驗回放(experience replay),順序地搜索神經結構。


總的來說,如之前的Figure1(下圖)所示,基於RL的方法由兩個部分組成:

控制器(如RNN),用於生成子網絡獎勵網絡(Reward Network),用於評價生成的子網絡。並根據子網絡的“獎勵”(如準確率)更新控制器的參數。


AI | AutoML&NAS綜述 (下)

圖源:Neural architecture search: A survey


基於RNN和MetaQNN的兩個工作都在賓州樹庫和CIFAR10數據集上達到了SOTA。但他們共同的問題就是太慢,太消耗資源了,大的令人髮指(即使較低的MetaQNN也是100GPU days量級)


由於上述兩個算法使用的是整體結構,而整體結構的搜索和訓練都相當耗時,所以這兩個基於RL的算法都不是那麼高效。為了進一步提升效率,很多基於RL的算法改用了基於Cell的結構。包括(括號內為模型名)


(NASNet)Learning transferable architectures for scalable image recognition.

(BlockQNN)Practical block-wise neural network architecture generation.

(ENAS)Efficient neural architecture search via parameter sharing,


其中ENAS是基於cell結構的強者,用一塊GPU只要十小時就可以搜索出結果了。


ENAS的創新點在於,其每個子網絡看作搜索空間的子圖,如此一來子模型共享參數,無需從頭訓練。


c). 演化算法(Evolutionary Algorithm)


演化算法是一種基於種群的泛啟發式優化算法。據說這是一種對各種問題都比較魯棒的算法。


基於演化算法的網絡編碼表達不一樣,所以對應工作的基因操作也不一樣。具體有兩種編碼方式:


1. 直接編碼


直接編碼是一種廣泛使用的方法,它顯式地指定了網絡表現型(phenotype)。


比如,

Genetic CNN

使用了一種二進制編碼表示網絡結構,比如“1”表示兩個節點是相連的。這種二值編碼的優勢是易於執行,但計算的空間是節點的平方。更恐怖的是,節點的數目在一開始就是定死的。


A genetic programming approach to designing convolutional neural network architectures.


使用了笛卡爾遺傳規劃(Cartesian Genetic Programming, CGP),把網絡描述為非循環圖.有關CGP的知識可以參考(兩篇文章同意作者,文章都是零幾年的):


Cartesian genetic programming

Redundancy and computational efficiency in cartesian genetic programming


而下文,

Large-scale evolution of image classifiers.


就是把結構用圖編碼,點是3階的張量or激活值,邊是恆等映射or卷積等操作。

Neuroevolution of Augmenting Topologies(NEAT)


也是一種直接編碼結構,把所有節點和邊編碼到了DNA裡。


2. 間接編碼


間接編碼規定生成規則構建網絡,允許網絡結構的緊湊表示。


Cellular Encoding(CE)將一系列神經網絡編碼成一組基於簡單圖語法的標記樹。原論文:

Cellular encoding as a graph grammar,


而最近四篇工作

Efficient multi-objective neural architecture search via lamarckian evolution,

Convolution by evolution: Differentiable pattern producing networks,

Deep clustered convolutional kernels,

Evolving multimodal controllers withhyperneat


也使用了間接編碼,比如上述的第一篇,就使用了function(個人認為這裡是“功能”)進行編碼。每個網絡用功能保留網絡表型算子編碼,保證子網絡不比親代網絡差。


一個基本的演化算法包括以下四步:選擇,交叉,突變,更新。

AI | AutoML&NAS綜述 (下)

典型演化算法的步驟~


STEP 1 選擇(Selection):

這一步是從所有生成的網絡中選擇一部分進行交叉。有三種選擇單個網絡的策略:


  • Fitness Selection:所有子網絡被選擇的概率是適應度(Fitness Value)在所有群體適應度之和的比例。即


AI | AutoML&NAS綜述 (下)


  • Rank Selection:和第一種類似,但概率和相對排名有關,而不是絕對的值
  • Tournament Selection:是基於EA(演化算法)的NAS中最常用的選擇策略。在每一輪種,首先在所有子網絡中隨機選擇k(錦標賽大小)個個體。之後最優的個體就有概率 p 被選中,而對第二名的個體,概率就是 p×(1-p),以此類推……以下是使用Tournament Selection的幾篇工作:

Hierarchical representations for efficient architecture search

Large-scale evolution of image classifiers

Regularized evolution for image classifier architecture search

Efficient multi-objective neural architecture search via lamarckian evolution

STEP2 交叉(Crossover):


經過選擇的每兩個個體都會生成一個新的後代,後代繼承了部分親代的基因信息。這就模擬了生物學中交配的過程。而交叉的方法也根據編碼的不同而不同。


對於二進制編碼,網絡被編碼為了一個線性的bit串,因此兩個親代可以通過一點或多點交叉來結合。不過有的時候這種一個個點變動的行為會損害有用的信息。因此Genetic CNN,交叉的單位是一個由部分bit串組成的stage。


而對於Cellular Encoding(CE),一個隨機選擇的子樹從一個父樹中被切割,並替換另一個父樹的子樹。


NEAT,執行基於歷史標記的人工配對,允許它添加新的結構而不丟失哪個基因是哪個的整個模擬。


STEP3 突變(Mutation)


當基因信息被遺傳給下一代時,基因突變也會發生。下面是三種不同的突變形式


  1. 點突變:隨機翻轉每一個bit

A genetic programming approach to designing convolutional neural network architectures

Genetic CNN

  1. 連接突變:下文有兩個突變方法

改變兩層之間是否連接在兩個節點/層之間添加/刪除跳接。

Evolving deep neural networks

  1. 自定義突變:

Large-scale evolution of image classifiers

預定義了一組突變操作子,包括改變學習率和濾波器的size,移除跳接等等


雖然突變的過程可能看起來像一個錯誤,會導致網絡結構的破壞和功能的丟失,但是探索更多的新結構和確保多樣性。


STEP4 更新(Update)


上述步驟完成後,會生成許多新的網絡。通常情況下,由於計算資源有限,需要刪除一些網絡。

Large-scale evolution of image classifiers


隨機選出兩個子網絡,其中最差的那一個立即從種群中剔除

Regularized evolution for image classifier architecture search


移除的是最老的。


下面的三個工作,每隔一定時間刪除所有網絡

A genetic programming approach to designing convolutional neural network architectures.”

Evolving deep neural networks.

Genetic CNN


而下文

Hierarchical representations for efficient architecture search

誰都不刪,整個種群隨著時間推移慢慢生長。


d). 貝葉斯優化(Bayesian Optimization,BO):


BO建立目標函數概率模型,然後利用該模型選擇最有希望的超參數,最後根據真實目標函數對選擇的超參數進行評價。


這樣做的優勢在於,每一輪的網絡信息都被記錄在了整個概率空間當中,這樣即使之前的網絡被棄用,它的信息也依然通過更新概率分佈得到保留。


而且,直接建立超參數到目標分數的數學映射是很帥的一件事兒。


序列模型優化(Sequential model-based optimization,SMBO)是貝葉斯優化的一種簡潔形式。下面是SMBO的偽代碼流程


AI | AutoML&NAS綜述 (下)

算法偽代碼來源:Bayesian optimization primer.


下面用人話解釋一下,

  • 從搜索空間 裡取一小部分樣本隨機初始化。
  • 其中, D 是一個由數據對 組成的數據集。
  • 而的計算過程十分難搞(比如輸入x 是網絡結構,輸出 y 是這個網絡最終的準確率)
  • 而模型 M 則負責擬合這個數據集 D
  • 於是呢,就生成了一堆新的超參數,這些超參數服從模型 M 的分佈,並且被一個預定義的採集函數(acquisition function) S 順序選擇。而這個採集函數 S 可以看作難搞的目標函數 f 的廉價近似


順帶一提,有4種不同的採集函數:


  1. 基於改進的(improvement-based policies)策略
  2. 樂觀策略
  3. 基於信息的策略
  4. 組合採集函數(portfolios of acquisition functions)


而根據概率模型的不同,貝葉斯最優化(BO)可以被分為以下三種:


  1. 高斯過程(Gaussian Processes,GPs)

Practical bayesian optimization of machine learning algorithms


  1. 樹Paezen估計量(Tree Parzen Estimators,TPE)

Making a science of model search: Hyperparameter optimization in hundreds of dimensions for vision architectures


  1. 隨機森林(Random Forests)

Sequential model-based optimization for general algorithm configuration,


AI | AutoML&NAS綜述 (下)


上表是一些BO算法的開源庫,可以看出基於高斯過程的BO是最有名的。


即使目標函數是隨機的、非凸的、甚至非連續的,貝葉斯優化算法也是有效的,但是呢碰到深度學習問題,BO可能就有點不行了。


除此之外,雖然Hyperband(見網格/隨機搜索的最後)這類本身就做了資源性能權衡的模型可以有限資源內收斂,但我們並不知道這些收斂結果到底是不是最優的。


為了解決上述問題,

BOHB: Robust and efficient hyperparameter optimization at scale


提出了Bayesian Optimization-based Hyperband (BOHB)。BOHB算法在SVM,神經網絡和深度強化學習都可以使用。


而一個更快的BO算法,名為FABOLAS,它是之前BOHB的快速版本,大概能快10到100倍。


e). 梯度下降法(Gradient Descent):


儘管之前所有的搜索方法都可以自動生成網絡結構,也都可以達到SOTA的水平,但是他們還是太慢了。因為之前的方法大多使用離散的方法搜索網絡,而且把整個HPO(超參數優化)問題看作一個黑盒問題,因此需要多次消耗大量的計算資源。


DARTS: Differentiable architecture search.

Convolutional neural fabrics

Connectivity learning in multi-branch networks

Differentiable neural network architecture search,

Gradient-based hyperparameter optimization through reversible learning,

Hyperparameter optimization with approximate gradient


等文章就嘗試解決離散和黑盒優化問題。特別是DARTS,它在搜索空間內做的是連續且可微分的搜索,這是由一個softmax函數軟化離散的超參數超參數決策實現的:


AI | AutoML&NAS綜述 (下)


其中

AI | AutoML&NAS綜述 (下)

表示的是對輸入 x 的操作,比如卷積和池化。


AI | AutoML&NAS綜述 (下)

則是預定義的操作集。


AI | AutoML&NAS綜述 (下)

表示操作 o 在一個節點對(i,j) 之間,比如

AI | AutoML&NAS綜述 (下)


AI | AutoML&NAS綜述 (下)


AI | AutoML&NAS綜述 (下)


基於梯度下降的辦法節省時間,但搜索空間和GPU佔用呈現線性關係,搜索空間變大則GPU佔用必然變大。再上圖Figure13中,邊上共有三種不同的操作,為了提高效率,只對最高權重的操作會被重新訓練,

為了節約資源消耗,


PROXYLESSNAS: DIRECT NEURAL ARCHITECTURE SEARCH ON TARGET TASK AND HARDWARE


提出了一種新的通道層級剪枝方法(path-level pruning method),一開始設置一個大網絡,逐步去掉沒用的部分。(不過這個大網絡也佔地方)


sharpDARTS: Faster and More Accurate Differentiable Architecture Search


則解決了大網絡的問題。其中採用了一個通用的、平衡的、一致的設計,即SharpSepConv塊。


他們也提出了可微分超參網格搜索(Differentiable Hyperparameters Grid Search)和超立方搜索空間(HyperCuboid search space)。相較於DARTS快了50%,且精度也有較大提升。


五. 模型評價


一旦我們生成了一個網絡,那麼就要評價這個網絡好不好。


一個直觀的方法就是把這個網絡拉出來訓一訓,從最終的訓練結果確定可以不可以拿來用。但這種方法也是最花費時間和計算資源的。


為了加速模型評價的過程,研究者們採取瞭如下幾種辦法:


5.1 低保真


訓練時間與數據集大小和模型大小相關,所以可以從這兩個方向入手。


一方面,我們可以減少數據集中圖片的數量以及圖片的分辨率(那個快速貝葉斯優化FABLOAS用的就是這種辦法)


另一方面,可以減少模型的大小,比如每層使用更少的濾波器(減少每個卷積層輸入輸出通道數)


Learning transferable architectures for scalable image recognition

Regularized evolution for image classifier architecture search.


兩個工作就用了這種辦法。

Multi-Fidelity Automatic Hyper-Parameter Tuning via Transfer Series Expansion


則採用了類似於集成學習的方法,提出了Transfer Series Expansion(TSE),簡單的說就是對一個子網絡看多種低保真度策略(比如不同的分辨率),避免某個低保真度的模型效果特別差導致的誤殺。

Towards automated deep learning: Efficient joint neural architecture and hyperparameter search


這篇工作則驗證了,只要訓練時間足夠長,那麼就不需要訓練太長時間(emmmm有點繞)


AI | AutoML&NAS綜述 (下)


5.2 遷移學習(Transfer Learning)


老祖宗論文(RNN+RL的那篇論文)每次訓完的網絡就直接扔掉了,新的網絡要從頭訓練,才花費了這麼多資源。因此,如果使用遷移學習的技術,把之前訓練過的網絡用起來也能加速搜索過程。


Transfer learning with neural automl,


就是用之前任務的知識加速網絡設計。


而ENAS則在子網絡之間共享權重,比之前的老祖宗快1000倍。


而一些基於網絡態射的算法也繼承了之前架構的權重,比如↓

Net2net: Accelerating learning via knowledge transfer

Network morphism

5.3 代理模型(Surrogate)


基於代理人的方法是另一個近似黑盒函數的有效工具,以下三篇是代理人方法的有關論文。

Surrogate benchmarks for hyperparameter optimization.

An evaluation of adaptive surrogate modeling based optimization with two benchmark problems

Efficient benchmarking of hyperparameter optimizers via surrogates,


總的來說,如果我們能找到個不錯的近似,那麼先近似後優化比從頭優化快得多。


PNAS(原文Progressive neural architecture search)用了代理人模型控制搜索方式,比ENAS能看更多模型。


不過,如果優化的空間過大,代理人模型就遭不住了。


5.4 早停


早停本來是一個解決過擬合的辦法,卻也可以用來減少學習時間。


早停法最直觀的問題是,要停多“早”?如何科學“早停”?


比如可以提前通過停止預測在驗證集上表現不佳的評估模型來加快速度。


Learning curve prediction with bayesian neural networks

Peephole: Predicting network performance before training

Speeding up automatic hyperparameter optimization of deep neural networks by extrapolation of learning curves,


上面三篇就是解決科學早停問題的,而且看起來十分玄學。


比如最後一篇,它提出了一種學習曲線模型,該模型是從文獻中選取的一組參數曲線模型的加權組合,拿這個組合預測最終網絡的效果。


在這種玄學論文的基礎上,

Early stopping without a validation set,


提出一種基於快速計算梯度的局部統計數據的早停方法,它不再像以前的方法那樣依賴於驗證集,而是允許優化器充分利用所有的訓練數據。


六、 NAS性能總結


NAS是最近很火的研究主題,而且涉及到非常多的算法(之前提到的那些,五花八門)。


為了幫助大家更好地歸納理解NAS,我們將熱門的NAS算法分為了四類:


隨機搜索(RS),強化學習(RL),演化算法(EA),梯度下降(GD)


之後必須注意,這些模型報告的結果直接比較會非常不公平。就拿搜索出來網絡的效果,比如CIFAR10分類的準確度舉例子,這些模型的效果其實非常接近,而且也都算是SOTA了。而且我們也知道,不同的數據增廣等等Trick也會影響模型的最終效果,因此,準確率這個參數看看就好。


還有花費時間舉例,一百個GPU跑一天顯然和一個GPU跑一天不一樣,所以這裡引入 GPU Days去衡量不同算法的準確率,假設由N個GPU,跑起來花了D天,那麼GPU Days = N×D。


但是, GPU Days也只是個相對精準的量,因為不同模型部署的GPU型號也不一樣。


AI | AutoML&NAS綜述 (下)


AI | AutoML&NAS綜述 (下)

有一說一這表真的太大了……


AI | AutoML&NAS綜述 (下)

那個圖裡沒有時間(藍條)的是Proxyless,因為沒給搜索時間


最終我們整理出了不同NAS算法的圖表如上所示。可以得出的結論是:

實際上CIFAR10這種數據集上效果很接近,誰也幹不過誰。基於梯度下降的方法是最快的基於EA的普遍耗時,因為評估所有子網絡太難了。比較有趣的是,就是隨機搜索也可以得到不錯的結果。


七. 開放問題與未來工作

7.1 完整的AutoML管道


儘管現在已經有了很多開源的AutoML管道,比如TPOT和Auto-Sklearn

TPOT Automating Biomedical Data Science Through Tree-based Pipeline Optimization

Auto-SklearnEfficient and robust automated machine learning


不過上述的工作也不能自動收集數據,也囿於計算資源不能做什麼自動化的特徵工程。


不過長遠來看,我們的終極目標就是將機器學習的每個流程全都自動化,並將其放入一個完整的系統。


AI | AutoML&NAS綜述 (下)

再次放一下機器學習的管道


7.2 可解釋性(Interpretability)


儘管NAS總是可以找到比手工設計效果好的模型,但是現在也沒有人科學/正式地證明為什麼在某個地方選擇某個操作會比其他的好很多。


比如BlockQNN在最後採用的是Concat操作而不是逐元素加,5×5的卷積也相比其他更少見。但是人們對這些結果的解釋都是主觀和直覺性的。

因此AutoML的可解釋性也是一個重要的研究方向。


7.3 可復現性(Reproducibility)


可復現性一直是ML領域的老大難問題,AutoML也不例外。


特別是NAS的研究,因為很多算法的源碼無法下載,或者即使提供了源碼,結果仍然不可復現(或者需要很長的時間搜索)。


而NASBench(NAS-Bench-101: Towards Reproducible Neural Architecture Search)緩解了不可復現性的問題,其提供了一個表格,裡面有423624種神經網絡在標準數據集上(CIFAR10)的結果。


7.4 靈活的編碼方案(Flexible Encoding Scheme)


當前的搜索空間礙於人們對神經網絡編碼的預定義,會遇到以下三個缺點:

不同工作對網絡的編碼不能通用搜索空間的原子是預定義的操作層(卷積,池化),則無法出現嶄新的操作層(比如人們提出空洞卷積和深度可分離卷積)搜索空間上網絡結構也有人為的先驗,很新穎的模型結構也無法發現(跳接,Concat等結構)。


7.5 其他領域


現在NAS的研究到部分都在CIFAR10上。當然,現在已經有更多的工作去研究NAS+目標檢測和語義分割了

Nas-fpn: Learning scalable feature pyramid architecture for object detection,

Auto-deeplab:Hierarchical neural architecture search for semantic image segmentation

Nas-unet: Neural architecture search for medical image segmentation,


探索NAS在其他領域上的應用也是可行的研究方向。


7.6 終生學習(Lifelong Learn)


一旦一個高質量的AutoML系統被實現,那麼終生學習就不遠了。


首先,這個系統應該可以有辦法運用之前的先驗知識解決新的問題(Learn to learn),以便將其運用在更多的跨學科領域中。


而最近已經有一些工作使用元學習技術去加速NAS了

SMASH: ONE-SHOT MODEL ARCHITECTURE SEARCH THROUGH HYPER-NETWORKS


另一方面,如果我們可以自動地持續獲取數據,那麼模型就可以進行持續地增量學習(Incremental learning)。


這個時候,在接受新數據同時,避免舊數據災難性遺忘也需要研究。


LWF(Learning without forgetting)以及其基礎上的ICARL(ICARL:Incremental classifer and representation learning)就是解決災難性遺忘問題的。


分享到:


相關文章: