卷积的直观解释

发表时间

卷积运算应用广泛,但是由于计算公式中存在反转,违背直觉所以不容易理解。本文试着避免从信号处理的角度出发,从本质上解释卷积运算的来源。


字面含义

卷积并不是 convolution 的唯一翻译,其他还有摺积、叠积等,这些翻译的含义中总包含有混合、纠缠、重叠的意思,所以这种算法注定包含了充分混合的过程。

虽然和内积都带有积字,但是内积得到的是一个数,而卷积得到的是参与运算的同类(比如两个函数卷积仍然得到一个新的函数)。

糅合的本质

卷积运算的本质,就是将两个对等的集合,充分糅合、混合、融合,得到再生的同类集合。新的集合的每一个值,来自原来两个集合里面所有可能产生该值的组合。也就是说,每产生一个结果值,都需要有原来两个集合中的所有值参与运算。

(这幅图虽然不是用卷积的结果,但是表达了两种集合“糅合”再生的效果)

卷积的本质在于糅合,所以卷积的结果集会和原来两个原始集合都有一些近似,多多少少带着原始集合的影子。就像遗传基因,孩子又像父亲,又像母亲,是因为孩子染色体上的每对基因,由父母的等位基因共同决定,所以孩子的染色体是父母染色体糅合的再生物。

反转的目的

卷积的定义公式,最难理解的是反转的动作: $y[n-k]$。$$f[n] = x[n]*y[n]=\sum^{\infty}_{k=-\infty}{x[k]y[n-k]} \tag{1}$$为了更好的理解这个神秘的反转,我们观察卷积公式$(1)$里,相乘的两项$x[k]$ 和 $y[n-k]$ 的下标有一个特点,就是

对于每一个确定的 $n$ 值,$x[k]$ 和 $y[n-k]$ 下标之和总等于 $n$

举个例子, 组成 $f \left[ 5 \right] $ 的 $x$ 和 $y$ 序列下标用图形表示:

x     0  1  2  3  4  5 ...
      |  |  |  |  |  |
y     5  4  3  2  1  0 ...   
--------------------------------
n     5  5  5  5  5  5   => f[5]

展开表示就是,
$$ f \left[ 5 \right] = \cdots + x \left[ 0 \right] y \left[ 5 \right] + x \left[ 1 \right] y \left[ 4 \right] + x \left[ 2 \right] y \left[ 3 \right] + x \left[ 3 \right] y \left[ 2 \right] + x \left[ 4 \right] y \left[ 1 \right]+\cdots $$

我们试着替换变量,令 $a+b \equiv n$,于是卷积公式$(1)$可以写成新的形式:$$f[n]=x[n]*y[n]=\sum_{a+b \equiv n}{x[a]y[b]}$$

所以,卷积运算中反转的目的,其实是去寻找下标之和 $a+b \equiv n$ 固定等于 $n$ 的所有配对组合,这其实是一个取齐过程。同时也因为这一个反转,使卷积从坐标加法那里继承来了交换律。

取齐的过程

上一节 提到,对于一个确定的 $n$,寻找所有满足 $a+b \equiv n$ 的 $x[a]$ 和 $y[b]$ 组合是取齐的过程,参考下图的演示:

     x[a]         y[b]
     - o o o o o o o o
     - - o o o o o o o
     - - - o o o o o o
 a   - - - - o o o o o  b
 -   - - - - - o o o o  o
     - - - - - - o o o
     - - - - - - - o o
     - - - - - - - - o
--------------------------------
    n = 9             => f[9]

上图中,a 用 – 表示,b 用 o 表示,所有 $a+b \equiv 9$ 的组合都提取出来了。下面在举几个实例来理解这个取齐过程。

时间上的取齐

超市所有商品中,刚好在今天到达保质期的商品的集合,该怎么提取出这些商品?应该是找出所有满足下面等式的商品:

失效期=生产日期+保质期=今天

我们找出的商品可能如下表所示:

商品 生产日期 保质期 生产日期+保质期
商品 1 2014-7-22 5年 2019-7-22
商品 2 2017-7-22 2年 2019-7-22
商品 3 2019-5-22 2月 2019-7-22
商品 4 2019-7-20 2天 2019-7-22

用取齐的方式,所有满足某一天失效的所有商品全部提取出来,所以得到的是一个日期的函数:

失效期 n 商品集合 f[n]
2019-7-20 前天过期的商品
2019-7-21 昨天过期的商品
2019-7-22 今天过期的商品
2019-7-23 昨天过期的商品
…… ……

可以看出,某一天失效的商品,就是原来全部商品中,把生产日期和保质期的和取齐到这一天的子集。

空间上的取齐

每个十字路口停的车,都是相邻的路口转进来的车,在当前路口取齐的总和。

整数乘法

整数的乘法中也包含了取齐求和的过程,乘法结果里的十位,是由乘数里所有能得到十位数字的组合,取齐后相加得来。

       1  2
  x    3  4
---------------
       4  8
    3  6  0
---------------
    4  0  8

上面的竖式里,十位的 0 是由 4×10=40 和 30×2=60 相加得到的。如果用反转平移,就能将更清楚的观看乘法过程。

要计算 12 × 34 = (10 + 2) × (30 + 4),需要分别求出个位、十位、百位的值。

         10  2
             |
             4   30
----------------------
  个位        8
         10   2
         |    |
         4    30
---------------------
  十位    40 + 60 = 100
             10   2
             |
        4    30
----------------------
  百位       300

所以,整数乘法本身就是卷积运算。

多项式乘法

整数乘法是多项式乘法的特例,多项式乘法同样是卷积。$$({x}+2)(3{x}+4) = (1 \times 3){x}^2+(1\times4+2\times3){x}+(2\times4)$$

中学时候学的交叉相乘法求各项系数,

     1   2
      \ /
      / \
     3   4
----------------------
     6 + 4  = 10

其实是卷积运算的特殊情形,更一般的情况是反转-相乘-求和。如果是多余两项的多项式相乘,用常规方法计算系数就是卷积运算了。比如 $$({x^2}+{2x}+3)(4{x^2}+5{x}+6)$$

和相关运算的区别

相关与卷积运算十分相似,都是两个集合的整体运算。但是和卷积不同的是,相关运算的结果,表明了二者的相似程度。由于位移方向和序列方向相同,所以对于两个序列来说,相关就是滑动点积,或者可以称为滑动投影。
$$R_{xy}[n]=\sum^{\infty}_{k=-\infty}{x[k] y[n+k]}$$卷积用来使两个集合相互影响,生成新的集合。相关用来在一个集合中,寻找另一个集合的影子。这一切的差异,仅来自一个正负号。

卷积满足交换律,而相关不满足。比如父亲和母亲共同的孩子,也可以说是母亲和父亲共同的孩子,并没有区别。

但是,如果把一个人的儿童和成人时期作对比:对于儿童来说,若干年后和成人长得完全一致;对于成人来说,则是若干年前和儿童完全一致。这一前一后,说明改变了相关顺序,得到的结果是不同,而且是对称的。

本页面内容采用 署名协议 CC-BY 授权。欢迎转载,请保留原文链接