本文的目的是深入的理解卷积,通过一些示例,卷积将会成为一个非常简单的想法.
抛球的经验
想象一下,我们将一个球从某个高度掉落到地面上,球在该地面只能在一个方向上运动,如果您将球放下然后从其着陆点上方再次放下,球可能会前进的距离
让我们分解一下。在第一次下落之后,它将以概率
现在,在第一次下落之后,我们将球捡起并从其首次着陆点上方的另一个高度下落。球从新起点滚动
如果我们确定了第一个的结果,我们就知道了球的移动距离
让我们考虑一个具体的离散示例。 我们希望总距离
但是,这不是我们达到
这个概率分别是
为了找出球到达总距离
我们已经知道,对于每种情况,
事实证明,我们正在做卷积!特别地,定义在
如果我们用
这是卷积的标准定义。
为了更具体一点,我们可以考虑球可能着陆的位置。 在第一次下降之后,它将以概率
为了得到卷积,我们考虑所有中间位置。
可视化卷积
有一个很好的技巧,可以帮助人们更轻松地思考卷积。
首先,观察。 假设一个球从其起点降落一定距离
如果我们知道球在第二次下降后落在位置
因此,先前位置为
现在,考虑每个中间位置有助于球最终降落在
对所有
这种方法的优点是,它使我们可以在单个图片中可视化卷积在值
例如,我们可以看到分布对齐时达到峰值。
且随着分布之间的交点变小而缩小。
过在动画中使用此技巧,实际上可以从视觉上理解卷积。
下面,我们可以看到两个框函数的卷积:
有了这种观点,很多事情就会变得更加直观。
让我们考虑一个非概率示例。 卷积有时在音频处理中使用。 例如,一个函数可能会使用其中有两个尖峰但在其他所有地方为零的函数来创建回波。 当我们的双尖峰功能滑动时,一个尖峰首先击中一个时间点,将该信号添加到输出声音中,然后又出现另一个尖峰,并添加第二个延迟副本。
高维卷积
卷积是一个非常笼统的想法。我们还可以将它们用于更大的尺寸。
让我们再次考虑一个落球的例子。现在,随着位置的下降,它的位置不仅在一维,而在二维。
卷积与以前相同:
但是,现在
或在标准定义中:
就像一维卷积一样,我们可以将二维卷积视为将一个函数滑动到另一个函数之上,相乘和相加。
一种常见的应用是图像处理。我们可以将图像视为二维函数。许多重要的图像转换都是卷积,您可以在其中将图像函数与一个非常小的局部函数(称为 “卷积核”)进行卷积。
卷积核滑动到图像的每个位置,并计算一个新像素作为其浮动像素的加权和。
例如,通过平均 3x3 像素矩阵,我们可以使图像模糊。 为此,我们的内核在框中的每个像素上取值
我们还可以通过在两个相邻像素上取值
卷积神经网络
那么,卷积与卷积神经网络有何关系?
考虑一个具有输入
正如我们观察到的,我们可以用输入来描述输出:
通常,A 将是多个神经元。 但是假设它只是一个神经元。
回想一下,神经网络中的典型神经元描述为:
其中
卷积将为我们处理的是神经元的这种连线,描述了所有权重以及哪些权重相同。
通常,我们一次而不是单独描述一个层中的所有神经元。 诀窍是要有一个权重矩阵
例如,我们得到:
矩阵的每一行都描述了将神经元连接到其输入的权重。
但是,返回到卷积层,因为同一神经元有多个副本,所以许多权重出现在多个位置。
对应于等式:
因此,通常,权重矩阵会将每个输入连接到具有不同权重的每个神经元:
像上面的卷积层的矩阵看起来很不一样。 相同的权重出现在多个位置中。 而且由于神经元没有连接到许多可能的输入,因此存在很多零。
与上述矩阵相乘与与
二维卷积层呢?
二维卷积层的布线对应于二维卷积。
考虑上面的示例,通过使用卷积来检测图像边缘,方法是在周围滑动一个内核并将其应用于每个面片。 就像这样,卷积层会将神经元应用于图像的每个 patch。
结论
我们在此博客文章中介绍了许多数学机制,但是获得的结果可能并不明显。 卷积显然是概率论和计算机图形学中的有用工具,但是从卷积的角度说卷积神经网络有什么好处呢?
第一个优点是我们拥有一些非常强大的语言来描述网络的布线。 到目前为止,我们所处理的示例还不够复杂,以至于无法清楚地看到这种好处,但是通过卷积可以使我们摆脱大量令人不快的簿记工作。
其次,卷积具有明显的实施优势。 许多库提供高效的卷积例程。 此外,尽管卷积天真地看起来是
实际上,在 GPU 上使用高效并行卷积实现对于计算机视觉的最新进展至关重要。
参考文献
[English] Understanding Convolutions