閱讀146 返回首頁    go 阿裏雲 go 技術社區[雲棲]


論文導讀:麵向卷積神經網絡的卷積核冗餘消除策略

更多深度文章,請關注:https://yq.aliyun.com/cloud

研究背景

近幾年來,卷積神經網絡(Convolutional Neutral Network, CNN)在計算機視覺、自然語言處理以及語音識別等眾多領域得到了廣泛的應用。然而CNN強大的性能依賴於海量的存儲與計算資源。一般來說,CNN通常在離線環境下,使用高性能CPU/GPU集群進行模型訓練。然而,出於隱私性、網絡延遲以及資源消耗等方麵的考慮,我們更傾向於在本地而非遠程完成CNN模型的訓練。為此,減少CNN網絡結構中的參數數量,避免巨大的存儲與計算開銷就顯得尤為重要。

本篇論文對文獻《Deep convolutional neural network on ios mobile devices》中提出的卷積核冗餘消除思想提出了進一步的優化。深層卷積網絡通常使用過參數化的卷積核來提取特征,而這種方式使得不同卷積核間存在不同的稀疏度(Sparsity),部分卷積核的權重參數可能過於稀疏,對模型性能提升的效果有限。我們可以根據一定的閾值來過濾稀疏度較高的卷積核,進而精簡CNN網絡結構,提高模型運行效率。

研究內容

在CNN的前向傳播過程中,卷積核(4維張量,\(W\in R^{N\times C\times H\times W}\))對輸入數據(3維張量,\(X\in R^{C\times Y\times X}\))進行卷積運算,以提取不同的數據特征,輸出結果為一個3維張量(\(Y\in R^{N\times Y'\times X'}\)),其中\(N\)表示卷積核的數量,\(C\)、\(H\)和\(W\)分別表示卷積核的通道數、高度與寬度,\(Y\)、\(X\)與\(Y'\)、\(X'\)分別表示模型輸入數據與輸出數據的尺度。

稀疏度定義

卷積核的稀疏度根據所處卷積層的權重參數來定義。對於卷積層\(l\),\(M_{l}\)表示\(l\)層中所有卷積核權重參數絕對值的均值,如式(1)所示:
$$
M_{l}=\frac{\sum_{n,c,w,h}\mid k_{l,ncwh}\mid}{N\times C\times W\times H}\tag{1}
$$

其中,\(n,c,w,h\)分別表示卷積核在各個維度的下標,\(l\)表示卷積核權重\(k\)所在的卷積層。

進而,卷積層\(l\)中第\(n\)個卷積核的稀疏度\(S_{l}(n)\)定義如下:
$$
S_{l}(n)=\frac{\sum_{c,w,h}\sigma(k_{l,ncwh})}{C\times W\times H}\tag{2}
$$

$$
\sigma(x) =
\begin{cases}
1, & \text{if $|x|<M$} \\
0, & \text{otherwise}
\end{cases}
\tag{3}
$$

如果卷積核\(n\)的一些權重小於\(l\)層中權重的均值,那麼\(S_{l}(n)\)會接近於1,這也意味著當前卷積核相比其他卷積核更加冗餘。針對這種情況,本篇論文提出了以下兩種方法,利用稀疏度對冗餘的卷積核進行剪枝。

逐層優化算法

對同一卷積層中的所有卷積核按照稀疏度降序排列,可得有序列表\([S_{l}(1),S_{l}(2),\dots,S_{l}(N)]\)。此時,待刪除的卷積核數量由約減因子\(r\in[0,1)^{L}\)決定,其中\(L\)表示CNN網絡結構中卷積層的數量,\(r_{i}\)表示第\(i\)層中待刪除卷積核的數量比例。

以卷積層\(l\)為例,冗餘卷積核的精簡過程如下圖所示。令\(N=10\),\(r_{l}=0.3\),此時卷積層\(l\)中待刪除的卷積核數量為\(r_{l}N=3\),因此,刪除\(l\)中稀疏度最高的3個卷積核\(k_{1}\)、\(k_{2}\)與\(k_{3}\),並使用剩餘卷積核生成卷積層\(l\)的輸出。隨後,使用精簡後的卷積層訓練模型,強化卷積層中剩餘的冗餘度較低的卷積核,以保證模型能夠取得更好的效果。

bd3c9f654c90a5fa703eadeaa7a9eda52e59fa08

通過對卷積層中剩餘權重參數數量的估計,逐層優化算法能夠在滿足指定計算開銷的前提下,靈活地確定約減因子\(r\)。

模型的計算開銷可通過卷積層中權重參數的數量來粗略估計,經過精簡後的卷積層的權重參數可通過如下方式計算:

$$
weights\ remained(r')=\left[1,\left(r_{1:(L-1)}'\right)^T\right]Dr'\tag{4}
$$

