我在学习机器学习和图像处理的过程中,经常会遇到卷积这个概念。我每次遇到这个概念都有点似懂非懂的样子。有时候清楚它的直观解释,但又搞不清公式中是如何体现的。究其原因,还是我没有完全搞懂这个概念。于是我在网上找了很多文章来研究,终于有了一点比较直观的印象,这里就趁热把我理解的总结一下,不足之处敬请指正。
虽然很多文章都在介绍卷积的理论和卷积神经网络的架构,但对其来源背景都不甚了了,我在这归纳一下我查到的资料。
文献来源:
-A History of the Convolution Operation
卷积的概念来源于17世纪的瑞士数学天才欧拉Leonhard Euler(1707-1783),他双目失明,但疾病没有阻碍他对于数学的贡献,他在那些日子里完成了一本关于积分微积分和以定积分求解微分方程的巨著。
he suffered complete blindness, but this illness did not prevent him from contributing to mathematics. In fact, in those years, he wrote a memorable book about integral calculus and the solution of differential equations (DEs) by certain definite integrals.
∫[K(u)+Q(x)]nP(x)dx∫[K(u)+Q(x)]nP(x)dx (1)
通过将K(u)替换为u、Q(x)替换为x,或将K(u)替换为-u、Q(x)替换为x,得到与流体力学、电气工程、热传导、信号和图像处理、线性声学、机械工程、光学、概率与统计等领域相关的用积分变换求解微分更通用的形式:
∫ιf(a)g(x−a)da∫ιf(a)g(x−a)da
因此,这项操作在某种程度上是输入函数和另一个输入函数的revolving。特别是在数学、物理和相关领域,通常用于指定这样revolving的动词是convolve,这个动词出自拉丁语系的con和volve˜re,这分别意味着“一起”和“卷起”,因此convolving这个动作被称为卷积convolution。
Therefore, the operation is in some sense the “revolving” of one of the input functions with the other one. Particularly in mathematics, physics, and related areas, the verb commonly used to designate such a revolving is “to convolve.” This verb comes from the Latin words con and volve˘re, which mean “together” and “roll up,” respectively; thus, convolve means “roll up together.” Accordingly, the action of convolving is called convolution.
卷积是通过两个函数f和g生成第三个函数的一种数学运算,卷积结果可以看作是函数f的修改(过滤)版本。在这个定义中,函数g被称为过滤器filter、卷积函数或卷积核。
Convolution is an operation on two functions f and g, which produces a third function that can be interpreted as a modified (“filtered”) version of f. In this interpretation we call g the filter.
卷积是任何物理设备或计算过程执行平滑或锐化的核心,应用于图像等二维函数,它也可用于边缘发现、特征检测、运动检测、图像检测和无数其他任务。
Applied to two dimensional functions like images, it’s also useful for edge finding, feature detection, motion detection, image matching, and countless other tasks.
图解卷积参考博客:
-我对卷积的理解-Mengqi’s blog
-Understanding Convolutions
-斯坦福大学CS178课程资料(有一个卷积的在线Applet演示)
连续卷积
函数f和g是定义在R_{n}上关于连续变量x的连续函数,f和g的卷积记做f*g,它是其中一个函数经过翻转并平移后,与另一个函数乘积的积分,是一个对平移量的函数。
f(x)∗g(x)=∫+∞−∞f(τ)·g(x−τ)dτf(x)∗g(x)=∫−∞+∞f(τ)·g(x−τ)dτ
离散卷积
对于定义在整数Z上的离散变量x函数f,g,卷积的定义是:
f[x]∗g[x]=∑−∞+∞f[k]·g[x−k]=∑−∞+∞f[x−k]·g[k]f[x]∗g[x]=∑−∞+∞f[k]·g[x−k]=∑−∞+∞f[x−k]·g[k]
二维卷积
二维卷积常用于图像领域,其定义如下:
f(x,y)∗g(x,y)=∫τ1=−∞+∞∫τ2=−∞+∞f(τ1,τ2)·g(x−τ1,x−τ2)dτ1dτ2f(x,y)∗g(x,y)=∫τ1=−∞+∞∫τ2=−∞+∞f(τ1,τ2)·g(x−τ1,x−τ2)dτ1dτ2
二维卷积在图像中的效果是对图像每个元素的邻域(邻域大小就是卷积核的大小)加权求和得到该元素点的输出值。卷积核在这里是作为一个权重表来使用的。
卷积操作:翻转、平移、乘积、求和。 卷积运算:卷积运算不是矩阵乘积运算,而是一种矩阵对应位置相乘相加的加权运算。
卷积运算参考文献:-什么!卷积要旋转180度?!
全卷积(Full Convolution):全卷积做padding就是对矩阵边界每个元素的邻域(邻域大小就是卷积核的大小)补充0,使矩阵每个元素值都可以被卷积函数平移到。
卷积核,相当于一个权重算子,起到一种加权作用,距离当前点越近的权重越大,距离当前越远的权重越小,类似一个“逆推”的过程。
卷积,就是用来求一个衰减函数g与另一个函数f乘积和的。若这两个函数是离散,则卷积是∑求和;若这两个函数连续,则卷积是∫求和。
(1)在信号领域,卷积函数是一个随时间平移强度逐渐衰减的脉冲信号。
(2)图像:卷积是一种积分运算,用来求两个曲线重叠区域面积,可以看作加权求和,可以用来消除噪声、特征增强。
加权求和,权重w的和为1,以这些权重相乘相加。
卷积的参考文献我都嵌入到博客内容中,转载文章也已注明来源。
本文中所有文字、图片版权均属本人所有,如需转载请注明来源。 本文作者:于永胜-Wellington Yu 本文链接:https://github.com/yuyongsheng1990/yuyongsheng1990.github.io/blob/master/_posts/2019-03-01-深度学习之数学基础:卷积.md