ProxyLessNAS : Direct Neural Architecture Search On Target Task And Hardware
Related Work
Proxy Tasks:
1.在小數據集上訓練
2.只學習一些小的Blocks
3.只訓練一小部分的Epoch
Motivation
1.基於 Proxy Tasks的NAS方法並沒有考慮到諸如Latency等性能的影響
2.現存的NAS結構是採用搜索Block的方法進行Stack組成最終的網絡結構,但是實際情況中,每一個Block是可以不同的
3.DARTS是一種創造性的將Architecture 和Weight聯合進行SGD優化的,但是在使用Proxy Tasks學習Block進行堆疊的同時又存在GPU Consumption的方法
4.Drop Path是一種可以找到緊性的高效網絡結構的方法
Overview
本文提出了一種Path-Level的剪枝方法
**Step 1:**直接訓練一種包含所有候選Path的超參Network
**Step 2:**在訓練過程中,通過引入結構化參數來學習通路的冗餘性
**Step 3:**在最終獲得緊性的優化結構時將具有冗餘性的Path進行剪枝
存在問題:
-
隨着可選Operations的增加,可選Network的Size越大,會增加GPU Memory
- Solution:藉助"Binary Connect"的思路,將Architecture Parameters二值化,在一個Run-Time中只允許一個Path被激活
-
Hardware Objectives(e.g. Latency)不可微
- 將Network Latency抽象成連續函數,利用正常的Loss進行優化
- Reinforce-Based Algorithm
Contributions
1.直接在大型數據集上且不需要使用Proxy Task的技術進行訓練和學習
2.允許在大型的候選集上進行搜索
3.打破了Block 堆疊的Network的構成方式
4.提出了對於NAS做剪枝的方案,展示了NAS與模型壓縮之間的相近的關係,同時通過Path剪枝,本文的方法節約了大約一個量級的計算量
5.提出了一個基於Latency Regularization Loss的梯度下降方法以解決硬件目標問題
Method
Construction of Over-Parameterized Network
Question:爲了能夠進行搜索,必須要對整個超參的網絡結構進行定義
解決方案:所有的Path都是混合通路,學習的是整個Network而不是Block
將Network用表示
- 代表一個有向無環圖的一條確定的邊
- 是一個含有個初始Operations(卷積、池化、Identity、Zero)的集合
- 每條邊上含有N條並行通路的一個混合操作
因此,對於一個輸入,混合操作的輸出結果是基於條通路所形成的
Learning Binarized Path
**Question:**隨着Path可選的空間逐漸擴大,Weight的運算量將不斷增加
**解決方案:**二值化Path
ProxyLessNet在訓練過程中,在衆多的Path中,只激活一個Path,故此本文將所有的Path進行二值化處理
因此對於給定的binary gate
[說明]:此處值得注意的是 並沒有直接包含在的計算公式中,因此不能直接通過該公式對進行優化,下文中,借用DARTS中的方法對進行轉換
Training Binarized Architecture Parameters
**Question:**對於以上網絡的定義,就像先前的NAS,必須要解決Architecture和Weight的更新迭代問題
**解決方案:**Binary Connect–>Weight 更新Architecture
- 訓練:
- 固定Architecture參數
- 根據公式(3)隨機採樣Binary Gate
- 通過Binary Gate激活的Path利用SGD的方法在訓練集上進行優化
- 訓練:
- 固定
- 重置Binary Gate
- 在驗證集上更新Architecture
[說明]:以上兩個優化過程必須要交替進行
- Architecture Parameter確定時,通過砍掉具有冗餘性的Path即可得到緊緻性網絡結構 [此處利用了Drop Path操作],爲了簡化,本文采用了具有最高Path權重的Path作爲基礎的Architecture
**Question:**此處值得注意的是,因此藉助網絡的反向傳播算法是可以計算的但是,是需要保存在memory中
**解決方法:**本文考慮將選擇N個候選中的一個路徑的任務分解爲多個二進制選擇任務
-
Step 1:更新Architecture Parameters
-
Step 2:根據多項式分佈 採樣兩個Path [此處利用了MASK]
通過以上兩個步驟,就可以直接將候選操作的數量由降解爲2.同時 和 也要隨之重置
-
Step 3:利用公式重新採樣的兩個Path的 進行更新
-
Step 4:通過在Architecture Parameters上應用softmax來計算Path Weight,需要通過乘以比率因子來重新調整這兩個更新的Architecture Parameters的值,以保持非採樣路徑的路徑權重不變
[效果]:
- 採樣Path-A:Path Weight增加
- 採樣Path-B:Path Weight下降
- Other Path:Path Weight不變
Handling Non-Differentiable hardware Metrics
Question:Latency不可微
解決方法:構建可微函數,使得網絡可以通過反向傳播進行SGD更新優化
-
Step 1:使得Latency 可微
假設:
:一個混合操作的動作候選集
:與相對應的path weight,代表了選擇的概率
:是第個Block的Latency的期望值
代表的是Latency 預測模型
因此對於整個網絡來說:
Network Loss
Reinforce-Based Approach
Question:針對於Binary Gate的優化問題的解決方案
**解決方法:**ReInforce可以用於訓練二值權重
具體的公式推演可以詳看論文
Experience
Conclusion
- GPU prefers shallow and wide model with early pooling;
- CPU prefers deep and narrow model with late pooling.
- Pooling layers prefer large and wide kernel.
- Early layers prefer small kernel.
- Late layers prefer large kernel.
GPU
CPU:
Mobile