卷积神经网络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后,确实能够有效的提升平移不变性,并且能够提升模型准确度,增长的计算量也基本能够忽略不计,的确是很是优雅的解决方案,但愿能看到大规模的应用,成为之后模型的标配。