卷积
文章目录
以下回答摘自知乎回答“ 如何通俗易懂地理解卷积”。
卷积的定义
-
连续形式的卷积:
-
离散形式的卷积:
它们都有一个共同的特征:
直观上来看,函数
g
(
n
−
τ
)
g(n-\tau)
g(n−τ)的含义是将函数
g
(
τ
)
g(\tau)
g(τ)首先进行沿y轴翻转得到
g
(
−
τ
)
g(-\tau)
g(−τ),然后向左平移n个单位得到
g
(
n
−
τ
)
g(n-\tau)
g(n−τ)。即先对g函数进行翻转,相当于在数轴上把g函数从右边褶到左边去,也就是卷积的“卷”的由来。然后再把g函数平移n个单位,在这个位置对两个函数的对应点相乘,然后相加,这个过程就是卷积的“积”的过程。
但是,为什么这么做呢?
可以从现实生活中各个场景来进行解释:
(1)离散情况下
例1.掷骰子问题:掷两个骰子,问两个骰子点数加起来等于4的概率是多少?那么,两枚骰子点数加起来为4的情况有:
因此,两枚骰子点数加起来为4的概率为:
写成卷积定义的形式为:
例2. 图像卷积:
有这么一副图像,可以看到,图像上有很多噪点:高频信号,就好像平地耸立的山峰:
看起来很显眼。平滑这座山峰的办法之一就是,把山峰刨掉一些土,填到山峰周围去。用数学的话来说,就是把山峰周围的高度平均一下。平滑后得到:
卷积可以帮助实现这个平滑算法。有噪点的原图,可以把它转为一个矩阵:
然后用下面这个平均矩阵(说明下,原图的处理实际上用的是正态分布矩阵,这里为了简单,就用了算术平均矩阵)来平滑图像:
记得刚才说过的算法,把高频信号与周围的数值平均一下就可以平滑山峰。
比如我要平滑
a
1
,
1
a_{1,1}
a1,1点,就在矩阵中,取出
a
1
,
1
a_{1,1}
a1,1点附近的点组成矩阵
f
f
f,和
g
g
g进行卷积计算后,再填回去:要注意一点,为了运用卷积,
g
g
g虽然和
f
f
f 同维度,但下标有点不一样:
用动图来表示计算过程:
写成卷积公式就是:
要求
c
i
,
j
c_{i,j}
ci,j ,一样可以套用上面的卷积公式。依次使用如上原理的离散卷积公式,得到卷积后的表示(这里计算结果不太对,把卷积核翻转180度就对了):
(2)连续情况下(信号处理)
如下图所示,输入信号是
f
(
t
)
f(t)
f(t) ,是随时间变化的。系统响应函数是
g
(
t
)
g(t)
g(t) ,图中的响应函数是随时间指数下降的,它的物理意义是说:如果在
t
=
0
t=0
t=0 的时刻有一个输入,那么随着时间的流逝,这个输入将不断衰减。换言之,到了
t
=
T
t=T
t=T时刻,原来在
t
=
0
t=0
t=0 时刻的输入f(0)的值将衰减为
f
(
0
)
g
(
T
)
f(0)g(T)
f(0)g(T)。考虑到信号是连续输入的,也就是说,每个时刻都有新的信号进来,所以,最终输出的是所有之前输入信号的累积效果。如下图所示,在
T
=
10
T=10
T=10时刻,输出结果跟图中带标记的区域整体有关。其中,
f
(
10
)
f(10)
f(10)因为是刚输入的,所以其输出结果应该是
f
(
10
)
g
(
0
)
f(10)g(0)
f(10)g(0),而时刻
t
=
9
t=9
t=9的输入
f
(
9
)
f(9)
f(9),只经过了1个时间单位的衰减,所以产生的输出应该是
f
(
9
)
g
(
1
)
f(9)g(1)
f(9)g(1),如此类推,即图中虚线所描述的关系。这些对应点相乘然后累加,就是
T
=
10
T=10
T=10时刻的输出信号值,这个结果也是
f
f
f和
g
g
g两个函数在
T
=
10
T=10
T=10时刻的卷积值。
显然,上面的对应关系看上去比较难看,是拧着的,所以,我们把
g
g
g函数对折一下,变成了
g
(
−
t
)
g(-t)
g(−t),这样就好看一些了。看到了吗?这就是为什么卷积要“卷”,要翻转的原因,这是从它的物理意义中给出的。
上图虽然没有拧着,已经顺过来了,但看上去还有点错位,所以再进一步平移T个单位,就是下图。它就是本文开始给出的卷积定义的一种图形的表述:
所以,在以上计算T时刻的卷积时,要维持的约束就是:
t
+
(
T
−
t
)
=
T
t+ (T-t) = T
t+(T−t)=T 。这种约束的意义,大家可以自己体会。