摘要:圖 1:訓練 NAS 控制器的迭代過程圖示:訓練控制器(RNN),以概率 p 採樣架構 A,訓練架構 A 的子網絡得到準確率 R,計算 p 的梯度並且乘以 R 用於更新控制器。通過對搜索空間求微分和訓練更大的網絡(通常稱爲「超級網絡」),我們不再需要訓練多個架構,並且可以使用標準梯度下降優化器。

選自Medium

作者:Erik Lybecker

機器之心編譯

參與:NeuR

神經架構搜索(NAS)取代了人類「第二階」的調參工作,使我們能以兩層黑箱的方式尋找最優神經網絡。這一模式如果能物美價廉地應用,自然是很誘人,要知道「800 個 GPU 訓練 28 天」基本不是個人承受得起的。在本文中,作者爲我們介紹了 NAS 的進化史,即如何利用多種改進手段,將訓練成本壓縮到「凡人皆可染指」的程度。

神經架構搜索 (NAS) 改變了構建新神經網絡架構的過程。這種技術可以自動地爲特定問題找到最優的神經網絡架構。「最優」的定義可以看成是對多個特徵之間的權衡過程進行建模,例如網絡的大小和準確率 [1]。更令人印象深刻的是,現在 NAS 在單個 GPU 上僅需執行 4 個小時,過去在 800 個 GPU 上需要執行 28 天。而實現這一飛躍只花了兩年時間,現在我們不需要成爲 Google 員工就可以使用 NAS。

但是,研究人員如何實現這一性能飛躍呢?本文將介紹 NAS 的發展之路。

催化劑

NAS 的歷史可以追溯到 1988 年的自組織網絡思想 [2],但直到 2017 年 NAS 才取得了首個重大突破。當時訓練循環神經網絡 (RNN) 來生成神經網絡架構的想法出現了。

圖 1:訓練 NAS 控制器的迭代過程圖示:訓練控制器(RNN),以概率 p 採樣架構 A,訓練架構 A 的子網絡得到準確率 R,計算 p 的梯度並且乘以 R 用於更新控制器。

簡單地說,這個過程類似於人類手工尋找最佳架構的過程。基於最優操作和超參數的預定義搜索空間,控制器將測試不同的神經網絡配置。在這種情況下,測試配置意味着組裝、訓練和評估神經網絡,以觀察其性能。

經過多次迭代後,控制器將瞭解哪些配置能夠構成搜索空間內的最佳神經網絡。不幸的是,在搜索空間中找出最優架構所需的迭代次數非常大,因此該過程十分緩慢。

其部分原因是搜索空間遭受了組合爆炸的影響,即搜索空間中可能的網絡數量隨着添加到搜索空間的組件數量而大大增加。然而,這種方法確實能夠找到當前最佳 (SOTA) 網絡,該網絡現在被稱爲 NASnet [3],但它需要在 800 個 GPU 上訓練 28 天。如此高的計算成本使得搜索算法對大多數人來說都是不切實際的。

那麼,如何改進這一想法使其更容易使用呢?在 NAS 訓練過程中,大部分耗時來自於訓練和評估控制器建議的網絡。使用多個 GPU 可以並行訓練模型,但它們的單獨訓練過程所耗時間仍然相當長。減少訓練和評估神經網絡的計算成本將對 NAS 的總搜索時間產生很大的影響。

這就引出了一個問題:如何在不對 NAS 算法產生負面影響的情況下,降低訓練和評估神經網絡的計算成本?

降低保真度估計

衆所周知,較小的神經網絡比較大的神經網絡訓練速度更快。原因很簡單,較小網絡的計算成本較低。然而,就準確率而言,較小的神經網絡通常比較大的神經網絡性能更差。NAS 的目標是找到 SOTA 網絡架構,那麼是否有方法可以在不犧牲最終性能的情況下,在搜索算法中使用較小的模型呢?

圖 2:ResNet 架構示例,其中殘差塊表示爲「ResNet Block」。

答案可以在最著名的計算機視覺架構 ResNet [4] 中找到。在 ResNet 架構中,我們可以觀察到同一組操作被一遍又一遍地重複。這些操作構成殘差塊,是 ResNet 的構建塊。這種設計模式使得研究者可以通過改變堆疊殘差塊的數量,來創建同一模型的更深或更淺的變體。

此架構設計中隱含的假設是,可以通過迭代地堆疊結構良好的構建塊,來創建高性能的更大型網絡,這種做法完全適合 NAS。在 NAS 的語境下,這意味着先訓練和評估小模型,然後擴展該神經網絡。例如,先在 ResNet18 上執行 NAS,然後通過重複得到的構建塊來構建 ResNet50。

用搜索構建塊替代搜索整個架構,以及訓練和評估較小的模型,可以極大地提高速度,研究者實現了在 450 塊 GPU 上僅耗費 3-4 天的搜索時間 [5]。此外,即使只搜索構建塊,該技術也能夠找到 SOTA 架構。

