一、卷积层
1.1什么是卷积核?(convolutional kernel)
卷积层的功能是对输入数据进行特征提取,其内部包含多个卷积核,组成卷积核的每个元素都对应一个权重系数和一个偏差量(bias vector),类似于一个前馈神经网络的神经元(neuron)。
卷积层内每个神经元都与前一层中位置接近的区域的多个神经元相连,区域的大小取决于卷积核的大小,在文献中被称为“感受野(receptive field)”,其含义可类比视觉皮层细胞的感受野 。卷积核在工作时,会有规律地扫过输入特征,在感受野内对输入特征做矩阵元素乘法求和并叠加偏差量。
2.2什么是卷积操作呢?
具体的步骤如下:
1.在图像的某个位置上覆盖滤波器;
2.将滤波器中的值与图像中的对应像素的值相乘;
3.把上面的乘积加起来,得到的和是输出图像中目标像素的值;
4.对图像的所有位置重复此操作。
这个3x3滤波器,通常称为垂直索伯滤波器(Sobel filter):
用它来处理照片会得到什么呢?
由此,我们可以看出,索伯滤波器是是边缘检测器。
现在可以解释卷积操作的用处了:用输出图像中更亮的像素表示原始图像中存在的边缘。
二、卷积层的计算
2.1公式
长度:
宽度:
其中W、H
表示输出的宽度、长度;W
、H
表示输出特征图的宽度、长度F表示卷积和的宽的大小;S表示滑动窗口的步长;P表示边界填充(加了几圈0)。
2.3例题
如输入数据为 32*32*3 的图像,用10个5*5*3 的卷积核来进行操,步长为1,边界2为0填充为2,最終输出结果为?
解:(32-5+2*2)/1 +1 =32,输出规模为 32*32*10 的特征图。
三、 卷积层参数
卷积层参数包括卷积核大小、步长和填充,三者共同决定了卷积层输出特征图的尺寸,是卷积神经网络的超参数 。其中卷积核大小可以指定为小于输入图像尺寸的任意值,卷积核越大,可提取的输入特征越复杂。
卷积步长定义了卷积核相邻两次扫过特征图时位置的距离,卷积步长为1时,卷积核会逐个扫过特征图的元素,步长为n时会在下一次扫描跳过n-1个像素 。
由卷积核的交叉相关计算可知,随着卷积层的堆叠,特征图的尺寸会逐步减小,例如16×16的输入图像在经过单位步长、无填充的5×5的卷积核后,会输出12×12的特征图。为此,填充是在特征图通过卷积核之前人为增大其尺寸以抵消计算中尺寸收缩影响的方法。常见的填充方法为按0填充和重复边界值填充(replication padding)。填充依据其层数和目的可分为四类 :
有效填充(valid padding):即完全不使用填充,卷积核只允许访问特征图中包含完整感受野的位置。输出的所有像素都是输入中相同数量像素的函数。使用有效填充的卷积被称为“窄卷积(narrow convolution)”,窄卷积输出的特征图尺寸为(L-f)/s+1。
相同填充/半填充(same/half padding):只进行足够的填充来保持输出和输入的特征图尺寸相同。相同填充下特征图的尺寸不会缩减但输入像素中靠近边界的部分相比于中间部分对于特征图的影响更小,即存在边界像素的欠表达。使用相同填充的卷积被称为“等长卷积(equal-width convolution)”。
全填充(full padding):进行足够多的填充使得每个像素在每个方向上被访问的次数相同。步长为1时,全填充输出的特征图尺寸为L+f-1,大于输入值。使用全填充的卷积被称为“宽卷积(wide convolution)”
任意填充(arbitrary padding):介于有效填充和全填充之间,人为设定的填充,较少使用。
带入先前的例子,若16×16的输入图像在经过单位步长的5×5的卷积核之前先进行相同填充,则会在水平和垂直方向填充两层,即两侧各增加2个像素( )变为20×20大小的图像,通过卷积核后,输出的特征图尺寸为16×16,保持了原本的尺寸。