卷积网络的平移不变性可能会常常在论文中看到,那这个究竟是什么呢?看了一些论文的原文和网络上十几篇讲这个的博文,大概捋清了思路而后写下这个。不得不说,有的博文讲的有那么点问题。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