• 沒有找到結果。

第二章 技術背景與相關研究

2.3 模型壓縮

立 政 治 大 學

N a

tio na

l C h engchi U ni ve rs it y

2-7 多層卷積特徵擷取:人臉辨識範例

2.3 模型壓縮

對於 CNN 來說,若想要有更佳的辨識效果,最常見的方法就是增加網路的層數,然而

這也將產生參數儲存的成本,對於辨識模組而言,結果則是造成計算量上升與辨識時間的 拉長。因此想要把CNN 導入到如手機、平板這類的行動裝置,或是 Jetson TX 系列[15]、

Raspberry Pi[16]這類的嵌入式平台,在記憶體空間、運算資源皆不如桌機或伺服器的限制 下,壓縮模型是其中一種可能的解決方案。

‧ 國

立 政 治 大 學

N a

tio na

l C h engchi U ni ve rs it y

2.3.1 Deep Compression

2015 年 Song Han 等人提出的 Learning both Weights and Connections for Efficient Neural Networks[17]即透過剪枝,刪掉網路中較不重要的連接,來減少網路所需要的參數量,減少 記憶體和運算資源的消耗,使網路更加適合在行動裝置或嵌入式平台運行。如圖 2-8 左方 所示,剪枝可以分為三個步驟:

(1) 正常的訓練模型,得到壓縮之前的預訓練模型(Pre-trained model) (2) 將所有低於一定門檻值的權值設為 0

(3) 重新訓練(Retrain)經過剪枝之後的網路

並不斷重複步驟2 與 3 直到整個網路的權值都大於門檻值為止,經過剪枝前後的網路如圖 2-8 右方所示。

2-8 剪枝流程圖(左)與剪枝前後的網路對比(右)[17]

如圖2-9 所示,在 ImageNet 資料集上,其壓縮方法將 AlexNet 的參數量減少為原本的 1/9,從 6100 萬減少至 670 萬,而將 VGG-16 的參數量減少為原本的 1/13,從 1 億 3800 萬 減少至1030 萬,且維持原有的辨識準確率。

‧ 國

立 政 治 大 學

N a

tio na

l C h engchi U ni ve rs it y

2-9 [17]壓縮結果

(LeNet 系列網路於 MNIST 資料集以及 AlexNet、VGG-16 於 ImageNet 資料集)

Song Han 等人在 2016 年提出了更加有效的壓縮深度學習模型的方法 Deep Compression,

Deep Compression 為[17]的延伸並將整個壓縮流程分為三個階段,如圖 2-9 所示,在對模型 做剪枝之後,接著透過權值量化(Quantization)來共享一些權值,最後再以霍夫曼編碼 (Huffman coding)做更進一步的壓縮,如圖 2-10 所示,在不失辨識準確率的情況下,有效的 將VGG-16 與 AlexNet 分別從 552MB 與 240MB 壓縮到 11.3MB 與 6.9MB。

2-10 Deep Compression 三階段壓縮流程[1]

‧ 國

立 政 治 大 學

N a

tio na

l C h engchi U ni ve rs it y

2-11 Deep Compression 壓縮結果[1]

(LeNet 系列網路於 MNIST 資料集以及 AlexNet、VGG-16 於 ImageNet 資料集)

雖然 Deep Compression 對 CNN 模型的參數量做了極致的壓縮,但對於辨識速度的問

題,並沒有得到與壓縮比相應的提升,這是由於在 AlexNet 與 VGG-16 中,最後三層的全 連接層(Fully connected layers)佔據了絕大部分的參數量,但所佔的 FLOP 卻相當少,因此要 提升模型的辨識速度,還是必須從卷積層的部分著手。另一個問題是網路在經過第一階段 的剪枝後,有很多小於門檻值的權值被設為0,因此整個網路就變成所謂的稀疏網路(Sparse network) , 針 對 此 稀 疏 連 接 (Sparse connections) 的 網 路 結 構 , 原 論 文 中 表 示 可 以 使 用 CSR(Compressed sparse row)或 CSC(Compressed sparse column)格式來儲存模型以減低檔案 大小,但其缺點是目前的GPU 並不支援執行以 CSR 或 CSC 格式儲存的模型檔案,也就是 說,以CSR 或 CSC 格式儲存的模型並不能透過 GPU 來加速其運行。

2.3.2 Pruning Filters for Efficient ConvNets

Hao Li 等人在 2017 年提出了此篇論文,其主要目的是為了加速 CNN 模型辨識的速度,

由於卷積層在CNN 中佔據了極大部分的 FLOP,因此他們嘗試對卷積層裡的卷積核以濾波 器為單位進行剪枝,如圖2-11 所示,而此剪枝方式並不會造成稀疏連接的問題,剪枝完成 後再透過重新訓練將辨識準確率回復至原先的水準。

‧ 國

立 政 治 大 學

N a

tio na

l C h engchi U ni ve rs it y

2-12 對濾波器進行剪枝並移除相應的特徵與下一層中對應此特徵的卷積核[2]

在Deep Compression 中,判斷某一權值的重要性是以該權值的絕對值大小來決定,如

