目录
convolution
卷积是一种数学运算,在信号处理、人工智能等领域有广泛应用。
实例
卷积可以被用于预测瞬时行为的持续后果1)。假设我们在一个房间里拍了一下手,那么我们听到的声音将是怎么样的?根据常识,我们听到的不只是“啪”一声,还有:
- 直达声:手拍响的瞬间,声音直接传到耳朵
- 一次反射:声音打到墙壁弹回来,稍晚一点到达,弱一些
因此,我们可以把房间视为两抽头滤波器: \begin{equation} h=[1,0.5] \end{equation} 也就是说,每个输入时刻$n$的脉冲,会在$n$时刻产生强度 1 的响应,在 $n+1$时刻产生强度 0.5 的响响应。现在我们以$s=[1,2,1]$的方式拍手,那么我们可以推演一下,我们将听到怎样的回声:
- 时刻0的输入1,它会有两个贡献
- 时刻 0 贡献 $1\times 1=1$
- 时刻 1 贡献 $1 \times 0.5=0.5$
- 同理,时刻 1 的输入 2
- 时刻 0 贡献 $2\times 1=2$
- 时刻 2 贡献 $2\times 0.5=1$
- 同理,时刻 2 的输入 1
- 时刻 2 贡献 $1\times 1=1$
- 时刻 2 贡献 $1\times 0.5=0.5$
叠加上述同一时刻的输出,我们可知,$r=[1,2.5,2,0.5]$,将这个操作抽象成公式,那么,对于离散函数,卷积按如下方式计算: \begin{equation} r[n]=(s * h)[n] = \sum_{k = -\infty}^{\infty} s[k]\, h[n - k] \end{equation} 这里$k$是求和索引,它遍历的是输入信号$s$的时间下标。
卷积的“卷”,指的的函数的翻转,从$h(t)$变成$h(-t)$的这个过程;同时,“卷”还有滑动的意味在里面。卷积的“积”,指的是积分/加权求和2)。
从上面“积”的过程我们还可以看到,叠加值是个全局的概念,也就是说,卷积的结果不仅跟当前时刻输入信号的响应值有关,也跟过去所有时刻输入信号的响应都有关系,考虑了对过去的所有输入的效果的累积。所以说,“积”是全局概念,或者说是一种“混合”,把两个函数在时间或者空间上进行混合。
再来看一个存款复利计算的例子3)。小明每年存入100元钱,年利率是5%,按复利计算(即将每一年所获利息加入本金,以计算下一年的利息),那么在五年之后他能拿到的本息和是多少呢?首先看第一年存入的100元,到期后能拿到多少
| 本金 | 第一年 | 第二年 | 第三年 | 第四年 | 第五年 |
|---|---|---|---|---|---|
| 100 | $100 \times 1.05^1$ | $100 \times 1.05^2$ | $100 \times 1.05^3$ | $100 \times 1.05^4$ | $100 \times 1.05^5$ |
以此类推,能得到第二年存入的100元产生的本利和
| 本金 | 第一年 | 第二年 | 第三年 | 第四年 | 第五年 |
|---|---|---|---|---|---|
| 100 | $100 \times 1.05^1$ | $100 \times 1.05^2$ | $100 \times 1.05^3$ | $100 \times 1.05^4$ | $100 \times 1.05^5$ |
| - | 100 | $100 \times 1.05^1$ | $100 \times 1.05^2$ | $100 \times 1.05^3$ | $100 \times 1.05^4$ |
…
用求和符号总结,可以得到 \begin{equation} r[n]=(s * h)[n] = \sum_{k = 0}^{5} s[k]\, h[5 - k] \end{equation} 其中$s(k)$是输入函数,而$h(k)$是存入银行的每一笔钱的复利计算函数,$h(5-k)=1.05^{5-k}$,在这里,小明最终得到的浅就是他存钱函数和复利计算函数的卷积
数学定义
对于连续函数,卷积定义如下 \begin{equation} (f * g)(t) = \int_{-\infty}^{\infty} f(\tau)\, g(t - \tau)\, d\tau \end{equation}