332 卷积层
主要内容
1、卷积的概念
2、卷积的操作
卷积的概念
卷积(Convolution)是一种积分变换的数学方法, 在数字信号处理、通信系统、光学系统、神经网络计算许多方面得到了广泛应用。
在卷积神经网络中,卷积操作是一种特殊的线性变换,卷积核(也称为滤波器)在输入数据上进行滑动,每次计算与卷积核重叠部分的点乘和。 这样的操作可以提取输入数据的局部特征,实现特征的共享和抽象,从而使得网络对输入数据的变化更加鲁棒和准确。
卷积核,是一种可学习的滤波器,用于对输入图像进行特征提取。卷积核通常是一个小的二维矩阵,其大小通常为 k×k ,其中 k 是一个正整数,称为卷积核大小(例如3*3, 5*5, 7*7等等),卷积核的大小也可以称为感受野。
卷积核的值通常是由神经网络自动学习得到的。卷积核的作用是提取输入数据的局部特征。在卷积操作中,卷积核可以识别输入图像中的不同特征,例如边缘、纹理、角落等,从而提取更加高级的特征表示。
通过使用多个卷积核,可以提取不同类型的特征,形成更加复杂的特征表示,进而提高模型的性能。
随着卷积的进行,图像大小将被缩小,图像边缘的信息将逐渐丢失。因此,在卷积前,我们在图像上下左右填补一些0,使得我们可以控制输出特征图的大小。

卷积的操作
最常见的二维卷积操作,由一个二维输入数组和一个二维卷积核数组通过卷积运算,输出一个二维数组,例如下图所示:

通常,卷积层的操作是由多个输入和多个卷积核分别进行运算,然后再求和,以提取更为抽象的特征,比如下图:

上图中,通过2个输入通道和2个卷积核可以求出一组特征,那么,通过多个卷积核,就可以生成多个输出层(即提取多个抽象的特征)。比如2个通道和4个卷积核,就可以卷积出两组特征。
填充与步长
假设输入图像的大小是h*w,卷积核大小为x*y,,卷积的步长为1,那么输出的矩阵大小为
(h-x+1)* (w-y+1)
例如:输入图像大小为3*3,卷积核大小为2*2,卷积的步长为1,那么输出的矩阵大小为2*2。可以看出,输出的大小比输入大小减小了。
为了操持输入大小与输出大小一致,则需要在输入的高和宽两侧填充元素(通常使用0进行填充)。假设在高的两侧一共填充a行,在宽的两侧一共填充b列,那么输出的大小为:
(h-x+a+1)* (w-y+b+1)
在很多情况下,会设置a = x-1和b = y-1,这样可以使得输入和输出具有相同的高和宽。具体如下:
如果卷积核的高为奇数,则在输入图像的高的两侧(宽的两侧同理)分别填充a/2行。
如果卷积核的高为偶数,则在输入图像的顶端(左侧同理)一侧填充(向上取整a/2)行,在底端(右侧同理)一侧填充(向下取整a/2)行,
比如输入图像大小为3*3,卷积核大小为2*2,卷积步长为1,那么填充方式是,填充2-1=1行,2-1=1列,在顶端一侧填充1/2向上取整等于1行,在底端一侧填充1/2向下取整等于0行。如下图所示:

练习
输入一张彩色图像(彩色图像为3通道图像,每个通道的大小为4*4),经过一次卷积操作(卷积核大小为3*3),生成一个4通道的卷积层。请自行画出这个过程,其中的每个数值可自行设置。