Learning Structured Sparsity in Deep Neural Networks

論文鏈接:https://arxiv.org/pdf/1608.03665.pdf
代碼鏈接:https://github.com/wenwei202/caffe/tree/scnn

摘要

計算資源的高需求嚴重阻礙了大規模深度神經網絡在資源受限設備上的部署。在這篇工作中,我們提出了一種結構稀疏化學習方法(SSL method)來規範DNNs的結構(filters,channels,filter shapes,layer depth等)。SSL可以:

  1. 從一個大的卷積神經網絡中學習出一個緊湊的結構來減少計算成本;
  2. 獲得硬件友好的結構稀疏化DNN來高效加速DNN的評估,實驗結果展示了在CPU和GPU現有庫上,使用SSL可以使得AlexNet的卷積層計算速度加速 5.1 和 3.1 倍,這幾乎達到了非結構稀疏化速度的二倍;
  3. 規範化DNN的結構可以提高分類準確率,結果顯示了對於CIFAR-10,在層深度上的規範化可以將ResNet的深度減少20層到18層,同時準確率從91.25%到92.60%,這相對於32層的原始ResNet還高了一點。

1. 介紹

DNN,尤其是CNN,已經通過從大量數據中的大規模學習在計算機視覺領域取得了巨大的成功,但是這樣的大模型部署是有問題的。爲了減少計算成本,許多研究方法被用來壓縮DNN的大小,包括稀疏正則化、連接剪枝和低秩近似稀疏正則化和連接剪枝通常會得到一個非結構化的隨機連接關係,因此不規則的內存訪問不利於硬件加速,Figure 1展示了通過L1正則化對AlexNet每一層的非結構稀疏化。與原始模型相比,稀疏化模型的準確率損失被控制在2%以內,由於稀疏權重分佈的不規則,獲得的加速效果是十分有限的,即使實際的稀疏程度很高(達到95%)。在最近提出的低秩近似方法中,DNN先被訓練,然後將訓練得到的權重張量分解爲一系列小因子的乘積,最後再通過微調來恢復準確率。低秩近似能夠獲得加速,是因爲它減少了參數量和計算量的同時效果和大的密集張量一樣,有效避免了非結構稀疏化的侷限性問題,然而低秩近似方法僅在層內獲得緊湊的結構,在微調期間層間的結構是固定的,這使得需要多次反複分解和微調來獲得最佳的權重近似。
在這裏插入圖片描述

受到以下事實啓發:

  1. 在卷積核和通道上存在冗餘;
  2. 卷積核的形狀通常被固定爲長方形,但是任意形狀可能會消除這種固定帶來的不必要的計算;
  3. 網絡的深度對分類準確率至關重要,但是不總是越深的模型準確率就一定越高,這裏面牽扯到了梯度爆炸和退化問題;

我們提出了SSL方法在訓練期間通過group Lasso 正則化直接學習一個緊湊的結構,SSL是一個通用的正則化方法自適應多種DNN結構,包括filters、channels、filter shape的結構和網絡的深度。SSL將結構正則化和本地優化(內存訪問、高效計算)集合,不僅提供了提高準確率的規範化大模型,而且加速了計算。

2. 相關工作

連接剪枝和權重稀疏:韓鬆通過使用連接剪枝將AlexNet的參數量減少了9倍、VGG-16的參數量減少了13倍,因爲參數量的減少主要是在全連接層,作者獲得了 3-4倍的加速。然而,由於Figure 1中存在的問題,卷積層幾乎沒有大的加速,然而卷積纔是CNN網絡的計算瓶頸,所以在卷積層的壓縮和加速變得至關重要,Liu等人在AlexNet卷積層實現了 >90%的稀疏度,同時準確率損失控制在2%以內,並且通過對稀疏權重硬件編碼到程序中在CPU上獲得了4.59倍的加速。這本文的工作中,我們也是聚焦於卷積層,與上面的方法相比,我們的SSL方法協調在相鄰內存空間中的稀疏權重,在同樣的準確率下獲得了更高的加速。當然了硬件和程序優化可以進一步提高系統性能,但這並不在我們的討論範圍內。

低秩近似:低秩近似(Low rank approximation)的優點和問題上面已經做過描述,同時低秩近似還存在另一個問題,就是LRA的超參數量伴隨深度線性增加,搜索空間線性增加甚至多項式式增加。與LRA相比,我們的貢獻在於:

  1. SSL可以動態優化DNN的緊湊結構,只需要一個超參數,沒有反覆;
  2. 除了層內冗餘,SSL可以減少層的深度;
  3. 通過SSL正則化後的DNN卷積核也可以使用低秩近似,所以它可以同LRA一起來獲得更加高效的壓縮模型;

模型結構學習:group Lasso對於學習稀疏結構是一種高效的正則化技術,Kim等人將group Lasso用到多任務迴歸中規範關聯樹的結構,較少了預測的錯誤;Liu等人使用group Lasso來約束LRA結構的尺度;爲了使DNN適應不同的數據庫,Feng等人在DNN中學習卷積核的數量。不同於之前的工作,我們將group Lasso應用於規範DNN的多種結構(filters、channels、filter shapes、layer depth)。

3. 結構稀疏化學習方法

我們主要關注卷積層上的結構化稀疏學習(SSL)來規範化DNN的結構。 我們首先在3.1節中提出了一種通用方法來規範DNN的結構;然後在3.2節中指定對卷積核、通道、卷積核形狀、和深度的方法;在3.3節從計算效率的觀點討論了公式的變體。

3.1 對通用結構提出了結構稀疏化學習