然而,儘管這是一項巨大改進,但整個過程仍然相當緩慢,並且要想投入實際應用,訓練所需的 GPU 數量必須減少。無論模型大小如何,從零開始訓練神經網絡始終是一個耗時的過程。有沒有一種方法可以重用以前訓練好的網絡中的權重呢?

權重繼承

如何避免從頭開始訓練神經網絡?答案是使用權重繼承,即從另一個已經訓練過的網絡中借用權重。在 NAS 中,搜索是在特定的目標數據集上進行的,並且有多個架構同時訓練。爲什麼不重用權重,只更改架構呢?畢竟,搜索過程的目的是尋找架構而不是權重。爲了實現重用權重,我們需要用更嚴格的結構定義來限制搜索空間。

圖 3:NAS 單元被建模爲有向無環圖(Directed Acyclic Graph),其中邊表示操作,節點表示計算單元,計算單元轉換並組合先前節點來創建新的隱藏狀態。

通過定義允許在搜索構建塊中存在的隱藏狀態的數量,搜索空間變得非常有限。換句話說,構建塊內操作的可能組合數量較大,但並非無限。如果將隱藏狀態排序,並將它們的拓撲預定義爲有向無環圖 (DAG),則搜索空間如圖 3 所示。

使用這個搜索空間,我們可以把控制器建議的架構看作是來自更大網絡的子網絡,其中較大的網絡和子網絡共享相同的隱藏狀態(節點)。

當控制器建議使用某個網絡架構時,這意味着選擇一組連接(邊)的子集,併爲隱藏狀態(節點)分配新的操作。這種形式意味着很容易以編碼方式保存節點上操作的權重,從而實現權重繼承。在 NAS 設置中,這意味着以前架構的權重可以用作下一個採樣網絡的初始化 [6]。衆所周知,初始化可以很好地獨立於任務或操作 [7] 運行,且由於沒有從頭開始訓練模型,因此可以進行更快的訓練。

既然現在已經不再需要從零開始訓練每個模型了,那麼網絡的訓練和評估就會快得多。在單個 GPU 上 NAS 只需要 0.45 天的訓練時間,相比之前實現了約 1000 倍的提速 [6]。優化技術的結合大大提高了基於強化學習的 NAS 的速度。

這些改進都集中在更快地評估單個架構上。然而,強化學習方法並不是最快的學習方法。是否存在一個替代性搜索過程,可以更高效地遍歷搜索空間?

在基於強化學習的 NAS 過程中,需要訓練多個模型以便從中找到最佳模型。那麼有沒有辦法避免訓練所有的模型,而只訓練一個模型呢?

可微性

在搜索空間的 DAG 形式中,訓練的網絡是較大網絡的子網絡。那麼是否可以直接訓練這個更大的網絡,並以某種方式瞭解哪些操作貢獻最大呢?答案是肯定的。

圖 4:a) 邊上的操作最初是未知的。b) 通過在每個邊上放置候選操作的混合來連續釋放搜索空間。c) 在雙層優化過程(bilevel optimization)中,有些權重增加,而有些下降。d) 最終的架構通過在兩個節點之間具備最大權重的邊來構建 [8]。

如果移除控制器,並將邊更改爲表示所有可能的操作,則搜索空間可微分。在這個密集的架構中,所有可能的操作都在每個節點上以加權和的形式組合起來。加權和是可學習參數,使得網絡能夠縮放不同的操作。這意味着可以縮小不利於性能的操作,擴大「良好」的操作。訓練較大的網絡後,剩下要做的就是觀察權重並選擇對應較大權重的操作。

通過對搜索空間求微分和訓練更大的網絡(通常稱爲「超級網絡」),我們不再需要訓練多個架構,並且可以使用標準梯度下降優化器。NAS 的可微性爲未來發展開闢了許多可能性。其中一個例子是 NAS 中的可微分採樣 [9],由於每個前向傳播和反向傳播在搜索中需要使用的操作減少,因此該方法將搜索時間縮短到只要 4 個小時。

結語

NAS 訓練時間如何從多天縮短到幾個小時的故事先到此爲止吧。在這篇文章中,我試圖概述驅動 NAS 發展的最重要想法。現在,NAS 技術已經足夠高效,任何有 GPU 的人都可以使用它,你還在等什麼?

參考文獻:

[1] https://arxiv.org/pdf/1807.11626.pdf

[2] Self Organizing Neural Networks for the Identification Problem (https://papers.nips.cc/paper/149-self-organizing-neural-networks-for-the-identification-problem.pdf)

[3] https://arxiv.org/pdf/1611.01578.pdf

[4] https://arxiv.org/pdf/1512.03385.pdf

[5] https://arxiv.org/pdf/1707.07012.pdf

[6] https://arxiv.org/pdf/1802.03268.pdf

[7] https://arxiv.org/pdf/1604.02201.pdf

[8] https://arxiv.org/pdf/1806.09055.pdf

[9] https://arxiv.org/pdf/1910.04465.pdf

原文鏈接:https://medium.com/peltarion/how-nas-was-improved-from-days-to-hours-in-search-time-a238c330cd49

本文爲機器之心編譯,轉載請聯繫本公衆號獲得授權。

------------------------------------------------

相關文章