卷積神經網絡CNN極大提升了計算機視覺的性能,帶來了計算機視覺的革命,但衆所周知,
網絡
只要輸入圖片稍微改一個像素、平移一個像素,CNN的輸出就會發生巨大的變化,因此很容易招到對抗攻擊。ide
今天分享一篇致力於解決CNN平移不變性對抗性攻擊的ICML2019的一篇論文,《Making Convolutional Networks Shift-Invariant Again》。性能
根本緣由就在於下采樣,不管是Max Pooling,Average Pooling,仍是Strided-Convolution,只要是步長大於1的下采樣,均會致使平移不變性的丟失。3d
舉個簡單例子,正常輸入是一維數字序列 00110011。orm
shift爲0時的Maxpooling以下:cdn
向左平移1時的Maxpooling:blog
只平移1個像素,Maxpooling結果就發生了巨大差別。下采樣是CNN平移不變性丟失的罪魁禍首。圖片
上一小節只是感性的認識下采樣對平移的敏感性,嚴格意義上講,上一小節展示的是平行相等性,而不是平移不變性。咱們給出平移不變性和平移相等性的嚴格定義。it
用X表示一張分辨率爲H x W的圖片,則:io
一個L層的CNN能夠用如下特徵提取器表示:
每個Feature Map F能夠上採樣成與X相同分辨率:
1)平移相等性
若是輸入的平移等於輸出的平移,則是平移相等。
注意,上式中的F是通過上採樣後的,與輸入圖片X分辨率相同。
2)平移不變性
若是輸入平移後,輸出不變,則是平移不變。
注意,上式中的F是通過上採樣後的,與輸入圖片X分辨率相同。
就上一小節中的例子,咱們對比一下shift=0和shift=1,並通過上採樣後的結果:
明顯的平移相等性和平移不變性都丟失了。
咱們再對比一下shift=0和shift=2,並通過上採樣後的結果:
這個明顯的,保持了平移相等性但沒有保持平移不變性,只要shift的像素數等於pooling的步長,就能夠作到平移相等性。
對上一小節的例子作一個變種:
這個明顯的保持了平移不變性和平移相等性。
在通常的CNN中,只要前幾層保持住平移相等性,通常最後的分類具備平移不變性,因此後面主要討論平移相等性。
3)平移相等性的度量
平移相等性若是保持當然最佳,若是平移不等,怎麼衡量平移不等的程度?通常採用具體度量:
具體的,做者採用cos類似度進行衡量:
取值範圍爲[-1.0, 1.0],值越大,平移相等性越好。
傳統減小分辨率的方法如maxpooling、average pooling和strided convolution均打破了平移相等性,教科書上的解決方案是使用低通濾波器抗鋸齒,average pooling自帶抗鋸齒,但具體怎麼應用到maxpooling和strided convolution上,尚尚未優雅的解決方案,做者將pooling過程進行分解,稍做改進,提出了優雅的解決方案。
以maxpooling爲例,其實能夠分爲相等的兩步操做,以下圖:
MaxPool/2 = Max/1 + Subsampling/2
做者提出,在Max/1以後,加一個Anti-aliasing Blur操做,再Subsamping/2。
MaxBurPool/2 = Max/1 + Anti-aliasing Blur/1 + Subsampling/2。
最後兩步做者成爲BlurPool,即記:
BlurPool/2 = Anti-aliasing Blur/1 + Subsampling/2。
那麼maxpooling、average pooling和strided convolution就能夠分爲修改成Anti-aliased的版本。
下圖是shift=0時MaxPool/2和MaxBlurPool/2的結果:
下圖是shift=1時MaxPool/2和MaxBlurPool/2的結果:
shift=0和shift=1時MaxPool/2的餘弦類似度爲:0.71
shift=0和shift=1時MaxBlurPool/2的餘弦類似度爲:0.95
可見,帶Anti_aliasing的BlurPool平移相等性獲得大大改善。
1)ImageNet上的結果
下圖給出了ImageNet數據集上添加Anti-aliasing後的consistency與Accuracy。consistency是輸入圖片,給兩種不一樣shift後,類別保持一致的比例。能夠添加Anti-aliasing之後,不管是選擇哪一種anti-aliasing kernel,相較於baseline不管準確度和一致性均有明顯上升,這個是意外的,做者認爲應該會損失準確度,但反而增長了準確度。圖中的kernel是指:
Rect-2:[1, 1]
Tri-3: [1, 2, 1]
Bin-5: [1, 4, 6, 4, 1]
全部kernel均須要normalize,即除以kernel全部元素之和。
2)VGG內部各層的平移相等性度量
下圖是VGG內部各層的FeatureMap,在CIFAR10上任意可能的shift對應的平移相等性度量(餘弦類似度),由於CIFAR10的圖片均是32x32的分辨率,所以也只有32x32種平移,因此結果是32x32的圖片。藍色表示徹底的平移相等,紅色表明較大的平移不等性。
明顯的,平移相等性是週期性的,週期是累計的下采樣率。每一次下采樣,均會喪失一半的平移相等性。也能夠看出,Anti-aliasing明顯改善了平移相等性。
3)CIFAR10上不一樣kernel的結果對比
下圖做者探討了CIFAR10上不一樣網絡結構(DenseNet和VGG),不一樣的Blur kernel,有無augmentation下,accuracy與consistency的變化。
能夠明顯的看出,數據加強對非傳統pooling的重要性,也能夠看出Anti-aliasing pooling的有效性,特別是無數據加強時。
做者將Pooling改成BlurPooling後,確實能夠有效的提升平移不變性,並且能夠提升模型準確度,增長的計算量也基本能夠忽略不計,的確是很是優雅的解決方案,但願能看到大規模的應用,成爲之後模型的標配。