AAAI2020 | 利用網路結構關係加速NAS+Layer
這是我在海康威視研究院謝迪博士部門實習的工作,被 AAAI-2020 接收為 Spotlight。
Neural Inheritance Relation Guided One-Shot Layer Assignment Searcharxiv.org
引子
上一個階段的網路結構搜索(NAS)研究,主要在兩個方面。1)各類搜索方法,從強化學習、進化演算法等到梯度下降;2)各類網路結構或者配置,從各種運算元到通道數,「萬物皆可搜」。近期的 NAS 研究熱點主要在探究高效、快速的 NAS。
搜索方法方面,現在比較時髦的是one-shot方法,處在發展階段,也存在一些問題。one-shot 方法將多個 subnet 並聯在一個 supernet 裡面,大概而論,並聯在 supernet 中的 subnet 越多,one-shot 方法將會更慢,對於搜索結構也會有隨機性。
很多人質疑,各種搜索方法都是在一個人為事先優選的**「子搜索空間」**基礎上進行的。在這種人為優選子搜索空間中,所包含的各結構之間效果分布較為集中,上下限差距不大或者極端的結構分布很少,也就是說,這是一個效果接近於最優的「次優子結構空間」。那問題在於,NAS 作為 AutoML 的一個重要部分,是要對之前一些需要人的經驗或試錯的工作進行自動化處理的,自動尋找這個「次優子結構空間」也是 NAS 的應有之義。
**我們進行 NAS,首要的是承認了各種結構是不平等的。不平等自然是最直白的一種關係。**上一階段的 NAS 工作大多在搜索方法和不同任務空間上鑽研,現在,是時候注意一下,在一個任務上,整個結構搜索空間中各個結構之間是否具有一定的關係呢?我們知道這個世界是普遍聯繫的,同理,網路搜索空間,也是由結構以及結構之間的關係構成的。如果我們掌握了結構之間關係,就可以有先見之明,從而達到 NAS 加速效果。這是一個問題。
各種網路結構或者配置方面,在之前的工作中,有運算元選擇、通道數搜索,然而對層數搜索的 NAS 工作是不夠完善的。我們知道,one-shot 方法中supernet 是並聯的,但是層是串聯的,現在如何得到一個 one-shot 的層數搜索框架呢?這也是一個問題。
這篇文章中,我們可以找到以上兩個問題,即網路結構關係和卷積神經網路層數搜索的答案。
工作
首先問題的定義,layer assignment search,可以泛泛理解成層數搜索。詳細來說,這裡的層指的是一個單元,比如 resnett 的 bottleneck,plane net 的 conv-bn-relu 等;還有,CNN 中,一般用下取樣(stride conv/pooling)劃分階段,每一個階段會堆疊若干層,比如 resnet,四個階段,各階段層數為 3,4,6,3,每一個層就是一定的算力。
不同 layer assignment 的 ResNet-50
值得說明的一點,以上不同 layer assignment 的 ResNet50 是具有相同 FLOPs 的。可以計算驗證。
實際項目中,尤其在邊緣設備算力限制情況下,如果不能用 ResNet50,就需要確定一個階段里分配幾層算力,這就是 layer assignment search 問題。這裡面包含了兩個意思,第一,就是總層數,第二,就是給定層數下各層的分配。
然後回答到一個問題:整個結構搜索空間中各個結構之間是否具有一定的關係呢?答案是有的,就是,後面一層的最好層分配結構繼承自前一層的最好層分配結構。由淺至深。層層下去,去除了網路空間的冗餘。示意圖如下:
將這種關係命名為Neural Inheritance Relation(NIR)。將這個關係作為先驗,構建一個 one-shot 搜索框架,當然是針對層數搜索的,即是 Neural Inheritance Relation Guided One-Shot Layer Assignment Search 。
如上圖所示,層數搜索的 one-shot 框架。一個包含了諸多層的 supernet 首先被構建出來,每次取樣,在每個階段要從淺到深的進行,將取樣得到的各階段 layer 連接起來,就是一個 candidate subnet。
取樣從淺層開始,舉個例子,圖中有兩個下取樣,劃分起三個階段。那麼第 0 次取樣是 1-1-1 的層分配,第一次取樣全部的 candidate 只要三個:1-1-2,1-2-1,2-1-1。每個取樣得到的 subnet 將會被公平的進行若干次訓練,評估出最好結構,標記為 optimal-1。
這個時候運用 NIR,第 2 次只取樣與 optimal-1 有繼承關係的下一層 subnet,依然只有三個。事實上每一次取樣數等於階段數。演算法步驟如下:
演算法的加速效果,首先從理論上來講,一個階段(group)數為 n,層(layer)數為 m 的 CNN,窮盡所有,層數搜索的搜索空間具體大小如下
層數搜索的搜索空間複雜度為 ,我們這種 NIR 神經網路結構關係引導的搜索,實際搜索空間複雜度為
,為搜索踩了一腳油門。
本文在 CIFAR-100 上搭建了層數搜索數據集,在 Tiny-ImageNet, ImageNet 上進行了實驗。
具體的詳情請見 paper:Neural Inheritance Relation Guided One-Shot Layer Assignment Search
我們將層數搜索單獨摘出來,更加存粹的探究神經網路結構之間的關係,並希望網路結構關係的思路,可以給 NAS 社區帶來一些 insight,進一步得到更加通用的高效 NAS 方案。