卷积神经网络背后的数学

自动驾驶、医疗和零售是计算机视觉的重要应用,这是曾经被认为是不可能事情的领域。今天,自驾车或自动杂货店的梦想不再那么具有未来感。事实上,我们每天都在使用计算机视觉:当我们用手机解锁手机或者在将照片发布到社交媒体上之前自动修饰照片时。

卷积神经网络可能是这一巨大成功背后最重要的因素。配方将拓宽我们对神经网络如何与CCN背后的思想一起工作的理解。

传统密集神经网络的局限性

我们了解所谓的密集连接的神经网络。这些网络的神经元被分成组,形成连续的层。每个这样的单元连接到来自相邻层的每个单个神经元。这种架构的一个例子如下图所示。

图1.密集连接的神经网络架构

当我们基于一组有限的定义特征解决分类问题时,这种方法很有效 - 例如,我们根据他在比赛期间记录的统计数据预测足球运动员的位置。但是,使用照片时情况会变得更加复杂。

当然,我们可以将每个像素的亮度视为一个单独的特征,并将其作为输入传递给我们的密集网络。不幸的是,为了使其适用于典型的智能手机照片,我们的网络必须包含数十甚至数亿个神经元。另一方面,我们可以缩小照片,但在此过程中我们会丢失有价值的信息。

我们立即看到传统策略对我们没有任何作用,我们需要一种新的聪明方法来尽可能多地使用数据,但同时减少必要的计算和参数的数量,这正是适合CNN闪亮进场的时候。

数码照片数据结构

开始花一点时间来解释数字图像的存储方式。大多数人可能都意识到它们实际上是巨大的数字矩阵。每个这样的数字对应于单个像素的亮度。在RGB模型中,彩色图像实际上由对应于三个颜色通道的三个这样的矩阵组成 - 红色,绿色和蓝色。在黑白图像中,我们只需要一个矩阵。这些矩阵中的每一个都存储从0到255的值。该范围是存储关于图像的信息(256个值完全适合1个字节)的效率与人眼的灵敏度(我们区分有限数量的阴影)之间的折衷。

图2.数字图像背后的数据结构

卷积

Kernel卷积不仅用于CNN,还是许多其他计算机视觉算法的关键要素。这是一个我们采用一个小数字矩阵(卷积核)的过程,我们将它传递给我们的图像并根据过滤器的值对其进行转换。根据以下公式计算后续特征映射值,其中输入图像由f表示,我们的核由h表示。结果矩阵的行和列索引分别用m和n标记。

图3.内核卷积示例

将滤镜放在选定的像素上后,我们从卷积核中取出每个值,并将它们与图像中的相应值成对相乘。最后,我们总结了所有内容,并将结果放在输出要素图中的正确位置。上面我们可以看到这样的操作在微观尺度上看起来如何,但更有趣的是,我们可以通过在完整图像上执行它来实现。图4显示了使用几个不同滤波器的卷积结果。

图4.使用内核卷积查找边缘

有效且相同的卷积

正如我们在图3中看到的,当我们使用3x3内核对6x6图像执行卷积时,我们得到4x4特征映射。这是因为我们只有16个独特的位置可以将滤镜放在这张图片中。由于每次执行卷积时我们的图像都会缩小,因此在我们的图像完全消失之前,我们只能进行有限次数的渲染。更重要的是,如果我们看看我们的滤波器如何在图像中移动,我们会发现位于边缘的像素产生的影响远小于图像中心的像素。这样我们就失去了图片中包含的一些信息。可以在下面看到像素的位置如何改变其对要素图的影响。

图5.像素位置的影响

为了解决这两个问题,我们可以使用额外的边框填充图像。例如,如果我们使用1像素填充,我们将照片的大小增加到8x8,因此使用3x3滤镜的卷积输出将为6x6。通常在实践中我们用零作为额外的填充。根据我们是否使用填充,我们正在处理两种类型的卷积 - 有效和相同。命名是非常不幸的,所以为了清晰起见:有效 - 意味着我们使用原始图像,相同 - 我们使用它周围的边框,以便输入和输出的图像大小相同。在第二种情况下,填充宽度应满足以下等式,其中p是填充,f是滤波器尺寸(通常是奇数)。

