該如何解釋這個理論?


這其實是個好問題,網上有很多誤導人的觀點,讓我們來好好分析一下。

首先,解釋一下什麼是CNN的平移不變性。簡單來說,平移不變性(translation invariant)指的是CNN對於同一張圖及其平移後的版本,都能輸出同樣的結果。這對於圖像分類(image classification)問題來說肯定是最理想的,因為對於一個物體的平移並不應該改變它的類別。而對於其它問題,比如物體檢測(detection)、物體分割(segmentation)來說,這個性質則不應該有,原因是當輸入發生平移時,輸出也應該相應地進行平移。這種性質又稱為平移等價性(translation equivalence)。這兩個概念是比較混淆的,但確實是兩個不同的東西(敲黑板)。

那麼,平移不變性是從哪裡來的呢?一般來說,一個CNN的性質,要麼是從它本身使用的結構得到的,要麼是從它在數據集中學到的參數得到的。前者的簡單例子是加了sigmoid層的網路的輸出範圍自然變成了0到1之間,後者的例子則是CNN在ImageNet上訓練之後就有了能分類圖像的能力且特徵也具有一定的泛化性。

CNN比較常見的層有卷積層、池化層(max或者mean)、全連接層,其中池化層又包括普通池化層和用在全連接層之前的全局池化層(global pooling)。按照市面上最常見的觀點,CNN本身結構中卷積+池化就具有平移不變性。本人並不同意這個觀點,下面具體分析一下。

先來分析單層的情況。

(1) 卷積層:在信號處理中,卷積(以及相關)的性質包含了平移等價性。對於共享權值的卷積層來說,只在平移量為stride的整數倍時平移等價性才嚴格成立。而僅僅在卷積核比較均勻而且輸入也有很多均勻區域的時候纔有比較弱的平移不變性,因為此時微小的移動對於輸出改變比較少。

(2) 池化層:普通池化層中,均值池化等價於固定卷積核的卷積層,因此性質也相同;最大值池化也類似,但取最大值的操作使其相對於均值帶有更強的平移不變性。全局池化層將整個輸入變成1x1大小的輸出,忽略了特徵的位置信息,當前面的輸入具有平移等價性的時候具有比較強的平移不變性。

(3) 全連接層:全連接層這兩個性質都沒有,因為沒有在不同位置共享權值,特徵在不同位置對於輸出的貢獻變化很大。因此,從單層來看,只有全局池化有一定的平移不變性,其它都比較弱甚至沒有。

如果把這些層串起來,那麼在使用全連接層的時候整個CNN的結構一般不具有平移不變性。就算用了全局池化層,由於前面疊加的多層卷積層的累計效應,最後的平移不變性也很弱,只有當位移是整個網路的降採樣倍數的整數倍才存在,概率很低。因此,能用於分類的平移不變性主要來源於參數。因為卷積層的平移等價性,這種平移不變性主要是由最後的全連接層來學習,而對於沒有全連接層的網路更難有這種性質。

參數的學習需要數據,由於數據中平移的分佈一般都比較不均勻,引入平移的數據增強(augmentation)肯定是必要的。那有人會問,為什麼好像沒看到有這個增強方式?其實裁切(crop)就是一種平移的數據增強方式,因為不同裁切方式對應的patch之間的變換就是平移。而且這種方式相比於平移更加自然,沒有周圍的黑邊padding,因此更加常用。

總結起來,就是CNN的平移不變性主要是通過數據學習來的,結構只能帶來非常弱的平移不變性,而學習又依賴於數據增強中的裁切,裁切相當於一種更好的圖像平移。

最後再說點題外話。正是因為池化本身帶有弱的平移不變性,且會損失一些信息,在對平移需要等價性的一些任務裏(比如檢測、分割)會經常用stride為2的卷積層來替代池化層。而在很多分類任務中,為了學習到一些全局特徵,常常會在網路的最後使用全局池化或者金字塔池化的方式來消除平移的影響。

以上是我的一些想法,可能有地方想的不太正確,歡迎大家來討論。

---------------------------------分割線---------------------------------------

11.16日更新:

感謝 @yx愛自由 提供的arxiv上的新文章[1],簡單讀了一下,整體結論和我上面分析類似,這裡把裡面的實驗結果也介紹一下並進行分析。

文章實驗了三種不同的網路VGG16、ResNet50和InceptionResNetV2在不同變換下的不變性 (主要是平移),並進行了一些簡單的分析。下面的圖都來自於文章:

這幅圖是InceptionResNet在不同水平位移下預測的概率變化,可以看出就算只移動一個pixel,最終的輸出變化也很劇烈,完全沒有所謂的平移不變性。

為了更好的定量研究,作者在隨機選取的200張圖上衡量平移不變性:

左圖表示不同圖在不同平移下的概率預測,可以看出在很多圖像上變化都很大。右圖表示不同網路的Jaggedness,值越大表示對變換的不變性越低。從圖中可以看出,這三個網路的不變性越來越差,儘管精度越來越高。作者的分析是因為VGG有更多pooling而另外兩個網路比較少,同時後面兩個網路更深。pooling能增加平移不變性的解釋比較有意思,是通過pooling相當於之前feature的線性差值來說明的,類似於傳統CV做降採樣的時候要先做blur。從這個結果,其實還有一點作者沒有分析到,就是只有VGG有全連接層,而另外兩個網路沒有,這也印證了之前的觀點,即全連接層更能學到平移不變性。

這個是特徵圖的可視化,由於越深的層降採樣倍數越大,因此平移等價性也越來越差,這和我上面的觀點是一致的。下面的定量指標也證明瞭這一點:

同時,作者也分析了ImageNet中特定類別的平移分佈,發現平移確實分佈比較不均勻:

作者也對augmentation進行分析,認為augmentation也很難讓一個網路完全具有平移不變性,因為就算單看平移的話,如果降採樣倍數是n,就必須對於每個樣本有n^2的數量纔可以。再加上旋轉和尺度變化就更不可能了。

最後作者分析了為什麼在沒有不變性的情況下精度仍然很高。他們認為是因為測試集的平移分佈也和訓練集類似,因為拍照的人也有一定的位置bias。作者也測試了在大圖上隨機放一個小塊的原圖的分類效果:

作者發現原圖在大圖中佔得比例越小,效果越差。但個人觀點是這塊由於耦合了平移和尺度變化,其實證明不了是平移影響大還是尺度變化影響大,猜測可能尺度更是決定性因素。

---------------------------------參考文獻---------------------------------------

[1] Azulay A, Weiss Y. Why do deep convolutional networks generalize so poorly to small image transformations?[J]. arXiv preprint arXiv:1805.12177, 2018.


1.不變有兩種理解,有些人將之混淆了:第一種是如果input被平移,output也會隨之被平移,但output取值保持不變。第二種是如果input被平移,output保持不變。

2.不考慮padding的情況下:當stride=1時,卷積操作有完美的第一種理解的平移不變性。當stride&>1時,卷積操作的平移不變性在一定程度會被破壞。只有在平移距離能被stride整除時平移不變性才能被完美保持。在平移距離不能被stride整除時,只能期待新的輸出近似等於平移後的舊的輸出。

3.第2條裏把卷積換成max pooling和mean pooling也成立。

4.另外,當kernel size比較大,stride比較小,或者許多pooling 層疊加在一起時,pooling層開始出現不完美的第二種理解的平移不變性。極端的例子就是global average pooling,也就是kernel size等於輸入大小,也就是每個channel只求一個全局的最大值/均值,此時可以想像輸出對輸入的平移變化不敏感。

5.如果想要從圖片的不同位置提取feature來找一些pattern,比如說做物體檢測,那麼人們很可能希望模型有第一種理解的平移不變性。比如說當一隻貓從圖片的左上角移動到圖片的右下角,希望feature map上也會有個pattern從左上角移動到右下角。

6.當人們不那麼在乎位置信息的時候,可能會希望最終的模型能有第二種理解的平移不變性。比如我只想知道圖片裏的動物到底是貓還是狗,那麼我可能希望模型的輸出對動物的位置不那麼敏感。

7.以上說的兩種平移不變性可以通過一些手段相互轉換。比如我已經說了做pooling可以把第一種轉化成第二種。

8.總而言之,由於stride以及padding的存在,cnn只有不完美的平移不變性。想不明白的話可以動手算一算。Random crop作為一種數據增強的手段是有用的。


效果不大。

就是因為具有平移不變的特性,才會導致用平移後的圖像來訓練沒什麼效果。

過了卷積層進入到全連接層以後,結點求和的結果會和平移前的一樣(或者很相似),只是每個數字的位置可能不一樣。並不能為神經網路提供新的信息。比如全連接層輸出結果平移前是12345000,平移後是00123450。加起來都是15,對最終結果不產生影響。

鏡像對稱比較有用。


瀉藥。反對其他說沒有用的回答,卷積操作有平移不變性,但是CNN平移不變性很弱,大體原因是 Pooling和Stride2的稀疏採樣破壞了平移不變性。詳見我的專欄文章

Xavier CHEN:實驗 | CNN與平移不變性?

zhuanlan.zhihu.com圖標


CNN網路本身的平移不變性 不就是 pooling等下採樣帶來的嘛?再說圖像圖像平移與random_crop有點類似吧


效果不大。然後數據擴充是一系列組合來的。


CNN只有提取局部相關特徵,沒有平移不變性。

所以有效果。


最高贊說的非常詳盡,我分享一下我的理解,跟大家探討一下。

cnn對圖像的平移不變性,是否可以理解為對圖像(高維數據)的降維操作,不受到高維時的位置信息影響。這一點在其他回答中已經很完備。

我想補充的是,數據增強的方法包括但不限於修改尺寸,鏡像對稱,旋轉等等。平移自然也是一種方法。看我們cnn的任務是什麼,越是偏向classification(稀疏性更強?)的任務,越需要訓練集的多樣性,普通的平移不能滿足需求。


推薦閱讀:
相關文章