其中,向量\(r'=1-r\)表示每個卷積層中剩餘卷積核的比例,\(D\in R^{L\times L}\)為對角矩陣,\(D_{ii}=W_{i}H_{i}C_{i}N_{i}\)表示卷積層\(i\)中所有卷積核的權重數量,向量\(\left[1,\left(r_{1:(L-1)}'\right)^T\right]\in R^{1\times L}\),其具體形式為\([1,1-r_{1},1-r_{2},\dots,1-r_{L-1}]^T\)。

靈活確定約減因子\(r\)的過程可拆分為兩步:首先,在滿足指定計算開銷的前提下,使用不同的約減因子\(r\)精簡CNN網絡結構,例如\(r\in[0.1,0.6]\),訓練模型並評估模型性能,從結果中挑選出性能最優模型所對應的約減因子\(r_{fix}\)。

隨後,將模型劃分為前、中、後三個部分,並針對模型的不同部分各自調整\(r_{fix}\),\(r_{fix}\)的調整需確保模型整體的計算開銷保持不變,評估方式如式(4)所示。通過提高模型某一部分的約減因子並降低其他部分的約減比例,我們可以探究CNN模型中不同部分對模型最終效果的影響。

實驗表明,在模型計算開銷保持不變的前提下,步驟二相較於步驟一能夠帶來進一步的性能提升。

梯度優化算法

此外,作者還提出了一種梯度優化算法,基於神經網絡構建了一個回歸模型,學習約減因子\(r\)與CNN網絡性能\(P\)之間的關係。對於初始值\(r^0\),回歸模型計算使用\(r^0\)精簡CNN結構後的模型性能,並以此計算模型殘差與梯度,以一定的步長\(\alpha\)更新\(r^0\),得到\(r^1\),反複迭代這一過程,最終即可獲得符合性能要求的最優約減因子\(r_{optimized}\)。此時,\(r_{optimized}\)能夠確保CNN在保持一定性能的前提下,盡可能多地精簡其網絡結構中冗餘的卷積核,提高運行效率。

梯度優化算法的工作流程如下圖所示。

f257d82f9bc231cbcb67a246d89c37b728e8e1fc

其中,\(r^i\)表示第\(i\)次迭代時約減因子的取值,\(P\)表示需滿足的性能指標,\(R(r^i)\)表示約減因子\(r^i\)對應的CNN網絡性能,約減因子\(r\)根據式(5)更新:

$$
r^{i+1}=r^i-\alpha\frac{\partial D(R(r^i),P)}{\partial r^i}\tag{5}
$$

實驗結果

在實驗環節,作者將文獻《Accurate image super-resolution using very deep convolutional networks》中使用的殘差卷積網絡作為測試網絡,並以卷積網絡輸出在峰值信噪比(Peak Signal to Noise Ratio, PSNR)上的損耗作為模型性能的評估標準。測試數據集使用SR Set5\(\times\)2與Set14\(\times\)2兩種數據集。測試網絡結構如下圖所示。

7bcc56dc7008d362777137bae2a696b3e7b18c1f

表1展示了逐層優化算法在所有卷積層使用相同約減因子情況下的實驗結果,可以發現當\(r\)取值為0.25時,CNN輸出結果的PSNR損耗最低,僅為0.24/0.27,此時CNN網絡僅保留了完整結構中56.3%的參數。

31ec4b50768421091fdf7a51b5d7440831c86a37

將測試網絡以6、7、7層的方式劃分為前、中、後三個部分,逐部分地調整對應的約減因子,實驗結果如表2所示。可以看出,在CNN模型剩餘參數數量幾乎相同的情況下,若將當前6層卷積層對應的約減因子\(r_{front}\)調整為0.44,CNN模型的性能能夠進一步提升,PSNR損耗從0.24降至0.20。此時,模型三部分的約減比例分別為0.44、0.06、0.25,這也表明在測試網絡中,前幾層卷積層相對比較冗餘,模型後半部分的卷積層在預測過程中發揮著更加關鍵的作用。

3fd033d4c06dbefcbcd173c9429d5783664ab7ac

將PSNR損耗限製在0.25,梯度優化算法的優化過程與結果如表3所示。

a415a61e552be87a80ee69939a7d8653b9e38f7a

本文由北郵@愛可可-愛生活老師推薦,阿裏雲雲棲社區組織翻譯。

文章原標題《A Kernel Redundancy Removing Policy for Convolutional Neural Network》,作者:Chih-Ting Liu,Yi-Heng Wu,Yu-Sheng Lin與Shao-Yi Chien,譯者:6816816151,審閱:

文章為簡譯,更為詳細的內容,請查看原文,附件為原文pdf

最後更新:2017-06-06 07:31:39

  上一篇:go  在手機上輕鬆安裝 Ubuntu Touch OS
  下一篇:go  還在用Hadoop麼?Hadoop服務器造成5PB數據泄露,中國、美國受波及最大!