網絡壓縮系列1:低秩逼近


 

一、前言

近年來,深度學習因為在圖像,語音等領域得到了很好的實踐效果,而被廣泛使用。隨着深度學習的發展,深度模型越來越大,越來越復雜。伴隨而生研究方向是:網絡壓縮。

網絡壓縮是指,在不損失網絡精度的同時,減少網絡的測試時間或者是網絡參數的存儲空間。本文主要介紹一種通過低秩逼近的方法對網絡進行壓縮,提高網絡前向傳播效率。

 

二、低秩表示

如果把矩陣看成是一個個行或者列向量,秩就是行或者列向量極大無關組中所含向量的個數。

簡單來說:Z的樣本空間與數據集D的樣本空間是等價的。基於低秩表示的假設,在圖像去燥等領域取得了不錯的效果。本文主要說它在網絡壓縮里的應用。

 

三、CNN與網絡壓縮

本文介紹的網絡壓縮方法只適用於卷積層和全連接層。在介紹網絡壓縮之前,我們首先對CNN網絡有一個大概的了解。

CNN基本包括以下一些Layer:conv /bn / action /pool /fc 等。其中pool/action 層正常是沒有參數的;因此,我們所說的關於CNN網絡的壓縮主要是指針對conv 和 fc而言。

網絡壓縮的目的是:1 提高運行時間效率;2 降低模型空間存儲大小;

對於CNN網絡來說:1 網絡參數的90%來源於全連接層;2 網絡運行時間的90%來源於卷積層;3 卷積層的時間大部分都消耗在前面幾層(

Exploiting Linear Structure Within Convolutional Networks for Efficient Evaluation   2014年)。
關於卷積的參數量和運算時間可參考如下圖所示:

 

 四、低秩逼近的網絡壓縮

卷積層為例:

卷積W可以看成是f個w(k*k*c)的卷積作用於輸入的featuremap上。

假設這f個卷積滿足低秩表示的約束,我們可以找到M個(M<f)w(kkc)的卷積,通過線性組合,得到近似等價的輸出。

接下來:我們看看運算量的變化:

原始卷積計算量:O(KKFWH)

新卷積計算量:O((KKM+MF)WH)

如果使得新卷積的計算量小於原始卷積的計算量,則需要滿足:

 

五、低秩逼近網絡壓縮的具體解決方案

 

 上面這一頁PPT給出了常用的兩種方法,總的來說都是講一層卷積拆分成兩層卷積。第一類方式是嚴格按照低秩逼近的意義,先得到M個低秩的featuremap 然后對着M個featuremap進行1*1的卷積操作,從而得到與原卷積非常近似的輸出。第二類方法是從目標出發,中間產生多少的featurenmap並不是重點,重點是如何盡量確保進過兩次卷積輸出的featurenmap的值與原卷積輸出的值近似相等。

模型優化:第一類優化

 

 優化的目標是已知W,計算A和S,具體如下,利用交替迭代的方法解算A和S:

模型優化:第二類優化

第二類優化的目的是將W拆分為兩個矩陣的乘積,具體計算同樣可以利用方法1中迭代優化的算法。但是,已有的矩陣分解已經提供了這種方法的一種算法近似解,如SVD分解,如上圖。

關於代碼實現,非常簡單:簡單截圖如下:

 

總結:低秩逼近的方法用於全連接層效果較好,但是對運行時間提升空間不是很大。一般能達到1.5倍。將低秩逼近的壓縮算法用於卷積層時,會出現誤差累積的效果,對最后精度損失影像較大,需要對網絡進行逐層的微調,費時費力。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM