在ConvNets中,构建卷积神经网络的理解,不涉及任何重大的数学运算。进一步深入的话,死活都得理解卷积的数学原理。
如果大家只是想理解卷积神经网络,粗略领会卷积计算就足够啦。但是,本系列的目标是带领大家走在卷积神经网络的前沿并探索新的选择(可能)。为达到这个目标,就必须非常深入的领悟卷积的数学原理。
谢天谢地,只需要举几个例子,卷积就是清晰的概念。
想象,把一个球从某个高处丢落到地面,此时球仅做一维运动。球滚动的距离是多么相似啊!
一起分解下:
第一次掉落,球滚动到距离起始点
之后,把球以另外的高度——就是上一次高度——丢落,这次球滚动到距离此次起始点
如果固定第一次跌落的结果,大家知道的,球行进一段距离
把上述指代的数量给定,举个例子。想让球两次跌落行进距离为
然而,这并非是获取总距离
概率分别表示为
为了找到球行进达到距离 + f(1)!\cdot! g(2) + f(2)!\cdot! g(1)~~...$$
大家已经知道每个满足
事实证明,所做的正是卷积!
特别地, $$ 和 $$ 的卷积,以定义好
如果用
上式是卷积的标准定义。
为使这个公式更具体(concrete),大家可以思考球落脚点的关系。第一次跌落以
为得到卷积结果,考虑全部中间的点。
这儿给出一种很美的花招让思考卷积更容易。
首先,观察。假定球行进距离起始位置距离为
接着,之后,球自落脚点回滚一段距离
如果大家知道球在第二次跌落后落脚点距离最初起始位置距离是
上图表明,这个概率是
现在,考虑球滚落到距离最初起始位置为
大家清楚第一次掉落在距离起始点为
累加所有
这种方法的优势就是允许大家在单张图上可视化球行进总距离为
通过移动下半部分,就可以做到。这样大家以整体领悟卷积。
举个例子,可以看到峰值的分布排列。
并且以分布间的交集收缩变小。
通过在动画中运用这个窍门,可视化理解卷积真的成为可能。
下图展示两个窗口函数之间的卷积过程:
站着这个视角,很多事情变得更直观。
大家来考虑一个非概率的例子。卷积某些时候用于音频合成,如可能用有两个尖峰其余静默的函数、或创造回音。因为双尖峰函数滑动,一个尖峰首先实时碰到一个点,并叠加信号到输出声音,之后另一个尖峰跟随,添加第二个延迟的副本。
卷积是极其一般的概念,大家也可以应用到更多维度。
再次考虑一个球跌落例子,先在,球跌落后不只滚到到一个方向,而是两个。
和之前一样,卷积表示为:
不同的是,现在的
或以标准定义的方式呈现:
正如一维卷积,大家可以把二维卷积想象成在一个函数上滑动另一个函数,乘和加。
常用的就是图像处理,可以认为图像就是一个二维函数,很多重要的图像变换就是把图像函数和一个局部的小函数(卷积核)作卷积(convolve)。
卷积核滑动到图像的每一个位置、计算出一个新的像素,即卷积核所覆盖的像素加权和。
例如,一个3x3的平均卷积核,可以让图像模糊。卷积核通过将所覆盖的九个像素的均值作为卷积核中心对应的像素。
还可以通过把毗邻的像素其中一个取反别的取零来检测边缘,就是让相邻像素作差。当相邻像素值接近,给出近似零。有边缘的地方,垂直边界方向的相邻像素差别很大。
查看GIMP有很多别的样例。
本文介绍了一堆数学机制,却可能并不清晰。显然卷积是概率论和计算机图形中有用的工具,可是大家从卷积神经网络短语的数据卷积重获取到什么?
首先,卷积是描述网络连线非常强大的语言,截至目前涉及的样例还没复杂到因此获益(变的清晰),然而,卷积可以拜托大量记账簿式的混乱。
其次,卷积与生俱来意义重大的实现应用,很多提供高效卷积运行时的库,进一步讲,因为朴素卷积大致是
最后,事实上基于多GPU的并行高效卷积实现在计算机识别领域近期已经取得进展。