1. 程式人生 > >Compressing Convolutional Neural Networks in the Frequency Domain 論文筆記

Compressing Convolutional Neural Networks in the Frequency Domain 論文筆記

摘要

卷積神經網路(CNN)越來越多地用於計算機視覺的許多領域。它們特別有吸引力,因為它們能夠通過數百萬個引數“吸收”大量標記資料。然而,隨著模型尺寸的增加,分類器的儲存和儲存器需求也在增加,這阻礙了許多應用,例如行動電話和其他裝置上的影象和語音識別。在本文中,我們提出了一種新穎的網路架構,頻率敏感雜湊網(FreshNets),它利用了卷積層和深度學習模型的完全連線層的固有冗餘,從而大大節省了記憶體和儲存消耗。基於關鍵觀察,學習的卷積濾波器的權重通常是平滑和低頻的,我們首先使用離散餘弦變換(DCT)將濾波器權重轉換到頻域,並使用低成本雜湊函式隨機分組頻率引數進入雜湊桶。分配給相同雜湊桶的所有引數共享使用標準反向傳播學習的單個值。為了進一步減小模型大小,我們將更少的雜湊桶分配給高頻元件,這些元件通常不太重要。我們對八個資料集評估FreshNets,並表明它比幾個相關基線帶來更好的壓縮效能。

背景介紹

  • 特徵雜湊

  特徵雜湊(a.k.a雜湊技巧)之前已被研究作為減少模型儲存大小的技術。 通常,它可以被視為降維方法。

  如[60]所示,特徵雜湊的一個關鍵屬性是它保留內積操作,其中在雜湊之後的內積產生正確的預先雜湊內積:公式見論文

  由於偏差校正符號因子ξ(i),該屬性成立。 通過特徵雜湊,可以在更小的空間Rk中直接學習模型,這不僅可以加速訓練和評估,還可以顯著節省記憶體。 例如,原始空間中的線性分類器可以佔用模型引數的O(d)儲存器,但是當在雜湊空間中學習時僅需要O(k)引數。 對於稀疏特徵向量,由雜湊衝突引起的資訊丟失嚴重得多,並且可以通過多個雜湊[49]或更大的散列表[60]來抵消。

  • 離散餘弦變換

  建立在DCT上的方法[1,42]被廣泛用於壓縮影象和電影,包括形成JPEG的標準技術[41,59]。 DCT表示作為不同相位/頻率的正弦曲線的加權組合的函式,其中每個正弦曲線的權重反映輸入中相應頻率的幅度。 當以足夠的數值精度使用並且沒有量化或其他壓縮操作時,DCT和逆DCT(將頻率輸入投射回空間域)是無損的。

  通過畫素(例如藍天)的區域性平滑度在影象中使壓縮成為可能,其可以通過較少的非零頻率分量在區域上很好地表示。 雖然DCT與離散傅立葉變換(DFT)高度相關,但由於其頻譜壓縮特性,DCT通常更適用於壓縮任務,其中大多數影象的權重往往集中在DCT的一些低頻分量中[42]。 此外,DCT變換產生實值表示,不同於其表示具有虛部的DFT。 給定輸入矩陣V,DCT後頻域中對應的矩陣定義為:公式見論文

