論文: https://arxiv.org/pdf/1812.00332.pdf
源碼: https://github.com/MIT-HAN-LAB/ProxylessNAS
ProxylessNAS 是MIT韓松教授組發表在ICLR2019上的一篇論文,是對NAS方法的進一步補充和優化。這篇文章內容還真是蠻多的寫了好久。。。-_-||
簡介
Neural Architecture Search (NAS) 是目前在自動搜索神經網絡結構的重要算法,然而NAS的使用卻需要大量算力的支撐(),在大規模數據集(ImageNet 1000)上應用難度會更大,因此爲了避免高GPU內存佔用,他們就使用了一些代理任務來解決這個問題,比如在更小數據集上(CIFAR10等)訓練,或者使用小的block,或者減少訓練次數。但這些使用代理任務的辦法都無法保證能得到目標任務的最優解。爲此這篇文章提出了一種不使用代理任務的方法ProxylessNAS能夠直接在大規模的目標任務上搜索結構,能夠解決NAS方法GPU高內存佔用和計算耗時過長的問題。
Contribution
1、ProxylessNAS 不需要使用代理任務,直接在大規模的數據及上搜索整個網絡
2、爲NAS提供了一種新的路徑剪枝的方式,展示了NAS與模型壓縮之間的緊密關係,最終通過二值化的手段將內存消耗降低了一個量級
3、提出了一種基於梯度的方法(延遲正則化損失)來約束硬件指標。
4、在CIFAR10 和 Imagenet上進行試驗,然後實現了state-of-the-art 準確率。
相關工作
1.基於 Proxy Tasks的NAS方法並沒有考慮Latency性能的影響
2.現有的NAS方法採用的是使用stack堆疊block構成最終的網絡,但實際的網絡中是可以存在不同種類的block的
3.DARTS巧妙地將搜索空間轉化爲可微的形式,把結構和權重聯聯合優化,但DARTS仍然是基於Proxy Tasks的,所以在計算堆疊block的過程中仍然佔用大量的GPU資源
4.DropPath 訓練一個網絡來評價一個結構,結構通過隨機置零路徑採樣得到的。
方法
因爲要搜索結構所以首先要對整個網絡的搜索空間定義成超參數。另外PNAS搜索的不是block而是基於路徑進行搜索
Construction of over-parameterized network
網絡結構定義爲 其中 表示一個有向無環圖中一條確定的邊,設表示N的候選基礎元操作,對於每一條邊都對應了這些操作,而網絡搜索的就是每個該選擇什麼操作,表示每條邊上有並行的N條通路的混合操作,所以超參數化的網絡結構可表示爲以下形式。
對於一個輸入,混合操作的輸出結果是基於條通路所形成的,在One-shot中是的和,當在DARTS中的時候表示的權重和,這個權重是通過對N條通路上的結構參數取softmax得到的。
Learning Binarized Path
爲了降低內存佔用,文章提出適用二值化路徑的方式來節約內存,二值化方式如下
首先從Path的角度,在所有的路徑中只保留1條path
當確定了路徑之後,再考慮二值化gate
Training Binarized Architecture Parameters
因爲想要訓練權重就要考慮如何更新weight和architecture
訓練weight首先要固定好architecture,然後根據公式隨機採樣二值化gate,得到一個網絡結構進行訓練
訓練architecture參數就要先固定weight然後重置gate在驗證集上更新architecture參數。
兩個訓練需要交替進行,一旦訓architecture參數訓練完成,我們就能通過修剪冗餘的路徑得到緊湊的網絡結構,這樣我們就能很容易的選擇權值最高的路徑。
architecture parameters更新不同於weights,文章使用了一種基於梯度的方法學習architecture parameters
因爲存在N條path,因此在更新architecture的時候回需要N倍的GPU內存佔用,爲了解決這個問題,文中根據多項式分佈採樣兩條path,這樣就可以把候選操作從N降到2,同時path weight和gate也要重置。
然後使用採樣的到的兩個path通過公式(4)更新architecture parameters。
最終通過對architecture parameters計算softmax得到path weight,然後需要進行比例放縮來更新architecture parameters以保持沒有被採樣得到的path weight不變
Handling Non-Differentiable hardware Metrics
處理不可微分的硬件指標,想要構建一個可以使用網絡更新優化的可微函數
讓Latency可微
想要可微就需要把網絡的延遲建模成一個連續的函數
假設跟定一個候選操作集合那麼對於每一個都有一個指定的權重來表示每個被選擇的概率,爲此爲了建立期望映射,就可以把操作與latency的關係寫成如下公式:
因爲上述公式的表示的是第i個block中,的數學期望,其中F就是將映射成latency的函數,因此對於整個網絡來說
然後這事就成了
此時latency可微了之後就能夠名正言順的加入到loss裏面
Reinforce-Based Approach
這裏是針對binary Gate提出的一種優化方案,使用reinforce的方法來訓練二值化權重。
實驗
實驗分別在Cifar-10和ImageNet上做了實驗