20221209-卷积计算演示

卷积这个概念,从字面上看比较抽象,加以公式和原理,理解起来也是比较复杂。
卷积是一种计算,其中包括两个字:“卷”和“积”。从”积“字可以猜测,计算过程中应该会涉及到乘法计算。“积”字前面有个“卷”字作为修饰,可以推测卷积中的乘法计算,不是普通的乘法计算,是被某种计算规则所约束的乘法计算。
接下来的内容,不是从公式和概念原理的角度进行解释,而是通过具体计算过程的演示,达到快速掌握卷积计算规则的目的。

1 一维

输入x: [ 1 2 3 ]
输入y: [ 4 5 6 ]
z = conv(x, y)
输出z: [ 4 13 28 27 18 ]
计算过程如下图所示。

2 二维

输入x:
[   1 2
 3 4 ]
输入y:
[   1 2
 3 4 ]
z = conv(x, y)
输出z:
[   1   4   4
 6 20 16
 9 24 16 ]

在一维卷积的基础上,观察二维卷积的计算过程。

3 多维(三维及以上)

输入x:
[   1 2
 3 4

 5 6
 7 8 ]
输入y:
[   1 2
 3 4

 5 6
 7 8 ]
z = conv(x, y)
输出z:
[     1      4     4
   6    20   16
   9    24   16

 10    32   24
 44  120   80
 42  104   64

 25    60   36
 70  164   96
 49  112   64 ]
在二维卷积的基础上,观察三维卷积的计算过程。由三维可扩展至更高维度。

总结

通过对一维、二维以及多维卷积计算过程的观察,可以看到,输入x先进行反转,然后滑动y。在滑动过程中,x和y相对应的数据进行乘法计算,得到一组数据,作为输出数据的一部分。滑动结束后,整个卷积计算完成。
卷积计算,就是先反转,再滑动相乘

拓展

下图是典型的神经网络中的二维卷积计算的示意图。

需要注意的是,神经网络中的卷积和上文中提到的卷积(即基础数学卷积)还是有所差异的。
基础卷积的思路和规则比较简单,即滑动相乘,而且也没什么具体的目的,只是两个输入做计算,得到一个输出。
而神经网络中的卷积的规则和参数就比较多了,重要的一些参数包括权重、偏置、填充、步长等,明显要比基础卷积复杂一些。更关键的是,神经网络中的卷积具有明确的目的和用途,用于训练网络、调参数、提取图像特征等。
如果要做一个类比,一段连续的存储空间,可以朴素地作为一个数组,加以限制条件、更丰富的属性和参数、专门的使用场景,可以得到栈或队列等更复杂的数据结构。

posted @ 2022-12-07 19:47  三七中和  阅读(28)  评论(0编辑  收藏  举报