如何理解卷积

卷积是数学中的重要概念,也是高级算法中的重要工具,但比较难以理解,维基百科上有一个动态图来演示这个概念,但还是有些复杂,这里举个例来搞明白卷积的含义。

一维卷积

数学定义

维基百科上,卷积的形式化定义如下:
一维卷积公式

直观解释

先来分析一下这个公式:

  1. f(x)∗g(x)表示f(x)和g(x)的卷积,注意此处自变量为x;
  2. 它是对(−∞,∞)区间上对τ求积分;
  3. 积分对象为两个函数的乘积:f(τ)和g(x−τ)。
  4. 等式右边只有g(x−τ)提到了x,其他部分都在关注τ

这样一个公式恐怕还是难以理解,接下来将通过一个例子来进行解释。

例子

试想小明有一段时间每天都要去输液,输的药会在身体里残留直至失效,药效随着时间是不断衰落的。这里为简便起见,假设药效4天就失效,而且药效持续函数是离散的。如下图所示:
卷积例子图1

图中,横坐标为天数,纵坐标为药效。输液当天(day=0)药效为100%,第二天减弱为80%,第三天减弱为40%,第四天减弱为0。

现在先定义一些符号:
记天数为t,每天输液的药量为m⁡(t), 药效函数为eff⁡(t),小明身上残留的药效rest⁡(t)
其中药效函数:
卷积例子图2

下面观察一下小明从第一天起,连续三天输液后身上所留下的药效(假设每天药量固定为10)。

  • 第一天,小明去医院输完液后,药效为10(rest(t)=m(t)⋅eff(0))。
    卷积例子图3

  • 第二天,小明去医院准备输液

    • 输液前,他身上带着前一天的药效,此时已经衰减为10⋅80%=8,即m(t−1)⋅eff(1)。
    • 输液后,他身上携带的药效为:8 + 10 = 18(rest(t)=m(t−1)⋅eff(1)+m(t)⋅eff(0))
      卷积例子图4
  • 第三天,小明去医院准备输液

    • 输液前,他身上带着前两天的药效,第一天的此时已衰减为10⋅40%=4(m(t−2)⋅eff(2)),第二天的此时衰减为10⋅80%=8(m(t−1)⋅eff(1))。
    • 输液后,他身上携带的药效为:4 + 8 + 10 = 22(rest(t)=m(t−2)⋅eff(2)+m(t−1)⋅eff(1)+m(t)⋅eff(0))。
      卷积例子图5

分析

从上面的分析我们可以得到,小明第t天身上残留的药效卷积例子图6其中n为药效有效的最大天数。我们不难想象,但药效函数eff(t)为连续时,上式中的求和就应改为积分;而当药效无限期有效时,上式中的n就为无穷大。无限期有效的药效函数,所对应的卷积例子图7(本例中严格来说应该是0到正无穷,这里推广到了负无穷到正无穷)。推导到这里,基本就是维基百科上卷积的定义了。

总结

我之前对卷积概念的困惑主要是因为对公式1的那个τ的意义理解错了,总以为τ是随着坐标轴变化的量。事实上,在上面举的例子中,τ 是作为沿着纵坐标遍历的量:它的作用是对“纵向”上,历次函数eff⁡(t) 在当前点(tt)残余量rest⁡(t))的求和。积分也是对纵向上的积分,而非横向上沿自变量的积分

横坐标变化的量始终为t,而且在卷积中并没有明显体现出t的变化。

最后重新回顾一下上面的整个过程:比较三天以来的示意图可以发现,如果我们以“当天”而不是第t天为参考的话,就会看到eff(t)随着时间是在向左平移(深蓝的线表示当天,前几天的线都在其左边),然后各天衰落后的药量残余等于eff(t)值乘上初始的药量值,最后将各天的药量残余求个和。整个过程的核心就是“(反转),移动,乘积,求和”,这里面“反转”的概念也好理解,就是本来eff(t)是“朝着右边”走的函数,t=0,t=1,…,t=0,t=1,…,eff(t)是形容t天后的药量的,然而实际例子中我们是以当天为参考系,我们是在“朝着左边”看的,因而要“反转”。我认为这个“反转”是一个很自然的过程,不算是整个卷积的核心。 此外,在计算机领域,至少我接触到的图像处理、机器学习方面用到的卷积,其卷积核(就是例子中不断平移的函数eff(t))一般是对称的,所以这个反转的概念也不是那么必要。

二维卷积

数学定义

二维卷积公式

二维卷积在图像处理中会经常遇到,图像处理中用到的大多是二维卷积的离散形式:

二维卷积离散公式

图处理中的二维卷积

二维卷积就是一维卷积的扩展,原理差不多。核心还是(反转),移动,乘积,求和。这里二维的反转就是将卷积核沿反对角线翻转,比如:
二维反转

之后,卷积核在二维平面上平移,并且卷积核的每个元素与被卷积图像对应位置相乘,再求和。通过卷积核的不断移动,我们就有了一个新的图像,这个图像完全由卷积核在各个位置时的乘积求和的结果组成。

举一个最简单的均值滤波的例子:

  • 这是一个 3x3 的均值滤波核,也就是卷积核:均值滤波
  • 这是被卷积图像,这里简化为一个二维 5x5 矩阵:卷积图像

当卷积核运动到图像右下角处(卷积中心和图像对应图像第4行第4列)时,它和图像卷积的结果如下图所示:
卷积结果

可以看出,二维卷积在图像中的效果就是:对图像的每个像素的邻域(邻域大小就是核的大小)加权求和得到该像素点的输出值。滤波器核在这里是作为一个“权重表”来使用的。

参考资料:

  1. 中文维基百科/卷积
  2. 斯坦福大学CS178课程资料(有一个卷积的在线Applet演示)
  3. Understanding Convolution(用图和例子从一维卷积一直讲到了CNN)

版权声明

转自:我对卷积的理解

Brick wechat
扫一扫,用手机看更方便(^ ◕ᴥ◕ ^)