1. 程式人生 > >IGC(Interleaved Group Convolutions) 【IGC代替卷積,獲得更小、更快、更準的深度學習模型IGCV】

IGC(Interleaved Group Convolutions) 【IGC代替卷積,獲得更小、更快、更準的深度學習模型IGCV】

深度學習被引起關注是在2012年,用神經網路訓練的一個分類模型在ImagNet上取得了第一名,而且其分類精度比第二名高出10多個點,當時所使用的模型為AlexNet,現在看來其為一個比較簡單的網路,而且只有比較淺的八層網路,但是在當時來講已經很了不起了。這也就引發了後面對神經網路研究的兩個方向,以提高網路的分類精度:1.網路變得更深更寬(Going Deeper);2.減少網路中存在的冗餘性(Eliminate the Redundancy)。

研究增加網路的深度(Going Deeper)。比如VGGNet,通過增加更多的卷積層和全連線層,變成了一個19層的網路,隨著網路深度的加深,會發現帶來的訓練上的問題:過擬合、梯度消失、梯度爆炸等問題,使得後面的資訊不能很好的反饋到前面。基於這些問題,出現了一些新的網路模型:

GoogLeNet提出了inception模組,該模組實現:使用1x1的卷積來進行升維度和降維;多尺寸同時卷積後聚合,並且用了中間層的監督資訊,使得資訊可以很快的進行反饋。

相繼出現的還有Highway、ResNet(前後資訊和交融起來)、DenseNet等等。

研究減少網路冗餘(Eliminate the Redundancy)。隨著網路模型的加深和更寬之後,計算量和memory會越來越大,而在實際的應用中,考慮更多的是如何可以應用一個小的model就可以達到好的分類效果,這就要研究如何減少網路中存在的冗餘性。

神經網路中用的最多的操作是卷積,把輸入資訊設定為矩陣向量,卷積操作就相當於矩陣相乘,一種減少冗餘的操作是採用核(kernels)操作,將高維度特徵用低維度資料對映,來完成部分線性不可分問題,同時保持在低維度進行運算,從而提高了效率。例如用二值化,就會把矩陣的相乘變成矩陣相加減的運算,或者將其變成整型,通過一些量化的方式將一些相互接近的值採用同一個值來表示。另外一種就是把矩陣行或列減少,減少輸入的channel。還有一種是把這個channel變成一個稀疏的(sparse

)的矩陣,那麼計算量和memory就會隨之減少,其中現在很火IGC(Interleaved Group Convolutions)就是採用 structured sparse的結構。

對於一個傳統的卷積,假設input channel是六個, 然後output channel是六個,假若卷積為5x5,那麼complexity為6x5x5x6,group convolution會將其分為兩組,對每一組分別做卷積,那麼每一組的complexity為3x5x5x3,總的complexity為2x(3x5x5x3),這樣計算量和memory就減少了,但是帶來的問題是兩組之間沒有特徵相融,所以需要考慮將特徵融合加入進去,提出了第二個IGC,也就是IGCV1

,希望第一個group convolution不同組的channel可以在第二個group convolution裡融合在一組,這樣對於每一個output channel與所有的input channel都是相連的。如果將一個傳統的卷積替換為IGC的話,就可以獲得相當於原來1/2的memory和計算量的更高精度結果。同時比較了ImageNet上的一個實驗,用的18層的ResNets網路,將其卷積變成IGC,獲得了在memory更少和計算量更少的情況下,訓練誤差和驗證誤差都得到了降低。

另外一個相關的工作是Xception,用一個1x1的卷積,再接一個channel 3x3的卷積,這是一個特例的IGC,把第一個group convolution的組數等於channel數,第二個group convolution的group數等於1。實驗比較之後,發現不是在極端的第二個group convolution的group數等於1的情況分類精度最高,而是在第二個group convolution的group數等於2的時候分類精度最高,不過第二個group convolution的計算量還是比較大,所以又進一步的將其中的卷積用IGC來替換,也就是IGCV2,同樣的中間網路中的所有output channel與所有的input channel都是相連的。

IGCV2實際上是由一連串的group convolution組成的,在設計的時候需要滿足兩點:1.矩陣的形式不變,核(kernel)操作矩陣依然是一個稠密(dense)矩陣;2.前後group convolution互補,也就是在前面group convolution裡不同組的channel,在後面的group convolution要在同一個組裡面,這樣最終得到的卷積矩陣也會是一個dense的矩陣。

通過實驗比較,在同樣的引數量的情況下,通過變換不同的引數,實驗表明的滿足前後group convolution互補的情況下,最終的結果是最好的。

在模型寬度一樣的情況下,如何去選擇各種引數,使得模型的引數量最少,也就是Balance condition。當Balance condition滿足的時候,可以通過公式計算出引數量。

經過比較,IGCV2能夠比IGCV1有更好的提高效能。而且實驗表明,IGCV2在小model的情況,對效能的提升是很明顯的。

將傳統的卷積通過group convolution,提出了IGC的單元,把傳統的卷積替換為IGC,可以獲得一個更小、更快、更準的model。

資訊來自:CVPR 2018 中國論文分享會

報告人:張婷  微軟研究院

下面是張婷研究員的報告PPT節選











2. 減少冗餘