本文大量参考链接中文章形成,如有需要,请自行跳转。
引言
如何通俗易懂地理解卷积?
连续形式的一维卷积
在泛函分析中,卷积是通过两个函数f(x)和g(x)生成第三个函数的一种算子,它代表的意义是:两个函数中的一个(取g(x),可以任意取)函数,把g(x)经过翻转平移,然后与f(x)的相乘,得到的一个新的函数,对这个函数积分,也就是对这个新的函数求它所围成的曲边梯形的面积。
设f(t),g(t)是两个可积函数,f(t)与g(t)的卷积记为f ( t ) ∗ g ( t ) f(t)g(t)f(t)∗g(t*),它是其中一个函数翻转并平移后与另一个函数乘积的积分,是一个自变量是平移量的函数。也就是:
离散形式的一维卷积
对于定义在整数$\mathbb{Z}$上的函数f,g,卷积定义为
实例:掷骰子问题
光看数学定义可能会觉得非常抽象,下面举一个掷骰子的问题,该实例参考了知乎问题”如何通俗易懂地解释卷积”的回答。
想象现在有两个骰子,两个骰子分别是f跟g,f(1)表示骰子f向上一面为数字1的概率。同时抛掷这两个骰子1次,它们正面朝上数字和为4的概率是多少呢?相信读者很快就能想出它包含了三种情况,分别是:
- f向上为1,g向上为3;
- f向上为2,g向上为2;
- f向上为3,g向上为1;
最后这三种情况出现的概率和即问题的答案,如果写成公式,就是$\sum_{\tau=1}^{3} f(\tau) g(4-\tau)$。可以形象地绘制成下图:
果稍微扩展一点,比如说认为 f(0) 或者 g(0)等是可以取到的,只是它们的值为0而已。$\sum_{\tau=-\infty}^{\infty} f(\tau) g(4-\tau)$。仔细观察,这其实就是卷积(f∗g)(4)。如果将它写成内积的形式,卷积其实就是
这么一看,是不是就对卷积的名字理解更深刻了呢? 所谓卷积,其实就是把一个函数卷(翻)过来,然后与另一个函数求内积。
对应到不同方面,卷积可以有不同的解释:g 既可以看作我们在深度学习里常说的核(Kernel),也可以对应到信号处理中的滤波器(Filter)。而 f 可以是我们所说的机器学习中的特征(Feature),也可以是信号处理中的信号(Signal)。f和g的卷积 (f∗g)就可以看作是对f的加权求和。下面两个动图就分别对应信号处理与深度学习中卷积操作的过程。
矩阵中卷积计算
以下图中f*g卷积为例,要注意一点,为了运用卷积,$g$虽然和$g$同维度,但下标有点不一样:
这里以一个动图来说明下计算过程:
写成卷积公式就是:
这样相当于实现了$g$这个矩阵在原来图像上的划动(准确来说,下面这幅图把$g$矩阵旋转了180度):
所以一般在用的是卷积核实际上是进行过180度旋转的。