ICLR 2020| 訓練15000個神經網路,加速NAS,僅用0.1秒完成搜索
- 2020 年 2 月 14 日
- 筆記

作者丨董宣毅
編輯丨Camel
本文對悉尼科技大學博士生董宣毅發表於 ICLR 2020 的錄用Spotlight論文《NAS-BENCH-201: Extending the Scope of Reproducible Neural Architecture Search》進行解讀。這篇論文提出的NAS-Bench-201,可在很大程度上提高NAS演算法的可復現性,並降低了NAS演算法的計算需求(例如僅用0.1秒便可以完成搜索)。

論文鏈接:https://arxiv.org/abs/2001.00326
NAS背景介紹
神經網路結構對深度學習領域的各個應用的性能都起著至關重要的作用,目前,網路結構的設計範式已經逐漸的從專家手動設計轉變為了機器自動搜索。網路結構搜索 (Neural Architecture Search,NAS) 旨在研究如何在一個給定的搜索空間內自動地發現高性能高精度高效率的網路結構。
在過去的幾年內,越來越多的科研人員投入到NAS這一研究領域,越來越多的NAS方法被提出,整個領域也取得了許多突破性的進展。現在是時候回顧一下NAS領域好的一面和不好的一面了。NAS除了以良好的性能著稱,還因為海量的計算需求而讓眾多研究員望而卻步,同時目前各個NAS演算法的實驗設置不盡相同,難以去公平的衡量一個NAS演算法的真實好壞。
為了進一步推動NAS演算法的可復現性,為了降低NAS演算法的計算需求,為了讓大家著眼於NAS演算法的本質,且啟發後續的NAS演算法,我們提出了NAS-Bench-201。
NAS-Bench-201是什麼?
NAS-Bench-201把15000多個神經網路在三個數據集(CIFAR-10,CIFAR-100,ImageNet-16-120)上基於不同的隨機數種子基於不同的超參數訓練了多次。提供了每個訓練epoch之後的訓練和測試耗時,模型在訓練集/驗證集/測試集的損失函數和準確度,訓練之後的模型參數,模型大小,模型計算量等重要資訊。NAS-Bench-201將這些有用的診斷資訊整理起來,提供了方便的API來獲取他們。執行 「pip install nas-bench-201」可以一鍵安裝NAS-Bench-201的API,你將會擁有15000+個神經網路的全部資訊!下圖是15000+個網路性能可視化。

利用NAS-Bench-201能幹什麼?
1,加速NAS演算法,利用NAS-Bench-201,Regularized Evolutionary Algorithm / Random Search / REINFORCE等NAS演算法可以在0.1秒內完成搜索過程並給出發現的網路的性能。
2,實時跟蹤NAS演算法表現,對於One-shot NAS演算法,利用NAS-Bench-201就可在任意時間節點,觀測當前預測的網路結構的性能表現而無需重新訓練該結構。
3,公平對比每一個NAS演算法。不同的文章在重訓練搜索出的網路結構時,使用的超參數/數據增強/正則/等都不盡相同。現在利用NAS-Bench-201的API,每位科研人員可以公平地對比搜索出來的網路結構。
NAS-Bench-201還提供了什麼?
我們在一個codebase下實現且開源了10種不同的NAS演算法。我們儘可能地公平地對比檢驗了這些演算法的性能。結果如下圖:

REA / REINFORCE / RANDOM / BOHB的500次運行結果

六種One-shot NAS演算法的3次運行結果
使用NAS-Bench-201的注意事項 NAS-Bench-201旨在提供一個公平的計算友好型的環境給NAS社區。因為利用我們的API可以很容易的獲取每個網路的性能,這個便利的條件可能會隱形的讓設計的新NAS演算法過擬合到最好的結構。為此,我們設置了一些規則來防止過擬合。
1,不能對某一個具體的操作進行正則化。比如限制skip-connection操作的數量等。
2,使用我們的提供的網路性能。訓練策略影響著一個網路結構最終的性能。我們建議NAS-Bench-201的用戶使用我們這個benchmark提供的每個網路的性能,即使使用別的訓練策略可以得到更好的性能。以此來保證公平性。
3,公布多組搜索實驗的結果。多次反覆搜索過程能夠更穩定地展示一個NAS演算法的效果。
NAS-Bench-201 API樣例展示 使用NAS-Bench-201的數據非常容易,無需自己整理數據,我們提供了方便的API介面,可以輕鬆調用各種對NAS演算法有用的診斷資訊。下面我們暫時了一些基本用法:

各位小夥伴快來試一試吧!程式碼,數據,演算法分析總有一款你需要的哦 。

NAS-Bench-201的相關資源
- 10+種NAS演算法的PyTorch實現:https://github.com/D-X-Y/AutoDL-Projects
- NAS-Bench-201復現指南:https://github.com/D-X-Y/AutoDL-Projects/blob/master/docs/NAS-Bench-201.md
- NAS-Bench-201 API的pip安裝:https://pypi.org/project/nas-bench-201/1.0/
- NAS-Bench-201文章鏈接:https://openreview.net/forum?id=HJxyZkBKDr
- 優秀NAS文章列表:https://github.com/D-X-Y/Awesome-NAS
更多ICLR 2020資訊,將在「ICLR 2020 交流群」中進行,加群方式:添加AI研習社高峰會小助手(AIyanxishe2),備註「ICLR」,邀請入群。