该如何解释这个理论?
这其实是个好问题,网上有很多误导人的观点,让我们来好好分析一下。
首先,解释一下什么是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在不同变换下的不变性 (主要是平移),并进行了一些简单的分析。下面的图都来自于文章: