什么是卷积
教材上的卷积公式如下图:
结合经典的水池问题来说明卷积公式:
- f(t)代表进水量,表示t时刻进入的水量
- g(x-t)代表排水量,表示t时刻进入的水量,在x时候还剩多少(%)
上面说的只是特殊情况,即使只有三个时间点有进水,而在实际情况下我们的水池是每个时刻都会有进水,所以我们需要累加x时刻之前的每一个时刻的剩余量,得到以下公式:
结合两个函数我们有以下分析:
以t时刻为例,表示这个时刻刚刚进水还没有开始排,所以对应着g(t)中的A点。而t-1时刻到t时刻已经过去了一个小时,所以在g(t)中对应着B点。以此类推得到下面的图像。
上图图看着有些别扭,这个时候我们把g(t)函数进行翻转就会得到下图的样子。这样对应上了教材上的定义:
- 对g函数进行翻转,相当于在数轴上把g函数从右边褶到左边去,也就是卷积的“卷”的由来。
- 然后再把g函数平移到n,在这个位置对两个函数的对应点相乘,然后相加,这个过程是卷积的“积”的过程。
总结:如果一个系统输入不稳定而输出是稳定的,那么可以使用卷积来求这个系统的存量
图像卷积操作
什么是图像卷积操作
卷积操作的目的是提取图像的特征。 一张图片是由多个像素点组成的,每个像素点都有它自己对应的信息(如:RGB值、灰度值等)。我们把像素点抽象成网格,而对应的像素点信息则是网格内的值,如下图所示:
卷积操作就是把卷积核拍在原图上,对应的位置两两相乘,最后把得到的九个数累加得到新图像网格的一个值,然后卷积核继续向右或者向下滑动一个网格,继续计算直到遍历完整个原始网格。如下图所示。
而我们的卷积操作就是使用卷积核对原图片进行特征提取得到新的图片,过程就是使用卷积核(以大小3×3的为例),由于卷积操作最后输出的网格大小会比原图小一圈,所以在使用卷积操作的时候可以在原图片外圈补0再进行卷积操作,这样输入和输出图片大小就相同了。如下:
卷积与图像卷积的关系
我们把图像当做f函数,则卷积核是g函数。在之前的水池例子中,我们可以说x时刻前的每一个时刻对我们当前x时刻的水量都有影响(因为每个时刻都有入水和出水)。而在图像卷积中,对于规定3×3大小的卷积核,我们认为的是当前像素点受其周围一圈像素点影响。如下图为例:
经过对原图像的补零后,我们输入和输出的图像大小相同,当我们的卷积核落在原图上的时候,卷积核的中心网格对应的刚好是图片的左上角网格,而在卷积输出后,卷积的结果依然是对应着左上角网格。那么可以认为卷积操作其实是规定当前网格它周围一圈的网格对它的影响。
深度学习中的卷积为何能用互相关运算代替
在之前提到的卷积中,有说明需要反转g函数,而在深度学习中我们可以使用直接按位点乘(互相关运行),也可以把卷积核顺时针旋转180度(即将卷积核上下翻转再左右翻转)然后再做点乘。但如果它们使用相同的核数组,对于同一个输入,输出往往并不相同。
那么,你也许会好奇在深度学习中卷积层为何能使用互相关运算替代卷积运算。这主要原因在于,在深度学习中核数组都是学出来的:卷积层无论使用互相关运算或卷积运算都不会影响模型预测时的输出。假设卷积层使用互相关运算学出某一核数组。设其他条件不变,使用卷积运算学出的核数组即为互相关核数组按上下、左右翻转。也就是说原始输入与学出的已翻转的核数组再做卷积运算时,依然得到的是同样输出。因此大多数深度学习中提到的卷积运算均指互相关运算。
卷积核的作用
不同的卷积核在图片的卷积操作中起到不同的作用,如下图:
卷积核的局部特征提取
结合一个例子来说明卷积核是如何进行特征提取的。
我们把输入的一个x图片看成以下内容:
将整个图像与特定的卷积核进行卷积操作来提取局部特征,提取局部特征的目的是让卷积神经网络中的神经网络通过这些局部特征去判断和识别图片的内容。
参考
1.一文看懂卷积运算(convolution)与互相关运算(cross-correlation)的区别-CSDN博客
2.从“卷积”、到“图像卷积操作”、再到“卷积神经网络”,“卷积”意义的3次改变_哔哩哔哩_bilibili
3.卷积操作的基础知识_卷及操作-CSDN博客