卷積網絡的平移不變性可能會常常在論文中看到,那這個究竟是什麼呢?看了一些論文的原文和網絡上十幾篇講這個的博文,大概捋清了思路而後寫下這個。不得不說,有的博文講的有那麼點問題。git
【不變性】就是目標發生了變換,可是你依然能夠識別出來。在圖像任務中,咱們但願圖像中的目標即便被平移、被旋轉或者被縮放,模型均可以識別出來圖像的目標。github
因此不變性有下面幾種:面試
在圖像分類任務中,平移不變性就是圖像中的目標無論被移動到哪一個位置,模型給出的標籤應該都是相同的。網絡
【平移不變性對應的有一個概念是平移同變性(translation equivariance),這個是用在圖像的目標檢測中的,若是輸入圖像中的目標進行了平移,那麼最終檢測出來的候選框應該也相應的移動,這就是同時改變。】ui
有的文章說有,有的說沒有,那麼到底有沒有呢?spa
我先說出我我的的觀點,如今的卷積網絡是不具備平移不變性的。不過兩個論點我都會講明白。.net
主要是由兩個緣由,一個是卷積,一個是最大池化。3d
【爲何卷積能夠提供平移不變性】
比方說目標是在圖像的左上角,通過卷積以後,目標的特徵也會在特徵圖的左上角;目標在圖像的左下角,通過相同的卷積核卷積以後,目標的特徵也會在特徵圖的左下角。而後卷積層後面接上一個全鏈接層進行分類,就算目標位置改變了,可是通過相同的卷積核卷積,而後展開變成全鏈接層。因此對於全鏈接層來講,改變的以後特徵的位置。可能以前目標的特徵是做爲全鏈接的第一個神經元的輸入,平移目標位置以後,該特徵就做爲全鏈接的最後一個神經元的輸入。orm
不過這種說法想體現的就是,就算目標位置變了,通過相同卷積核提取的特徵該有的都有,只是位置變了。blog
【我我的以爲這個論證有點問題,特徵的順序對於網絡來講很是重要,打亂了那很大可能會給出錯誤的答案。上述的論點來源於引用[1]的博客】
【爲何池化能夠提供平移不變性】
我以爲這個相比上面的解釋,是有必定的道理的。最大池化層返回感覺野中的最大值,若是最大值被移動了,可是仍然在這個感覺野中,那麼池化層也仍然會輸出相同的最大值。這就有點平移不變的意思了。
在參考連接[2]中,給出了幾個「池化層具備不變性」的例子:
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-RgYXVsMc-1595352073693)(http://helloworld2020.net/wp-content/uploads/2020/07/wp_editor_md_c94b9fb055f201230a5f6ba383f04768.jpg)]
能夠看到,一樣的數字1,原圖中平移了1個像素,可是通過2*2的最大池化層以後,獲得了相同的特徵圖。
此外,最大池化層還能夠根據相似的原理,獲得尺度不變性和旋轉不變性:
【池化層引入了平移不變性我以爲是比較靠譜的,這也是池化層的重要做用之一:爲CNN引入不變性。可是怎麼說呢?雖然目前聽起來頗有道理,在面試的時候被問起來池化層做用的時候我以爲回答上不變性也是不錯的,可是下文就會講解,池化層實際上並無引入不變性。好像是2019年的一個論文強調了池化層並無不變性】
如今卷積網路的圖像輸入,改變一個像素就可能會得出不一樣的結構,因此很容易遭到對抗攻擊。下面有一個形象的例子:
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-mZuTor9L-1595352073705)(http://helloworld2020.net/wp-content/uploads/2020/07/ezgif-6-e30035fc1a35.gif)]
能夠看出來,當平移小鳥的位置的時候,預測結果是有很大的波動的。
池化層並無平移不變性。下面是參考連接[3]給出的一個簡單的例子,這是一個一維卷積的例子,二維圖像相似:
上圖是一個沒有平移的原始一位數據作了一個1*2的最大池化;
若是對一位數據作了一個平移,那麼獲得的池化結果就徹底不一樣!這也就是爲何下采樣(平均池化層,最大池化層等)沒有平移不變性。
說了這麼多平移不變性,那麼平移不變性的具體的嚴格的定義究竟是什麼呢?
定義幾個數學符號。原始的輸入數據爲\(X\),通過下采樣層變成\(D(X)\),而後再通過上採樣獲得\(U(D(X))\).(D是Down下采樣,U是Up上採樣)
【平移不變性】
若是平移以後的輸入圖像的下采樣的上採樣與原始輸入圖像的下采樣的上採樣相同,那麼就是平移不變性。(中文說的太繞嘴了,數學公式清晰)
\(U(D(X))=U(D(X_{shift}))\)
舉個例子:
這個就是\(U(D(X))\),
這個就是\(U(D(X_{shift}))\),能夠發現二者並不相等,因此並無平移不變性。
如今使用的全局平均池化層,就是能夠實現平移不變性。依然是用上面的例子:
能夠發現,其實無論平移多少,反正獲得的數值都是同樣的,全局平均池化消除了位置的影響,因此實現了平移不變性。
參考連接:
[1]https://zhangting2020.github.io/2018/05/30/Transform-Invariance/
[2]https://www.zhihu.com/question/36686900
[3]https://www.jianshu.com/p/6041f3e8a583