跨步卷积

图6.跨步卷积的示例

在前面的例子中,我们总是将内核移动一个像素。但是,步长也可以视为卷积层超参数之一。在图6中,我们可以看到如果我们使用更大的步幅,卷积是如何形成的。在设计我们的CNN架构时,如果我们希望感知字段重叠较少或者我们想要特征贴图的较小空间维度,我们可以决定增加步骤。输出矩阵的尺寸 - 考虑填充和步幅 - 可以使用以下公式计算。

过渡到第三个维度

控制卷积核数量是一个非常重要的概念,这将使我们不仅要与彩色图像的工作,但更重要的是单层中应用多个滤波器。第一个重要规则是滤波器和要应用它的图像必须具有相同数量的通道。基本上,我们非常类似于图3中的示例,但是这次我们将三维空间中的值对相乘。如果我们想在同一个图像上使用多个滤镜,我们分别对每个滤镜执行卷积,将结果叠加在另一个上面并将它们组合成一个整体。接收张量的尺寸(可以称为我们的3D矩阵)满足以下等式,其中:n - 图像大小,f - 滤波器大小,nc - 图像中的通道数,p-使用的填充,s- 使用的步幅,nf - 滤波器的数量。

图7.卷上的卷积

卷积层

终于到了使用我们今天所学到的一切,并建立我们的CNN层的时候了。我们的方法几乎与我们用于密集连接的神经网络的方法相同,唯一的区别是不是使用简单的矩阵乘法,而是这次我们将使用卷积。前向传播包括两个步骤。第一个是计算中间值 Z,它是由前一层的输入数据与W张量(包含滤波器)卷积后得到的,然后加上偏差b。第二个是对我们的中间值应用非线性激活函数(我们的激活用g表示)。矩阵方程将在下面找到合适的数学公式。

图8.张量尺寸

连接切割和参数共享

在文章的开头我提到由于需要学习大量的参数,密集连接的神经网络在处理图像方面很差。现在我们已经了解了卷积的全部内容,让我们考虑它如何允许我们优化计算。在下图中,2D卷积已经以略微不同的方式可视化 - 用数字1-9标记的神经元形成接收后续像素的亮度的输入层,而单元AD表示计算的特征地图元素。最后但同样重要的是,I-IV是来自内核的后续值 - 必须学习这些值。

图9.连接切割和参数共享

现在,让我们关注卷积层的两个非常重要的属性。首先,你可以看到并非两个连续层中的所有神经元都相互连接。例如,单元1仅影响A的值。其次,我们看到一些神经元共享相同的权重。这两个属性都意味着我们学习的参数要少得多。顺便说一下,值得注意的是,滤波器中的单个值会影响要素图的每个元素,在反向传播中它将是至关重要的。

卷积层反向传播

如果你试图从头开始编写自己的神经网络,正向传播是不到一半的成功。当你想回去时,真正的乐趣就开始了。如今,我们不需要为反向传播而烦恼 - 深度学习框架为我们做了,但我觉得值得了解幕后发生的事情。就像在密集连接的神经网络中一样,我们的目标是计算导数,然后在一个称为梯度下降的过程中使用它们,更新我们的参数值。

在我们的计算中,我们将使用链式法则我们想要评估参数变化对结果特征图的影响,然后评估最终结果。本文将使用的以下的数学符号。使用这种表示法时,始终意味着成本函数的偏导数。

图10.前向和后向传播中单个卷积层的输入和输出数据

我们的任务是计算dW [1]db [l] -它们是与当前层参数相关的导数,以及dA [l -1]的值- 它将被传递给前一层。如图10所示,我们收到dA [l]作为输入。当然,张量dWWdbb以及dAA的尺寸分别相同。第一步是获得中间值dZ [1]通过将激活函数的导数应用于输入张量。根据链规则,此操作的结果将在以后使用。

现在,我们需要处理卷积本身的向后传播,为了实现这个目标,我们将利用一个称为完全卷积的矩阵运算 - 下面将对此进行可视化。请注意,在此过程中我们使用卷积内核,我们之前旋转了180度。该操作可以通过以下公式描述,其中滤波器由W表示,并且dZ [m,n]是属于从前一层获得的偏导数的标量。

