卷积过程是卷积神经网络最主要的特征。然而卷积过程有比较多的细节,初学者常会有比较多的问题,这篇文章对卷积过程进行比较详细的解释。
1.卷积运算
首先我们需要知道什么是卷积计算,它其实是一种简单数学运算,有两个步骤:一个是矩阵内积乘法,另一个是将内积乘法的结果进行全加。
(1)矩阵内积乘法
矩阵的内积乘法非常简单,就是把两个相乘的矩阵,相同位置的元素进行乘法运算,这个时候会得到一个新的矩阵(在这里我们需要注意一下,卷积是在作矩阵内积乘法,而不是矩阵乘法)。
(2)全加计算
这个新矩阵的全部值会进行相加,然后会得到一个值,这个值才是卷积运算的结果。
卷积计算过程如下图所示:
2.特征图像与卷积核
对于实际的卷积过程中,它一方面有输入图像,这些图像被称作是特征图像(注:卷积神经网络中,原始的输入是真实的图像,经过卷积后会生成特征图像),另一方面还需要有卷积核。
卷积核的值是人为设定的,它是可以调节的,在实际的卷积神经网络中,卷积核的值就是网络的参数。对卷积网络进行训练,就是在调节这些卷积核心的参数。在实际中一般不会用太大的卷积核,常见的卷积核大小有33,55,1*1的大小。
特征图像和卷积核都是以矩阵的形式存在,因此它们可以进行卷积计算。卷积计算的输入不仅可以是图像,还可以是其它的二维矩阵信息(当然还有一维和三维的卷积,这里就不多介绍了)。卷积核首先会对特征图像的第一个区域进行卷积运算,这个卷积计算的结果,会作为输出特征图像上的一个点,如下图所示。
3.卷积核在特征图像上的滑动过程
每次卷积计算的结果会作为输出特征图像的一个点,而特征图像在进行卷积过程后,会输出一幅新的特征图像,这需要卷积核与特征图像进行多次卷积计算。形象的来说,卷积核会在输入的特征图像上滑动。这个滑动的过程,一般是沿着从左到右,从上到下这样的次序。如下图所示。
4.多通道特征图像的卷积过程
使用一个卷积核对一幅特征图像进行卷积之后,会产生一幅新的特征图像,所以我们很自然的能想到,使用多个卷积核对特征图像进行卷积会得到多幅特征图像。在一个实际卷积神经网络中通常有很多个卷积层次,每个卷积层都有很多个卷积核,那么在每个层次也会产生很多幅特征图像,这些特征图像的数目,被称为是“通道”数目。
此时会面临一个问题是,怎样对多个通道的特征像进行卷积。这个时候我们需要对卷积核进行分组,每组卷积核的数目,对应的是输入通道特征图像的数目,而输出通道的数目是卷积核一共有多少组。所以总的卷积核心数目是:输入通道数目*输出通道数目。
另外还需要注意的是,每组卷积核心通常还有一个偏置项,所以下图的卷积过程是,第一组的三个卷积核进行卷积计算后的结果,再加上一个偏执项的值,才是输出特征相应位置的值。
还需要注意的是,输入特征图的外围经常会填充一圈的零,这样的处理是为了让特征图边缘的值能对准卷积核,可以减少一些信息的损失。
下面两幅图是多通道卷积过程的示意图。
理解卷积过程对于学习深度神经网络非常重要,在这篇文章对卷积过程进行了较为详细的解释。其实基本的卷积过程并不复杂,但是有一些细节需要多去思考才能消化。