FreshNets

  這裡我們介紹FreshNets,一種使用權重共享的方法減少卷積神經網路的模型大小(和記憶體需求)。 類似於陳等人的工作。我們通過隨機強制整個網路中的權重共享相同的值來實現更小的模型。 與以前的工作不同,我們在頻域中實現卷積濾波器的權重共享和梯度更新。 這些共享約束是在訓練之前進行的,我們在共享任務下學習頻率權重。 由於分配是使用雜湊函式進行的,因此不會產生額外的儲存空間。

  我們首先在DCT之後匯出等效濾波器表示,並描述在使用雜湊技巧實現的頻率空間中的有效隨機權重共享方案。 接下來,我們將展示如何使用標準反向傳播來學習頻域中的引數。 最後,我們描述了一種通過為低頻分量分配更多共享權重來利用濾波器平滑度的方案。

  • 時域和頻域的濾波器

  令矩陣V表示將第k個輸入平面連線到第i個輸出平面的dXd卷積濾波器的權重矩陣。 (為了符號方便,我們假設方形濾波器並且只考慮網路單層中的濾波器。)卷積層中所有濾波器的權重可以用4維張量表示,其中m和n是輸入平面和輸出平面的數量,分別導致總共mXnXd^2個引數。 卷積濾波器可以在空間或頻域中等效地表示,通過DCT及其逆在其兩者之間進行對映。 我們將頻域中的濾波器表示為(公式見論文)

  • Hashing隨機權重共享

  在經由DCT的無損轉換之後,頻域中的濾波器保持與空間域中的等效濾波器相同的大小。 我們建議使用權重共享來減少頻域中的引數數量。 對於頻率表示中的濾波器,我們希望將模型引數的數量精確地減少到儲存在權重向量w中的K個值,其中K«mXnXd^2。 為了實現這一點,我們隨機地將值從w分配給V中的每個濾波器頻率權重。這種隨機權重共享的實現將為V引入輔助矩陣以跟蹤權重分配,使用顯著的額外儲存器。 為了解決這個問題,陳等人。 [6]提倡使用雜湊技巧(偽)隨機分配共享引數。 使用雜湊技巧,我們將每個過濾器權重V繫結到由雜湊函式h()的輸出索引的w元素:公式見論文

  隨著Eq(5)中的對映。 我們可以實現共享引數分配而無需額外的儲存成本。 有關示意圖,請參見圖1.該圖還包含本節後面討論的頻率敏感雜湊方案。 注意,卷積層中的所有濾波器共享w中的相同K個權重。 這樣,我們將包含mnd^2個引數的整個V壓縮成K維權向量w。 換句話說,新增更多卷積濾波器不會改變模型大小,因為所有濾波器值都是從現有濾波器中“回收”的。 我們可以通過調整K來任意控制每層中有效引數的數量。

  • 共享頻率權重的梯度

  典型的卷積神經網路學習空間域中的濾波器。 由於我們的共享權重儲存在頻域中,因此我們根據頻率空間中的濾波器引數推匯出梯度。 以下等式 (2),我們表示空間域中引數的梯度與頻域中的對應的梯度:(公式見論文)

  與Eq(1)相比 ,我們看到頻域中的梯度僅僅是空間域中梯度的DCT(論文見公式)

  簡而言之,在頻域中學習濾波器引數V有一個簡單的過程。 在前饋階段,我們用逆DCT變換V重建空間域權重。 在反向傳播期間,在計算空間域中的傳統梯度之後,我們使用DCT來計算頻域中的梯度。 使用現成的DCT軟體可以有效地實現這些步驟。

  注意,V是虛擬引數,我們仍然需要計算實權重向量上的梯度。 我們通過簡單地對分配權重的每個濾波器引數的梯度求和來計算梯度

  • 頻率敏感雜湊

  圖2顯示了空間(左)和頻率(右)域中的濾波器。 在空間域中,由於自然影象中的區域性畫素平滑性,CNN濾波器是平滑的[30]。 在頻域中,這對應於在低頻中具有大幅度的分量,如圖2中的V的左上半部分所示,具有小的座標(j1; j2)。 相應地,具有大的座標(j1; j2)的V的右下半部分中的高頻具有接近零的幅度。

  如前所述,空間域V中的濾波器通常是“平滑的”,並且在頻域中,大多數權重強度在低頻區域中。 低頻區域對應於具有小索引(j1; j2)的條目,並且低頻條目通常具有比較高頻率值(具有較大索引(j1; j2)的條目)大得多的規範後的值。

  由於不同頻率區域的分量往往具有不同的幅度(從而對濾波器的空間結構的重要性不同),我們希望避免高頻和低頻分量之間的衝突。 因此,我們將不同的雜湊空間分配給不同的頻率區域。 如圖3所示,每個頻率區域擁有一個單獨的雜湊空間。 特別地,我們將w的K個值分成子向量(公式見論文)

  該分割槽允許具有相同頻率的引數(對應於它們的索引和j = j1 + j2)被雜湊到相應的專用雜湊空間wj中,如圖4所示。我們重寫Eq(5),使用新的頻率敏感共享權重分配:(公式見論文)

  對於頻率敏感的雜湊,相對於實際權重的梯度與等式(10)中的梯度相同,除了雜湊函式h被替換為新的雜湊函式g,公式見論文

  其中j = j1 + j2是頻率區域的索引,並且Aj 是第一個j雜湊空間的大小的累積和。 新的雜湊函式允許每個雜湊空間彼此獨立。 雖然似乎有2d-1個雜湊函式,但所有hj都可以通過單個雜湊函式實現,它接受5個輸入引數,最後一個引數為j,公式見論文

  我們為每個頻率區域j定義壓縮率rj並且分配Kj = rjNj,其中Nj是第j個頻率區域中的虛擬引數的數量。較小的rj在雜湊期間引起更多的衝突,導致增加的權重分配 由於較低頻率分量往往具有較高的重要性,使得碰撞更加有害,我們通常會將較大的rj(較少的碰撞)分配給低頻區域。直觀地,給定整個卷積層的大小預算,我們想要擠壓雜湊高頻區域的空間,以節省低頻區域的空間。這些壓縮率可以手動分配或通過交叉驗證以程式設計方式確定,如第6節所示。

 概述

簡而言之,我們總結了FreshNets的訓練流程

初始化階段:

給定濾波器大小d和引數K的總預算,確定每個頻率區域Kj的預算

隨機初始化權重向量w,其由2d-1個子向量wj組成

前饋階段:

根據方程(11)構造V。

使用逆DCT將V轉換為其空間域v
使用v對輸入執行卷積,並生成輸出。

反向傳播階段:

計算梯度w.r.t. 在空間域中對卷積濾波器v使用正常反向傳播

根據(8)對上步使用DCT

根據方程(12)對實際權重向量w使用任何梯度下降方法更新,例如具有動量的SGD [53],Adagrad [16]和RMSprop [56]。

通過修改反向傳播的計算過程,可以在現有CNN包中實現所有上述訓練操作。