在泛函分析中,卷积(convolution),或译为叠积、褶积或旋积,是透过两个函数𝑓和𝑔生成第三个函数的一种数学算子,表征函数𝑓与经过翻转和平移的𝑔的乘积函数所围成的曲边梯形的面积。如果将参加卷积的一个函数看作区间的指示函数,卷积还可以被看作是“移动平均”的推广。
定义
卷积是
数学分析中一种重要的运算。设:和是实数上的两个
可积函数,定义二者的卷积为如下特定形式的
积分变换:
仍为可积函数,并且有着:
函数和, 如果只支撑在之上,则积分界限可以截断为:
对于
对于两个得出复数值的多元实变函数,可以定义二者的卷积为如下形式的
多重积分:
卷积有一个通用的工程上的符号约定:
它必须被谨慎解释以避免混淆。例如:等价于,而却实际上等价于。
周期卷积
对于周期为𝑃的函数和,可以被表达为二者的周期求和:
离散卷积
对于定义在整数上且得出复数值的函数和, 离散卷积定义为:
这里一样把函数定义域以外的值当成零,所以可以扩展函数到所有整数上(如果本来不是的话)。两个有限序列的卷积的定义,是将这些序列扩展成在整数集合上有限支撑的函数。在这些序列是两个多项式的系数之时,这两个多项式的普通乘积的系数,就是这两个序列的卷积。这叫做序列系数的柯西乘积。
当的支撑集为有限长度的之时,上式会变成有限求和:
多维离散卷积
类似于一维情况,使用星号表示卷积,而维度体现在星号的数量上, M维卷积就写为M个星号。下面是M维信号的卷积的表示法:
对于离散值的信号,这个卷积可以直接如下这样计算:
如下图所示, 输出的计算方式是
历史
发展过程
追溯卷积的历史并不容易,因为它需要查看和验证许多书籍和论文中包含的信息。在某些情况下,提供的信息并不准确,而在其他情况下,它仅包含一些没有参考文献的评论。无论如何,追溯这些事件(无论是真实的还是假定的)是本节的主要目标。
法国数学家皮埃尔-西蒙·
拉普拉斯 (1749-1827) 附有假定事件的一个例子。现在被描述为“卷积”的表达式出现在拉普拉斯关于独立随机变量之和的最早著作中。然而,在回顾这本回忆录后,却找不到卷积的踪迹。
然而,哈尔德的书中指出,拉普拉斯确实使用卷积来解决寻找均值分布的问题,这发生在 1778 年写的一篇回忆录第 478 页,该回忆录于 1781 年发表在《巴黎皇家科学院论文集》中。
拉普拉斯的这本回忆录启发了许多应用数学家和工程师发展出许多其他理论和成果。法国数学家 Sylvestre François Lacroix (1765–1843) 于 1800 年发表的一本书中关于差异和级数的著作就是这种情况。其中,卷积出现在一个关于用定积分求级数的应用中。值得一提的是,这也许是卷积第一次以更一般的形式出现,如下图中所示。顺便提一句,德国数学家 Heinrich Friedrich Karl Ludwig Burkhardt (1861–1914) 在的脚注中引用了 Lacroix 的作品。
19世纪初,一位对将数学应用于物理现象感兴趣的年轻数学家开始写一本名为《固体体运动理论》的回忆录,这本书后来成为他 1821–1822 年首次出版的著名著作《运动理论》的一部分。这位数学家是Jean Baptiste Joseph
Fourier (1768–1830)。在这本书中,卷积出现在第 265 节:
Fourier 的书是第一本多次出现卷积的书籍(例如,参见第 IX 章)。
与傅立叶同时代的两个数学家是法国数学家
柯西(AugustinLouis Cauchy,1789-1857)和
泊松(SiméonDenis Poisson,1781-1840)。柯西在提交给法国科学院的一篇关于波的传播理论的长篇论文中使用了许多卷积表达式,该论文参加了 1815 年的数学分析奖竞赛。关于泊松,卷积首次出现在他 1816 年发表的关于波的理论的论文中。泊松在随后的论文中使用了卷积。例如,在 1826 年的一篇关于运动中磁性的论文中,卷积出现了多次。关于这篇论文和卷积的使用,Gardner和Barnes写道:“对这篇论文的处理导致人们假设这些想法已经为人所知。”
事实上,在 19 世纪 20 年代,卷积的概念在应用数学环境中相当普遍。例如,在从物理中的确定问题中得出的某些积分方程的解中出现了如下类型的表达式:
这是在等时曲线问题中出现的积分方程的情况,该问题由挪威数学家Niels Henrik
Abel (1802–1829) 解决,并于 1823 年和 1826 年发表在两篇论文中。
在 19 世纪 20 年代末及以后,卷积的使用在纯数学和应用数学相关的论文中变得更加普遍。下表按时间顺序列出了近一个世纪以来卷积的一些用途。
重要事件
1920 年后,卷积作为乘法算子进入了德国数学家 Hermann Klaus Hugo Weyl(1885–1955) 发展的群论。以Nicolas Bourbaki 为笔名的(主要为)法国数学家集体(正式名称为Nicolas Bourbaki 合作者协会)注意到了该理论在卷积未来应用中的重要性,主要是在乌克兰数学家Israil Moiseevic Gelfand (1913–2009) 发展了范数代数理论,以及在 1950-1951 年法国数学家 Laurent Moise Schwartz (1915–2002) 建立的分布理论基础中。
布尔巴基在书中还指出,匈牙利数学家阿尔弗雷德·哈尔 (Alfréd Haar, 1885–1933) 发展的
测度论和卷积理论已成为探索某些数学分析过程(如微分和积分)代数化方法的重要工具这种代数化的想法在当时并不新鲜。事实上,自德国哲学家和数学家
戈特弗里德·威廉·冯·莱布尼茨 (Gottfried Wilhelm von Leibniz, 1646–1716) 时代以来,它就已经存在于应用数学环境中。他的思想后来被许多其他应用数学家、物理学家和工程师探索和发展。例如,1950 年,出生于奥匈帝国的数学家 Jan Geniusz Mikusin'ski (1913–1987) 发表了一篇论文,三年后又写了一本书,在其中开发了一种将卷积代数化的方法。
关于追溯卷积的发展,还有更多可以说的。事实上,如果详细研究与卷积相关的文献,可以得出以下结论:
卷积在解决物理或数学相关问题的过程中自然出现。
直到 19 世纪 90 年代,卷积才得到特殊待遇。自诞生以来,卷积就与积分变换密切相关,无论是有限的(如傅里叶级数的系数)还是无限的(如傅里叶或拉普拉斯变换)。为了清楚地理解这一表述,读者可以阅读任何一本关于积分变换的书,例如傅里叶和拉普拉斯的书。
性质
图解
已知右侧第一行图中两个函数和。
首先将两个函数都用约束变量来表示,并将翻转至纵轴另一侧,从而得到右侧第二行图中和。
向函数增加一个时间偏移量,得到函数。不是常数而是自由变量,当取不同值时,能沿着轴“滑动”。如果是正值,则等于沿着轴向右(朝向)滑动数量。如果是负值,则等价于向左(朝向)滑动数量。
让从变化至,当两个函数交会时,计算交会范围中两个函数乘积的积分值。换句话说,在时间,计算函数经过权重函数施以权重后其下的面积。右侧第三、第四和第五行图中,分别是、和时的情况,从时开始有交会,例如在第四行图中,则,则,对于有着。
最后得到的波形(未包含在此图中)就是和的卷积。
相关定理
卷积定理
卷积定理指出,在适当的条件下,两个函数(或信号)的卷积的傅里叶变换,是它们的傅里叶变换的逐点乘积。更一般的说,在一个域(比如
时域)中的卷积等于在其他域(比如
频域)逐点乘法。
设两个函数和,分别具有傅里叶变换和:
卷积定理声称:
这里的算符⋅指示逐点乘法。
这一定理对
拉普拉斯变换、
双边拉普拉斯变换、
Z变换、
梅林变换和Hartley变换等各种傅里叶变换的变体同样成立。在调和分析中还可以推广到在局部紧致的
阿贝尔群上定义的
傅里叶变换。
离散卷积的计算方法
计算卷积有三种主要的方法,分别为
直接计算(Direct Method)
快速傅里叶变换(FFT)
分段卷积(sectioned convolution)
方法1是直接利用定义来计算卷积,而方法2和3都是用到了FFT来快速计算卷积。也有不需要用到FFT的作法,如使用数论变换。
方法1:直接计算
作法:利用卷积的定义
若和皆为实数信号,则需要个乘法。
若和皆为更一般性的复数信号,不使用复数乘法的快速算法,会需要个乘法;但若使用复数乘法的快速算法,则可简化至个乘法。
因此,使用定义直接计算卷积的复杂度为。
方法2:快速傅里叶变换
概念:由于两个离散信号在
时域(time domain)做卷积相当于这两个信号的离散傅里叶变换在
频域(frequency domain)做相乘:
可以看出在频域的计算较简单。
作法:因此这个方法即是先将信号从时域转成频域:
于是,最后再将频域信号转回时域,就完成了卷积的计算:
总共做了2次DFT和1次IDFT。
特别注意DFT和IDFT的点数要满足。由于DFT有快速算法FFT,所以运算量为。假设点DFT的乘法量为,和为一般性的复数信号,并使用复数乘法的快速算法,则共需要个乘法。
方法3:分段卷积
概念:将切成好几段(section),每一段分别和做卷积后,再将结果相加。
作法:先将切成每段长度为的区段(),假设共切成S段:
Section 1:
Section 2:
⋮
Section r:
⋮
Section S: ,为各个section的和
。
因此,
每一小段作卷积则是采用方法2,先将时域信号转到频域相乘,再转回时域:
。
总共只需要做点FFT次,因为只需要做一次FFT。
假设点DFT的乘法量为,和为一般性的复数信号,并使用复数乘法的快速算法,则共需要个乘法。
运算量:
运算复杂度:,和呈线性,较方法2小。
分为 Overlap-Add 和 Overlap-Save 两种方法。
分段卷积: Overlap-Add
欲做的分段卷积分,长度为,长度为,
Step 1: 将每分成一段
Step 2: 再每段点后面添加个零,变成长度
Step 3: 把添加个零,变成长度的
Step 4: 把每个的小段和做快速卷积,也就是每小段会得到长度的时域信号
Step 5: 放置第个小段的起点在位置上,
Step 6: 会发现在每一段的后面点有重叠,将所有点都相加起来,顾名思义 Overlap-Add,最后得到结果
分段卷积: Overlap-Save
欲做的分段卷积分,长度为,长度为,
Step 1: 将前面填个零
Step 2: 第一段,从新的中取到总共点当做一段,因此每小段会重复取到前一小段的点,取到新的一段全为零为止
Step 3: 把添加个零,变成长度的
Step 4: 把每个的小段和做快速卷积,也就是,每小段会得到长度的时域信号
Step 5: 对于每个小段,只会保留末端的点,因此得名 Overlap-Save
Step 6: 将所有保留的点合再一起,得到最后结果
研究现状
卷积神经网络
卷积层可以产生一组平行的特征图(feature map),它通过在输入图像上滑动不同的卷积核并执行一定的运算而组成。此外,在每一个滑动的位置上,卷积核与输入图像之间会执行一个元素对应乘积并求和的运算以将感受野(receptive field)内的信息投影到特征图中的一个元素。这一滑动的过程可称为步幅 Z_s,步幅 Z_s 是控制输出特征图尺寸的一个因素。卷积核的尺寸要比输入图像小得多,且重叠或平行地作用于输入图像中,一张特征图中的所有元素都是通过一个卷积核计算得出的,也即一张特征图共享了相同的权重和偏置项。
应用
卷积在科学、工程和数学上都有很多应用:
代数中,整数乘法和多项式乘法都是卷积。
卷积神经网络应用了多重级联的卷积核心,它被用于机器视觉和人工智能,尽管在多数情况下实际上用的是互相关而非卷积。
在非人工智能的图像处理中,用作图像模糊、锐化、边缘检测。
统计学中,加权的滑动平均是一种卷积。
概率论中,两个统计独立变量与的和的
概率密度函数是与的概率密度函数的卷积。
声学中,回声可以用源声与一个反映各种反射效应的函数的卷积表示。
电子工程与信号处理中,任一个线性系统的输出都可以通过将输入信号与系统函数(系统的
冲激响应)做卷积获得。
物理学中,任何一个
线性系统(符合
叠加原理)都存在卷积。