图11.完全卷积

池化层

细胞神经网络经常使用池化层。它们主要用于减小张量的大小并加快计算速度。这个层很简单 - 我们需要将图像划分到不同的区域,然后对每个部分执行一些操作。例如,对于Max Pool Layer,我们从每个区域中选择一个最大值,并将其放在输出中的相应位置。与卷积层的情况一样,我们有两个超参数可用:滤波器大小和步幅。最后但并非最不重要的是,如果要为多通道图像执行池化,则应分别完成每个通道进行池化。

图12.最大池化示例

池化层反向传播

接下来,我们将仅讨论最大池反向传播,但我们将学习的规则稍作调整,适用于所有类型的池层。由于在这种类型的层中,我们没有任何我们必须更新的参数,我们的任务只是适当地分配梯度。我们记得,在最大池的前向传播中,我们从每个区域中选择最大值并将它们传输到下一层。因此很明显,在反向传播期间,梯度不应影响未包括在前向通道中的矩阵元素。在实践中,这是通过创建一个掩码来实现的,该掩码记住第一阶段中使用的值的位置,然后可以使用该掩码来传递梯度。

图13.最大池向后传递

(0)

相关推荐

  • cnn中权值共享理解

    第一步,针对一个神经元,一幅640*360图像,一个神经元要对应640*360个像素点,即一个神经元对应全局图像,全连接的话一个神经元就有640*360个参数: 第二步,然而,图像的空间联系是局部的, ...

  • 人工神经网络背后的数学原理!

     Datawhale干货  作者:贾博文,浙江大学,Datawhale原创作者 本文约8000字,建议阅读22分钟 审稿人:阿泽,Datawhale成员,复旦大学计算机硕士,目前在携程担任高级算法工程 ...

  • 神经网络背后的简单数学

    > Image by Alina Grubnyak on Unsplash 神经网络是将数据映射到信息的通用逼近器.这是什么意思?神经网络可以解决任何问题吗?神经网络是一种经过验证的解决方案,可 ...

  • 图解:卷积神经网络数学原理解析

    作者丨Piotr Skalski 来源丨AI有道@微信公众号 翻译 | 通夜(中山大学).had_in(电子科技大学) 原标题:Gentle Dive into Math Behind Convolu ...

  • 收藏 | 卷积神经网络的数学原理

    仅做学术分享,如有侵权,联系删除 转载于 :深度学习这件小事 计算机视觉技术在日常生活中有着非常普遍的应用:发朋友圈之前自动修图.网上购物时刷脸支付--在这一系列成功的应用背后,卷积神经网络功不可没. ...

  • 范畴论:数学背后的数学

    在19世纪末,数学经历了一次彻底的转变.在大卫·希尔伯特等人的带领下,一群新生代数学家对抽象思想更感兴趣,而不是专注于解决实际问题.这种哲学上的差异最初因缺乏实用性而饱受批评,但却导致了大量有趣的结果 ...

  • 带动画效果的卷积神经网络的讲解.pptx

    刚在学习深度学习的时候,对卷积神经网络还比较模糊,后来发现一位黄海广老师的卷积神经网络课件,带很多动画,把卷积神经网络讲得很清楚.值得推荐. 文末提供原版的ppt的下载方式,ppt效果见下图: 下载方 ...

  • 粒子自旋背后的数学秘密

    我想问大家一个问题. 牛顿是"发明"了万有引力定律,还是"发现"了万有引力定律?爱因斯坦是"发明"了相对论,还是"发现" ...

  • 卷积神经网络是如何实现不变性特征提取的?

    转载于 :OpenCV学堂 图像特征 传统的图像特征提取(特征工程)主要是基于各种先验模型,通过提取图像关键点.生成描述子特征数据.进行数据匹配或者机器学习方法对特征数据二分类/多分类实现图像的对象检 ...

  • 深度信号处理:利用卷积神经网络测量距离

    在信号处理中,有时需要测量信号某些特征(例如峰)之间的水平距离. 一个很好的例子就是解释心电图(ECG),这在很大程度上取决于测量距离. 我们将考虑下图中只有两个峰的平滑信号的一个样例. 解决这个问题 ...