果該權值的絕對值小於設定的門檻值,即會被設為0,在此論文中也是以同樣的概念來決定 濾波器的重要性,只是其計算的是整個濾波器裡所有權值的絕對值加總。整個壓縮過程可 以分為4 個步驟,如下描述:

(1) 對於每一個濾波器 Fi,j,計算其權值的絕對值總和sj

(2) 依據絕對值總和 sj做排序

(3) 針對絕對值總和較小的 m 個濾波器進行剪枝,移除與該濾波器相應的特徵圖,並將下 一層對應此特徵圖的卷積核一併刪除

(4) 為第 i 與 i+1 層卷積層創建新的卷積核矩陣(Kernel matrix),並將剪枝後所剩餘的卷積 核權重複製過去

壓縮結果如圖2-12 所示,除了 ResNet-34 是使用 ImageNet 資料集訓練模型之外,其餘

的皆是以CIFAR-10 資料集訓練模型,後面有註明 scratch-train 的代表在對模型做剪枝之後,

將整個模型的權值做初始化後再做訓練。在VGG-16 上,其壓縮方法減少了 64%的參數量 以及 34.2%的 FLOP,辨識速度為原本的 1.52 倍,且不造成辨識錯誤率的增加,甚至還降 低了一些,在ResNet56 上,減少了 13.7%的參數量以及 27.6 的 FLOP,辨識速度為原本的 1.52 倍,而辨識錯誤率相比於原始模型的 6.96%還低了 0.02%。

‧ 國

立 政 治 大 學

N a

tio na

l C h engchi U ni ve rs it y

2-13 [2]壓縮結果(ResNet-34 於 ImageNet 資料集,其他皆於 CIFAR-10 資料集)

2.3.3 Building Efficient ConvNets using Redundant Feature Pruning

由Ayinde 等提出的論文 Building Efficient ConvNets using Redundant Feature Pruning[18],

如同[2]也是對卷積層的濾波器進行剪枝,不過其判定濾波器重要性的依據不再是該濾波器 的權值絕對值加總,而是濾波器權值之間的相似程度。其觀點為在卷積層裡許多的濾波器 當中,有些濾波器的權值是很相似的,因此這些重複、多餘的濾波器可以被刪除,且不會 影響到模型整體的辨識準確率。

論文中表示濾波器之間相似度的計算方式是將濾波器裡的權值轉成一維向量,再兩兩

計算餘弦距離(Cosine distance),得到兩兩濾波器之間的相似度。接著再採用平均連結聚合 演算法(Average-linkage agglomerative algorithm)將濾波器做分群,如圖 2-13 所示,再從各群 中隨機挑選一個濾波器做為代表,僅保留代表性的濾波器,其他濾波器則通通刪除。

2-14 平均連結聚合演算法[18]

‧ 國

立 政 治 大 學

N a

tio na

l C h engchi U ni ve rs it y

2-15 [18]壓縮結果(皆於 CIFAR-10 資料集)

由上面數據可以看到此基於相似度的壓縮方法,可以減少VGG-16 約 78%的參數量以 及40.5%的 FLOP,且相比於原始模型,錯誤率只增加了 0.13%,而在 ResNet-56 上,減少 了23.7%的參數量以及約 28%的 FLOP,錯誤率相比於原始模型的 6.61%增加了 0.27%。

2.3.4 小結

本論文所提出的壓縮演算法與[18]相同也是基於濾波器之間的相似度,為了避免稀疏

網路導致無法以GPU 進行加速運算的問題,因此同樣也是以濾波器為單位來進行剪枝,主 要的差異在於篩選濾波器的方法,不同於[18]對濾波器做分群並從各群中隨機找一個代表,

我們採用了圖論的方式來決定該保留與刪去的濾波器,使用圖論方法做篩選的好處為面對 同一組模型權重,其刪減的結果會是一致的,也就是說我們的壓縮方法,並不包含任何的 隨機性,而在篩選的過程中,除了兩兩濾波器之間的相似度之外,還考慮了各個濾波器的 相似度加總以及在[2]中作為判定濾波器重要性的權值絕對值加總。

本壓縮演算法的核心概念為依據相似度刪去重複、多餘的濾波器,保留各個卷積層中

具代表性的濾波器,在刪減的同時保持著卷積層內濾波器的多樣性,因此將此壓縮方法稱 作多樣性演算法(Diversifying algorithm),在第三章研究方法中將會詳細說明多樣性演算法 是如何在每一卷積層中找到具代表性的濾波器。

3.1 多樣性演算法(Diversifying algorithm)

多樣性演算法的核心概念是CNN 每一卷積層輸出特徵圖都包含了許多通道,每一個通 (Filter similarity score),接著設定一個門檻值,當相似度分數大於門檻值時,即代表這兩個 濾波器是類似的,因此可以將其中一個拿掉,至於兩個濾波器當中該保留哪一個,則是透 過相似度加總(Sum of similarity)與濾波器權值絕對值加總(Sum of weights)為依據來做挑選,

後續會詳細說明相似度分數、相似度加總以及濾波器權值絕對值加總的意義與計算方法。

相關文件