该如何解释这个理论?


这其实是个好问题,网上有很多误导人的观点,让我们来好好分析一下。

首先,解释一下什么是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(稀疏性更强?)的任务,越需要训练集的多样性,普通的平移不能满足需求。


推荐阅读:
相关文章