假定在DNN中卷積層的權重形成了一個四維張量WlRNl×Cl×Ml×KlW^{^{l}}\in R^{N_{l}\times C_{l}\times M_{l}\times K_{l}},其中NlN_{l}ClC_{l}MlM_{l}KlK_{l}分別是第l層的權重張量的維度,具體含義爲卷積核個數、通道數、高和寬。那麼一個DNN做結構稀疏化規範時,通用的目標公式爲:
在這裏插入圖片描述

3.2 對於卷積核、通道、卷積核形狀和深度結構做結構稀疏化學習

在SSL中,學習的“結構化”是由將劃分W(g)W^{^{(g)}}的方式決定,我們調查了在Figure 2中的filter-wise、channel-wise、shape-wise、depth-wise結構稀疏化。爲了簡單起見,等式(1)中的R(W)在下面的公式中先省略。
在這裏插入圖片描述
懲罰不重要的卷積核和通道:假定Wnl,:,:,:(l)W_{n_{l},:,:,:}^{(l)}是第l個卷積層的第nln_{l}個卷積核,W:,cl,:,:(l)W_{:,c_{l},:,:}^{(l)}是第l層所有卷積核的第clc_{l}個通道的集合。學習filter-wise和channel-wise結構化稀疏的優化目標爲:
在這裏插入圖片描述學習任意形狀的卷積核:正如Figure 2中展示的,W:,cl,ml,kl(l)W_{:,c_{l},m_{l},k_{l}}^{(l)}是第l層所有卷積核中第clc_{l}通道的(mlm_{l},klk_{l})位置上權重的集合構成的向量。
在這裏插入圖片描述正則化層深:我們也探索了depth-wise稀疏化來規範DNNs的深度提高準確率和減少計算成本,對於移除掉的層,我們將會通過shortcut短接其相鄰層,使得前向傳播可以正常進行。
在這裏插入圖片描述

3.3 對於計算高效結構的結構稀疏化學習

在3.2節提出的所有方案都可以學習到一個緊湊的DNN結構來減少計算成本,而且,這些方案中公式的一些變種也可以學習到高效計算的結構。

2D-filter-wise sparsity for convolution:在DNN中3D卷積核是由2D的kernels組成,爲了高效地做卷積,我們探索了filter-wise稀疏化的細粒度的變種,稱之爲2D-filter-wise稀疏化,空間上將group Lasso用在2D的filter Wnl,cl,:,:(l)W_{n_{l},c_{l},:,:}^{(l)}上。節省的卷積核移除的2D filters成比例。filter-wise稀疏化的細粒度版本可以更高效的減少與計算有關的卷積:因爲組的大小更小,因此權重更新梯度成型,它幫助group Lasso快速獲得“0”組的高比例。

將filter-wise核shpe-wise稀疏化結合做GEMM:在DNN中的卷積計算通常被轉換爲矩陣然後做GEMM。比如,在Caffe中,一個3D的卷積核Wnl,:,:,:(l)W_{n_{l},:,:,:}^{(l)}被reshape爲一個矩陣,其每一列爲與shape-wise稀疏相關的權重W:,cl,ml,kl(l)W_{:,c_{l},m_{l},k_{l}}^{(l)}的集合。將filter-wise和shape-wise稀疏化集合可以直接減少GEMM中權重矩陣的維度(通過移除全零列和行)。
在這裏插入圖片描述

4. 實驗

4.1 LeNet and multilayer perceptron on MNIST

LeNet:當將SSL應用到LeNet時,我們使用上面的(2)式來懲罰卷積層中不重要的filters和channels。table 1總結了剩下的filters和channels、FLOP和加速。在表中,LeNet 1是基線,其他的都是將SSL以不同強度應用到LeNet中得到的結果。
在這裏插入圖片描述
爲了展示SSL對卷積核結構的影響,我們展示了Figure 3中學習的所有conv1層的卷積核,可以看出來LeNet 2中除了5個stroke模式下的重要的檢測器剩下的都歸零了,但這足以提取特徵。LeNet 3進一步去除了最弱和最冗餘的stroke模式的檢測器,但相比與LeNet 2精度只掉了0.2%。與LeNet 1中隨機且模糊的卷積核模式相比,LeNet 2和3中的卷積核通過正則化可以收斂到更平滑和更自然的模式。這也解釋了爲什麼SSL方法在相同的精度下卻只需要更少的卷積核。卷積核的平滑性可以在更深層觀察到。
在這裏插入圖片描述table 2中展示了shape-wise稀疏化的效率,LeNet 1是基準,conv1層卷積核尺寸爲 5x5(size=25),LeNet 5減少了維度尺寸限制到了 2x4(size=7),通道也從20變爲1,這表明conv 1層只有一個通道是必須的,極大地節省了FLOP和計算時間。

MLP:除了卷積層,我們提出的SSL也被擴展到學習全連接層的稀疏結構,我們強制將group Lasso正則化應用到每個神經元的輸入或者輸出連接關係中。一個神經元的輸入連接關係全是零那麼它就退化成了下一層的一個偏置神經元,同樣地,如果一個神經元的的輸出連接關係全爲零,那麼它就退化成了一個可移除的冗餘神經元。Figure 4(a)總結了學習到的結構和不同的MLP網絡的FLOP,結果顯示了SSL不僅可以移除隱藏的神經元,而且可以發現圖像的稀疏,舉個例子,Figure 4(b)展示了在MLP 2中每個輸入神經元的連接關係的數量,40.18%的輸入神經元是0連接的,它們集中在圖像的邊界,這也和我們的直覺相符合:手寫數字經常也在中心位置,靠近邊界的像素點包含很少的決定分類的信息。
在這裏插入圖片描述

4.2 ConvNet and ResNet on CIFAR-10

在這裏插入圖片描述在這裏插入圖片描述

4.3 AlexNet on ImageNet

在這裏插入圖片描述在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章