19 卷积层【动手学深度学习v2】

其实李沐老师这里没有结合图来讲卷积啊,刚好我是学过了《信号与系统》和《图像处理》啊,简单聊聊我所了解的卷积啊。可能会有错误与纰漏,还望指正与海涵。
- 连续域的卷积与离散域的卷积
首先聊聊卷积(这部分可以直接跳过,影响不大)。卷积大家一般都是聊连续域比较多啊,其定义为

结果被称之为f(x)与g(x)的卷积。
而离散域与之类似,为

注意,离散域中n的取值为整数,其他则同理,不再赘述。
举个例子:记x(n),y(n)满足如下关系
x(1)=1,x(2)=-1,当n取其他值时,x(n)=0;
y(1)=1, y(2)=2,当n取其他值时,y(n)=0;
那么

很自然的h(1)=0;
其他同理。
那么到此为止,我们卷积部分算是差不多讲完了。
- 图像处理中的卷积核
其实无论是叫卷积还是滤波(filter)都无所谓了,反正都是一个东西。说到这个就得提一下图像了,毕竟是与图像相关的。大家都是知道图像都是由像素点组成的,而每个像素点都有一个对应的像素值,根据值的不同,表现出不同的颜色。比如我们这里可以虚拟一个图像。

进行卷积操作,我们还需要另外的一个变量,这里我们
虚拟另外一个卷积核

从数据科学的角度而言,这两个都是矩阵。前者是一个5×6的矩阵,而后者是一个3×3的矩阵。我们是很难去直接计算的。所以这里有些小tips!我们只需要依次从大的图像中采样一个和我们的核一样大的图形,就可以进行卷积操作了。也即,

然后也就可以将这个红框中的数据与我们最初的卷积核进行计算。
也即:

相同颜色的圈圈数据相加,也即:
24-23+5-1+10-2=13,
这就是我们口中的离散卷积(求0位置处的值罢了,刚好就是对称的)。这样就求到了第一个值,那么我们再滑动卷积核,继续以这样的方式去计算第二个滑块。

那么不再赘述。
但是这样计算是很奇怪的,不够美观。事实上,数学以及数据科学一定是在追求美观的!而且也不符合我们数据科学的运算(毕竟我们可以直接使用按位乘,然后再求和就行了)。
然后考虑到在运算过程中,卷积核是始终不变的!然后就给他翻转,或者不再进行反向运算了。不管怎么理解,总之是不再以那种奇怪的运算方式进行了。就变得正常了。再然后就是,这种称呼就被流传下来了...也就是称为 卷积核(kernel),当然也可以称之为滤波(filter)。
- 与视频中的联系
很显然啊,这个就是视频中所讲述的。

卷积核不依赖于当前图片的位置(i,j),仅取决于自己。具有平移不变性;

卷积运行仅取决于当时的图像位置(卷积核大小),具有局部性。
- 其他
另外就是说,这样计算的话,图像大小就在变小了(因为外圈没了),所以一般可能要边界填充(padding),这个后面会讲...