大家好啊,我是董董灿。
在卷积神经网络中,有一个非常重要且绕不开的概念叫做卷积的"感受野"。
我刚开始学习卷积的时候,仅仅把"感受野"理解为感受视野,没错就是文字上的理解。
但随着后来工作的深入,慢慢发现感受野这一概念,竟然和很多神经网络结构和特性都有着千丝万缕的关系,让人不禁感叹算法的奇妙。
今天就来简单聊一聊我所理解的卷积"感受野"。
1、什么是卷积的感受野
我们知道卷积算法是在输入图像上滑动一个小窗口(通常是3x3或5x5的矩阵),然后对窗口内的像素进行加权求和,最终生成输出图像,卷积计算过程如下所示。
那么,卷积的感受野是什么呢?感受野指的是输出图像中的一个像素与输入图像中的哪些像素有关。
换句话说,它表示一个输出像素"看到"的输入图像中区域的大小,注意是从输出来看的。如果你将卷积操作比作窗户,那么感受野就是一个输出像素透过这个窗户可以看到的输入图片的范围。
上图中,第一个输出左上角的像素点12.0,透过3x3的矩阵看到的是输入图像左上角的3x3的像素矩阵;最后一个输出14.0,透过3x3的矩阵看到的是输入图像右下角的3x3的像素矩阵,这个3x3的像素矩阵就是这个卷积的感受野。
2、卷积的感受野在卷积算法中有什么重要意义
可以说,感受野影响了神经网络对于图像的理解和图像特征的提取。
一个大的感受野使得神经网络可以看到输入图像上更大的像素范围,从而更好地理解图像的全局信息,从而提取全局特征,如物体的形状和轮廓。
而较小的感受野只能捕捉到图像的局部特征,如边缘或纹理。
因此,在很多神经网络中,往往会出现不同大小的卷积核,就是为了提取不同尺度范围内的特征,让神经网络既可以学到图像的细节、又可以看到图像的轮廓。
3、为什么2个3x3的卷积可以替换一个5x5的卷积
看论文的时候经常会看到一个操作,那就是为了优化神经网络结构,将其中一个大的卷积核用几个小的卷积核来代替。
比如,将一个5x5的卷积用两个3x3的卷积来代替。
之所以可以这样做,是因为从输出像素来看,两个3x3的卷积和一个5x5的卷积,具有相同的感受野!
而这样做,又会有很多其他的好处:
**好处1:**两个3x3的卷积所需要的参数量要比一个5x5的卷积参数量少。忽略channel 的数值,两个3x3的卷积核参数量为 3x3 + 3x3 = 18,而一个5x5的参数量则为25。
**好处2:**一个卷积变为两个卷积,加深了神经网络的层数,从而在卷积后面需要引入更多非线性层,增加卷积神经网络的非线性能力。
这两点好处,其实在《面试官问,1x1 的卷积有什么用?》有提到过,所以关于卷积的很多算法都是类似的,要么是为了减少参数量,要么是为了提升非线性能力。
总的来说,卷积感受野就像是一扇窗户。
你站在小窗户前,就只能看到窗外的一小部分景色,此时你就是一个局部感知。但如果你站在大窗户前,你可以看到更广阔的景色,此时你拥有一个更大的感受野,你就拥有一个全局感知。
一个大的卷积神经网络提取图像特征,就是通过网络中或大或小的不同尺寸的卷积核,来提出不同尺度的下的特征,最终通过一个全连接来将特征进行融合,达到图像识别的目的的。