【卷积本质】你不得不知道的卷积理解
python进阶教程
机器学习
深度学习
长按二维码关注
一、从系统的角度看待卷积过程
1、物理层面的系统
所谓的系统从物理层面上说指的是一个可以对输入信号做出响应,然后输出相关信号的一套“物理设备”。
即 输出=输入*系统(响应)
2、数学层面的系统
系统在数学层面上仅仅是一种“变换”,说得更直白一点就是输入到输出的一个映射关系。
3、从系统说起,看卷积的形象描述
任何一个系统,都有其自身的特性(传递函数)。这包含两方面的含义:一方面是系统静止时(零状态),无论外部输入的激励信号是什么,系统的输出都只会以一定的规律“缓慢地”对输入做出响应;另一方面的意思是,当外部输入信号停止时,系统也只会按照自己内在的规律逐渐衰减到零(我们假定系统是稳定的)。将这两方面的意思结合起来:系统的输出只按系统自身的规律对输入做出响应。
如果在起始阶段,系统突然受到一个输入,但瞬间就又消失了(一个冲击信号)。那么系统会怎么反应呢?多半会是下图的样子,即信号突然受到某一个“刺激”,然后章得很高,等到刺激消失,又慢慢的降下来了(我们以一个一阶系统为例):
系统从某个值开始,以“一定的”规律慢慢衰减到零。但这个规律是什么呢?有没有精确的数学表达式?大神们的研究告诉我们:这个衰减的规律可以用一个叫做"传递函数"的公式来描述。每个系统的传递函数都不一样,所以上面的衰减曲线形状也是不一样的,但它是不会变的,是系统的固有特性,一个叫做拉普拉斯的人搞了一套方法可以求解出来。
详情可参考:复频域分析
如果这个系统在衰减的过程中,突然又受到一个脉冲,那系统会是什么反应?(假设在第2秒的时候又有了一个快闪的冲击来了)。
从图中可以看出,又一个完全一样的衰减过程叠加到了第一个衰减过程的半道上,由于有第一个作为垫底的,所以整体的幅值略微高了一点,然后再慢慢地衰减下去,整个的衰减过程也略微地延长了一点时间。
那如果是以固定的间隔输入五个脉冲呢?变化趋势如下图(这些都是用MATLAB仿真出来的,不是我瞎画的哦)。
更进一步,如果脉冲再多一点,间隔再小一点,系统的响应会是什么呢?
这就好像游戏中常见的战斗:受伤的士兵在不断流血,如果不管他就会死掉,而在战场上唯一能做的就是不断地给他用血包输血,那最终能坚持多久就要看有多少个血包了,如果不幸血包的供给终止(输入信号结束),那你的勇士就会以“一定的规律”流尽最后一滴血而挂掉。
这样一个不断“失血”又不断“补血”的过程,就是卷积(不要被这个名字迷惑)。
进一步讨论一下输入信号。更一般地,如果系统的输入不是一连串的脉冲,而是一个连续信号的话,那结果会是什么呢?
学过高等数学的同学应该已经猜出来了,系统的输出应该是某种积分的结果。我们只需要计算出这个积分就可以了。而且,显而易见地,输入信号不同,输出结果迥异。事实正是如此。
实际上,这个积分很不简单,它描述了一个动态过程,表达了系统不断衰减同时又不断受到激励的综合结果——这就是卷积的本质含义。
上面的这些内容,应该不难理解,其实这就是卷积的本质,而难搞懂的是卷积的算法。
上述动态过程的数学计算,是令人瞠目结舌。大致方法是将激励信号进行反转(这是最不能让人理解的部分,将一个以时间为自变量的信号反转,难道是要让时光倒流?),然后与系统相乘,再积分,数学家们从纯数学函数的角度出发,给这一算法起了一个貌似形象的名字“卷积”。
数学家们最关心的是逻辑的严密性,他们玩的就是抽象,以自然科学里的哲学家自居,他们编写的数学教科书从来都只谈证明,只谈解空间,只谈严密性,任何具象的东西写进教科书好像都掉价似的,我严重怀疑他们写书的目的就是为了让我们看不懂:)。
对于大多数工科学生来说,这个卷积的算法我们就别试图去将它具体的计算过程与物理意义对应了,什么先反转、相乘、平移、叠加,忘掉它!数学家们天真地以为“卷积”这个名字能让我们更形象化地理解这一算法,其实除了把人搞晕外,一点意义都没有,因为物理世界中是没有任何一个系统能这样“卷”出来,它和现实世界没有一毛钱关系,纯粹是一种数学表达。如果非要和物理世界联系起来,只能这样描述:当信号输入给系统后的某个时间里,我们看到的系统的输出中,输入信号早期的部分影响较小,而后期部分影响较大。
我们要做的是代入公式计算就好了,不要妄图通过计算过程来理解卷积的本身。 重要的是要理解前面讲的卷积的本质。只要细心去找,这样的例子其实生活中还是有很多的,去找到它们就能更彻底地帮你理解这一动态过程。
二、卷积的数学理解
1、连续卷积
卷积是分析数学中一种重要的数学运算。
设:f(x),g(x)是R上的两个可积函数,作积分:
可以证明,关于几乎所有的实数x,上述积分是存在的。这样,随着x的不同取值,这个积分就定义了一个新函数h(x),称为函数f(x)与g(x)的卷积,记为h(x)=(f*g)(x)=f(x)*g(x)。*称之为卷积符号。
如何理解:
积分是对τ进行积分,得到的结果却是一个关于x的函数h(x),这是为什么,因为上面这个积分实际上是针对每一个不同的x的取值,比如x去1、2、3、4...n等等的时候,会得到n个不同的积分值h(1)、h(2)、h(3)、h(4)、....h(n)等,
在物理系统中,f(x)称之为输入函数、g(x)称之为激励函数、冲激函数等,h(x)称之为输出函数,这不就是将f(x)转化成h(x)的过程吗,只不过为了区别,将f(x)写成f(τ)而已,这与字母是没有关系的。
那这卷积有什么用呢?
由卷积得到的函数h=f*g一般要比f和g都光滑。特别当g为具有紧致集的光滑函数,f为局部可积时,它们的卷积f * g也是光滑函数。利用这一性质,对于任意的可积函数f,都可以简单地构造出一列逼近于f的光滑函数列fs,这种方法称为函数的光滑化或正则化。
2、离散卷积
我们在设计程序时,更多的是使用离散卷积。
卷积是两个变量在某范围内相乘后求和的结果。如果卷积的变量是序列x(n)和h(n),则卷积的结果
其中星号*表示卷积。当时序n=0时,序列h(-i)是h(i)的时序i取反的结果;时序取反使得h(i)以纵轴为中心翻转180度,所以这种相乘后求和的计算法称为卷积和,简称卷积。另外,n是使h(-i)位移的量,不同的n对应不同的卷积结果。
3、卷积总结
4、关于卷积的计算步骤,后面会讲到,本文只将相关的理解。
三、卷积定理
卷积定理指出,函数卷积的傅里叶变换是函数傅里叶变换的乘积。即,一个域中的卷积的傅里叶变换相当于另一个域中的乘积,例如时域中的卷积就对应于频域中的乘积。
F(g(x)*f(x)) = F(g(x))F(f(x))
其中F表示的是傅里叶变换。
这一定理对拉普拉斯变换、双边拉普拉斯变换、Z变换、Mellin变换和Hartley变换等各种傅里叶变换的变体同样成立。
四、卷积的应用层面
卷积在数学领域最广泛的应用是在分析数学与积分变换中的应用,但是其实在下面的一些领域去理解“卷积”,会更加通俗易懂。
(1)统计学中,加权的滑动平均是一种卷积。
(2)概率论中,两个统计独立变量X与Y的和的概率密度函数是X与Y的概率密度函数的卷积。
(3)电子工程与信号处理中,任一个线性系统的输出都可以通过将输入信号与系统函数(系统的冲激响应)做卷积获得。
(4)声学中,回声可以用源声与一个反映各种反射效应的函数的卷积表示。
(5)物理学中,任何一个线性系统(符合叠加原理)都存在卷积。
本文以第(2)为例子加以说明
比如我又两个筛子,现在要求两个筛子的投掷点数之和为4的概率,即我们要求
P(x,g).
设第一个筛子的概率为f(n),即f(1)、f(2)、f(3)、f(4)、f(5)、f(6)。
设第一个筛子的概率为g(n),即g(1)、g(2)、g(3)、g(4)、g(5)、g(6)。
则P(x+g=4)=f(1)g(3)+f(2)g(2)+f(3)g(1)
上面的这个我们大家都会,则写成离散卷积的形式呢?
怎么样,现在是不是更好的理解(2)中那句话的含义了。
事实上,深度学习中,常见的卷积神经网络并不是真正意义上的卷积,只不过它的运算过程与卷局的运算过程类似,也有着相同的根源,故而如此命名。
推 荐 阅 读
【送书福利】15本纸质书籍大放送,还包邮哦!
深度学习——各种优化器算法Optimizer详解
【模型压缩】关于MobileNet和ShuffleNet v1v2一些理解
有趣的灵魂终究会相遇
好看的皮囊风干在路上
扫码即可相遇哦