在過去了幾年里,動態神經網絡非常熱,熱到每周都能看到幾篇不錯的動態神經網絡論文上傳到arxiv。那么什么是動態神經網絡呢?它有有哪些類型呢?它的研究現狀如何呢?接下來,就由Happy帶領大家簡單回顧一下咯。
Abstract
Abstract 動態神經網絡已成為深度學習新型研究課題。相比靜態模型(固定計算圖、固定參數),動態網絡可以按照不同輸入自適應調整自身結構或者參數量,導致了精度、計算效率、自適應等方面的顯著優勢。
本文對動態神經網絡進行了系統性的綜述并將其分為三大類:
instance-wise 它采用數據依賴的結構或參數處理每個樣例;
spatial-wise 它采用與圖像空域位置相關的方式進行自適應計算;
temporal-wise 它驗證序列數據(比如視頻、文本)的時間維度進行自適應推理。
相比靜態網絡,動態神經網絡有這樣幾個優勢:
Efficiency
Representation power
Adaptiveness
Compatibility
Generality
Interpretability
本文對動態網絡的幾個重要組成部分(比如結構設計、決策機制、優化技術以及應用)進行了系統性研究,最后我們對該領域的開問題以及未來研究方向進行了討論。
Instance-wise
實例級動態神經網絡旨在通過數據依賴方式處理不同樣例,它一般從以下兩個角度出發進行設計:
基于不同樣例分配適當計算量達到調整網絡架構的目的,因此可以在easy樣例上降低冗余計算,進而達到改善推理效率的目的;
針對不同樣例調整網絡參數且保持計算圖不變,通過小幅提升計算量達到提升模型表達能力的目的。
接下來,我們將從以上兩個角度出發,對現有實例級動態神經網絡進行介紹。
Dynamic Architectures
假設不同的輸入具有不同的計算需求,一種自然的方式:根據輸入動態調整推理時的架構。具體來說,我們可以調整網絡的深度、寬度或者動態路徑。具有動態架構的網絡不僅可以節省對于簡單樣例冗余計算,而且保證對于困難樣例的表達能力。相比靜態模型的加速技術,該方案可以帶來顯著的效率優勢。
Dynamic Depth
為識別“困難”樣例,目前CNN的結構變得越來越深,一種直觀的解決方案:在推理階段采用動態網絡深度減少冗余計算。關于動態深度有兩種實現方式:
Early exiting:對于“簡單”樣例提前退出。常見“早退”方案有以下三種形式:
Cascading DNNs,見下圖a。
Intermediate Classifier,見下圖b;
Multi-scale architecture with early exits,見Fig2-a。
Layer skipping:進行自適應的中間特征跳過。常見的“層跳過”有以下幾種形式:
The halting score 見下圖a;
Gating Function,見下圖b;
Policy Network,見下圖c。
Dynamic Width
動態寬度是動態深度之外的另一種選擇:盡管每個層都需要執行,但它的多個成分(比如神經元、分支或者通道)將根據輸入自適應選擇。
給出了幾個常見動態寬度方案:
Dynamic width of FC Layers
Mixture of Experts(MoE),見上圖a和b;
Dynamic channel pruning in CNNs,
Dynamic Routing
除了動態深度、動態寬度外,還有一種動態路徑的方案(見上面圖c):SuperNet中的計算路徑根據輸入自適應調整。關于SuperNet及其路徑決策主要有以下幾種方案:
Path selection in multi-branch structures
Neural trees and tree-structured networks
Others,主要見諸于NAS。
Dynamic Parameters
盡管前面提到的動態架構可以按照不同樣例自適應調整推理圖并取得有效計算量分配,但它們通常需要特定的架構設計、特定的訓練策略或者精心的超參數調整。
那么另一條線來了:保持推理架構不變,但網絡參數自適應調整。已有研究已證實其有效性:通過小幅提升計算量改進網絡的表達能力。給定輸入
x,靜態參數網絡(模塊)的輸出可以描述為:
y=F(x,Θ);與之對立的,動態參數網絡的輸出描述如下:
y=F(x,^Θ|x)=F(x,W(x,Θ))其中,
W(?,Θ)用于生成動態參數,
W的不同選擇已得到了充分的探索。
一般來說,參數自適應可以通過以下三種方式(可參見上圖)得到:
基于輸入調整訓練參數;
根據輸入直接生成網絡參數;
采用軟注意力調整特征。
Parameter Adjustment
參數自適應的一種典型方法:在推理階段,根據輸入調整網絡權值。通常來講,該過程通過非常少的計算量生成這種調整,比如注意力權值、采樣偏移。
Attention on weights 可訓練參數量時影響表達能力的重要因素。動態網絡(比如谷歌的CondConv、微軟DY-CNN)在多個卷積核上執行軟注意力生成自適應集成參數,它不會導致明顯的計算量提升。假設有N個核
Wn,n=1,2,?,N,該動態卷積定義如下:
y=x?~W=x?(N∑n=1αnWn)
該過程可以顯著提升模型的容量(capacity)且保持高效性,因為多分枝卷積融合等價于多卷積核參數融合后的單次卷積,而后者僅需前者
1/N的計算量。
權值調整還可以通過在卷積核的空域位置上實施軟注意力。比如,PAC(pixel-adaptive convolution)在每一層根據輸入生成注意力掩碼對卷積核進行調整。
Kernel shape adaptation 除了自適應調整權值外,參數調整還可以用于調整卷積核的形狀達到動態感受野的作用。比如,Deformable Convolution、Deformable Kernel。下表從不同角度對比了該方向的幾個方法。
Weight prediction
相比于在線修改模型參數,權值預測更為直接:在測試階段采用子網絡直接生成參數。
DFN(Dynamic Filter Network)與HyperNetwork是兩個經典的實現運行時權值預測的CNN和RNN方案。具體來說,DFN采用濾波器生成網絡為卷積生成濾波器。曠視科技提出的WeightNet則將CondConv與SENet納入到同一框架中,它通過分組全連接層生成卷積核,在精度-Flops、精度-參數量方面取得了極具競爭力的結果。其他類似的方法有:CARAFE、VSR-DUF等。
Dynamic Features
在推理階段通過調整或生成參數的主要影響在于生成更動態的、信息豐富的特征,進而增強了深度模型的表達能力。一種更直接的方式:采用輸入相關的軟注意力調整特征,見前面Figure6-c。這種類型的動態特征更易于得到,僅需要在計算圖上作微小調整。對于線性變換
F,在輸入特征執行注意力
α等價于調整參數:
F(x,Θ)?α=F(x,Θ?α)Channel-wise attention 一種常用軟注意力機制:動態縮放不同通道的特征,比如SENet:
~y=y?α=y?A(y)當把卷積納入考慮時,上述過程空域成如下形式:
~y=(x?W)?α=x?(W?α)也就是說:特征上的注意力等價于動態權值的卷積。
不同形式的注意力得到了了探索,比如采用標準差提供更多統計信息,采用更高效的1D卷積替換全連接層。總而言之,通道注意力可以概括為以下三種形式:
~y=y?A(y)
~y=y?A(x)
~y=y?A(Conv(x))Spatial-wise attention 特征還可以在從空域位置角度采用注意力進行動態調整以改進深度模型的表達能力。更進一步,通道與空域注意力還可以集成到一個框架中,比如BAM、CBAM。
Dynamic activation functions 前面兩種在激活函數之前通過軟注意力生成動態特征。近期一些工作開始嘗試通過動態激活函數提升模型的表達能力。比如,DY-ReLU采用N個線性變換
yc=maxn{ancxc+bnc}的最大值替換ReLU
yc=max(xc,0);此外還有曠視科技提出的FReLU、ACON。動態激活函數能能與現有網絡架構兼容,已在不同視覺任務中證實了其有效性。
總而言之,由于簡單、有效性,軟注意力已在多個領域得到探索,而且,軟注意力能方便的與其他方法集成組合。
Spatial-wise Dynamic Network
在視覺學習中,并非所有位置對于最終的預測起均等貢獻,這意味著:空域動態計算有極大潛力降低計算冗余。換句話說,僅需通過自適應方式計算一定比例的像素或者區域即可做出一個正確的決策。已有研究表明:對于大部分輸入而言,低分辨率表達已足以得到一個不錯的性能,CNN采用相同分辨率的輸入無疑會造成冗余計算。
為此,空域動態網絡旨在采用圖像的不同空域位置進行自適應推理。按照動態計算的粒度,我們將其分為:
pixel level
region level
resolution level
Pixel-level Dynamic Networks
按照前述分類,像素級動態包含有以下兩種類型:
dynamic architectures:采用動態架構處理每個像素;
dynamic parameters:采用動態參數處理每個像素。
Pixel-wise dynamic architectures
基于這樣的認知:前景像素更具信息價值,其計算需求要比背景更高。一些網絡嘗試對每個像素調整其網絡架構,現有方案可以劃分為以下兩種:
Dynamic sparse convolution:僅在子集像素區域進行卷積計算,見下圖。
Dynamic additional refinement:不同于采樣子集進行計算計算,另外一條線是:現在整個特征層面執行相對廉價的卷積,然后自適應激活額外的模塊在特定像素上進行更進一步的提煉。
Pixel-wise dynamic parameters
不同于在像素子集上完整調整卷積計算,動態網絡還可以對每個像素執行數據依賴的卷積以提升其表達能力或者感受野。現有方案主要有以下三種:
Dynamic weights,包含動態卷積、動態區域卷積等。
Dynamic reception fields,包含形變卷積、自適應鏈接網絡等。
Pixel-wise dynamic feature,包含空域注意力。
Region-level Dynamic Networks
像素級動態網絡需要特定的計算庫以適配稀疏計算,在實際硬件上加速極為有限。另一種可選方案:在區域或者塊級進行自適應推理。主要包含兩條線路:
Dynamic transformations:常見于細粒度圖像分類;
Hard attention:比如GFNet、RA-CNN。
Resolution-level Dynamic Networks
上面的討論是將特征分成不同的區域,然后采用自適應方式對不同區域進行處理。然而,所涉及的稀疏采樣、裁剪奧做會導致實際效率的價格降低。另外,動態網絡可以把不同分辨率的圖像視作整體:低分辨率圖像對于“簡單”樣例足夠有效。現有的分辨率級動態網絡可以分為以下兩種:
Adaptive scaling ratios:采用自適應縮放因子對特征進行上/下采樣達到動態分辨率目的。
Dynamic resolution in multi-scale architectures:采用并行/級聯方式構建多個子網絡以達到動態分辨率目的。
Inference and Training
從前面介紹可以看到:推理階段的數據依賴決策對于獲得高性能、高效率推理非常重要;此外,訓練動態網絡通常比靜態網絡更具挑戰性。
由于參數的自適應性可以通過SGD直接優化訓練得到,且無需特定技術。接下來我們主要針對離散決策、訓練策略進行介紹。
Decision Making of Dynamic Networks
推理階段的數據依賴決策主要有以下三種:
Confidence-based Criteria
Policy Networks
Gating Functions
Training of Dynamic Networks
從目標與優化兩個角度簡單匯總了訓練動態網絡的策略:
Training objectives for efficient inference:在這方面有分為以下幾種:
Trainng multi-exit networks,
Encouraging sparsity,包含稀疏正則
Other techniques,包含知識蒸餾等
Optimization of non-differentiable functions:
Gradient estimation,包含STE等;
Reparameterization techniques,包含Gumbel Softmax等;
Reinforcement learning,包含RL等。
Application of Dynamic Networks
接下來,我們將匯總以下動態神經網絡的典型應用,見下表。
可以看到:
對于圖像識別來說,動態CNN大多為instance-wise和spatial-wise形式;
對于文本數據來說,其推理框架大多為itemporal-wis形式;
對于視頻相關任務,三種類型的動態推理可同時使用;
動態網絡還可以用于解決深度學習中的基礎問題,比如:
緩解over-thinking降低整體計算量;
引入早退機制進行長尾分類;
提升模型魯棒性
在多任務框架下降低訓練耗時;
在遷移學習中尋找最優微調策略。
編輯:jq
-
濾波器
+關注
關注
161文章
7795瀏覽量
177993 -
谷歌
+關注
關注
27文章
6161瀏覽量
105300 -
PAC
+關注
關注
0文章
72瀏覽量
27907 -
DFN
+關注
關注
0文章
11瀏覽量
8529
原文標題:【綜述】一文概覽動態神經網絡
文章出處:【微信號:cas-ciomp,微信公眾號:中科院長春光機所】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論