首页 > 编程知识 正文

cnn卷积神经网络的优点,cnn卷积神经网络详解

时间:2023-05-03 10:58:50 阅读:32967 作者:2318

作者丨南柯一梦宁沈沦@知乎授权) ) ) ) ) ) 652

来源丨https://砖局域网. zhi Hu.com/p/61898234

编辑丨极市平台

导读

本文从直觉和公式两个方面介绍CNN反向传播算法的推导。

多层探测器反向传播的数学推导主要由公式表示,在全连接神经网络中不复杂,即使是纯公式也容易理解。 卷积神经网络比较复杂,本文从直觉和公式两个方面介绍CNN反向传播算法的推导。

首先,让我介绍一种分析增量误差反向传播过程的简单方法。 要将具有神经网络l 1层的节点的增量误差传递到l层,请查找前向传播时l 1层的该节点与第l层的哪个节点有关,权重是多少。 反向传播时三角误差以相同的权重传播。

假设第l层有节点a,第l 1层有节点b。 两个节点之间的连接权重为w。 在前向传播的情况下,节点a对节点b的影响是显着的。 对于反向传播,节点b的增量误差对节点a的增量误差的影响如下: 这些系数都是两个节点之间的连接权重。

简要介绍卷积神经网络的前向传播过程在理解卷积神经网络的反向传播之前,需要简要回顾卷积、池化以及卷积神经网络的前向传播过程。

卷积运算在卷积神经网络中有介绍。 卷积运算不是严格数学意义上的卷积。 深度学习中的卷积实际上是信号处理和图像处理中的互相关运算,两者之间存在细微的差异。 深度学习中的卷积(严格地说,互相关)是指卷积内核扫描原始图像,并将它们乘以相应的元素并将其相加,从而减小新图像的大小。 通过下图可以直观理解。 将输入图像的大小设为m行、n列,将卷积内核的大小设为filter_sizefilter_size,将输出图像的大小设为(m-filter_size 1) ) m-filter_size 1

图源http://ufl dl.Stanford.edu/tutorial/supervised/featureextractionusingconvolution /是全连接神经网络,图像数据和特征为列向量在卷积神经网络中,数据的格式主要存储为dydqd (可以理解为多维数组)。 图像格式为三维dydqd、行列通道数卷积核格式为四维dydqd、卷积核数行列通道数

卷积操作是每次取出一个卷积内核的操作,一个卷积内核的格式是三维的,行列通道数。 在对应于频道号的图像和卷积内核经过二维卷积操作之后,即进行上图所示的操作,得到对应于该频道的卷积结果,并且将所有频道的结果相加,得到输出图像的一个频道。 在卷积比对中,有一个要输出的影像通道。 也就是说,输出图像的通道数等于卷积内核数。

这里的概念有点绕圈子,卷积神经网络中的dydqd卷积,本质上一共进行了卷积核数通道数次3358www.Sina.com/操作。 每个卷积检查逐一检查卷积结果通道,每个卷积核心通道与原始图像的通道相对应。 此操作类似于将列向量乘以矩阵以获得新的列向量。

下图直观地显示了dydqd卷积的具体操作过程。

图源http://cs 231 n.github.io/convolutional-networks /入侵删除池化操作,池化是指对图像进行下采样,最大池化是指以图像中每个区域的最大值表示该区域,平均池

图源http://cs 231 n.github.io/convolutional-networks /入侵删截神经网络反向传播导出池化层反向传播池化层反向传播比较容易理解。 以最大池化为例,在上图中,池化后数字6对应于池化前的红色区域,实际上,在误差向相反方向传播并返回只有红色区域中的最大值的数字6的池化后的数字6的位置增量误差的情况下,与红色区域的最大值对应的位置增量误差相等

因此,卷积神经网络最大池化前向传播时,不仅记录区域最大值,而且记录区域最大值的位置,便于三角洲误差的反向传播。

平均池化会更容易。 对于平均池化,区域中的每个值对池化结果的贡献是区域大小的倒数,因此如果增量误差反向传播,则区域中每个位置的增量误差等于池化后的增量误差除以区域大小。

卷积层反向传播是卷积神经网络的卷积运算是基于三维dydqd图像和四维dydqd卷积核的卷积运算,但最核心的计算只涉及二维卷积,首先从二维卷积运算进行分析:

如上图所示,求出原始图a中的增量误差,分析它在前向传播中影响下一层的哪个节点。 很明显,节点c只有一个权重b的影响,对卷有影响

积结果中的其它结点没有任何影响。因此A的delta误差应该等于C点的delta误差乘上权重B。

我们现在将原图A点位置移动一下,再看看变换位置后A点的delta误差是多少,同样先分析它前向传播影响了卷积结果的哪些结点。经过分析,A点以权重C影响了卷积结果的D点,以权重B影响了卷积结果的E点。那它的delta误差就等于D点delta误差乘上C加上E点的delta误差乘上B。

大家可以尝试用相同的方法去分析原图中其它结点的delta误差,结果会发现,原图的delta误差,等于卷积结果的delta误差经过零填充后,与卷积核旋转180度后的卷积。如下图所示:

图源https://grzegorzgwardys.wordpress.com/2016/04/22/8/侵删

好了,直观上的理解有了,我们接下来用数学公式来对此进行证明,尽管它们会有些枯燥:

让我们回顾一下delta误差的定义,是损失函数对于当前层未激活输出  的导数,我们现在考虑的是二维卷积,因此,每一层的delta误差是一个二维的矩阵。 表示的是第l层坐标为(x,y)处的delta误差。假设我们已经知道第l+1层的delta误差,利用求导的链式法则,可以很容易写出下式:

在这里,坐标(x',y')是第l+1层中在前向传播中受第l层坐标(x,y)影响到的点,它们不止一个,我们需要将它们加起来。再利用前向传播的关系式:

我们可以进一步将表达式展开:

后面一大串尽管看起来很复杂,但实际上很容易就可以简化:

同时我们得到两个限制条件  和

将限制条件代入上式可得:

再令  以及

我们最终的结论得到了:

我们可以短暂的庆祝一下子了,然而我们目前的结论还只是基于二维卷积,我们还需要把它推广到我们卷积神经网络中dydqd的卷积中去。

再回顾一下dydqd的卷积,后一层的每个通道都是由前一层的各个通道经过卷积再求和得到的。

等等,这个关系听起来好像有点熟悉,如果把通道变成结点,把卷积变成乘上权重,这个是不是和全连接神经网络有些类似呢?

上图中每根连线都代表与一个二维卷积核的卷积操作,假设第l层深度为3,第l+1层深度为2,卷积核的维度就应该为2×filter_size×filter_size×3。第l层的通道1通过卷积影响了第l+1层的通道1和通道2,那么求第l层通道1的delta误差时,就应该根据求得的二维卷积的delta误差传播方式,将第l+1层通道1和通道2的delta误差传播到第l层的delta误差进行简单求和即可。

已知第l层delta误差,求该层的参数的导数

 ,

第l层卷积核  是一个4维dydqd,它的维度表示为卷积核个数×行数×列数×通道数。实际上,可以把它视为有卷积核个数×通道数个二维卷积核,每个都对应输入图像的对应通道和输出图像的对应通道,每一个二维卷积核只涉及到一次二维卷积运算。那求得整个卷积核的导数,只需分析卷积核数×通道数次二维卷积中每个二维卷积核的导数,再将其组合成4维dydqd即可。

所以我们分析二维卷积即可:

可以利用之前的分析方法,卷积核上点A显然对卷积结果每一个点都有影响。它对卷积结果的影响等于将整个原图左上3×3的部分乘上点A的值,因此delta误差反向传播回时,点A的导数等于卷积结果的delta误差与原图左上3×3红色部分逐点相乘后求和。因此二维卷积核的导数等于原图对应通道与卷积结果对应通道的delta误差直接进行卷积。

我们将原图通道数×卷积结果通道数个二维卷积核的导数重新进行组合成4为dydqd,即可得到整个卷积核的导数。

下面我们从数学公式进行推导:

同样我们可以进行简化,并得到两个限制条件: 和  :

这一次我们并不需要进行旋转180度这种操作。

已知第l层delta误差,求该层的参数的导数

我们的  是一个列向量,它给卷积结果的每一个通道都加上同一个标量。因此,在反向传播时,它的导数等于卷积结果的delta误差在每一个通道上将所有delta误差进行求和的结果。

提供简单的公式证明如下:

 由于  为1

所以:

 得证

卷积神经网络包括卷积层,池化层和全连接层,本文介绍了卷积层和池化层的反向传播算法以及各层参数导数的计算方法,全连接层的反向传播方法以及参数导数的计算在之前文章中也介绍过了。

让我们对卷积神经网络的训练过程进行一个总结:

对神经网络进行初始化,定义好网络结构,设定好激活函数,对卷积层的卷积核W、偏置b进行随机初试化,对全连接层的权重矩阵W和偏置b进行随机初始化。
设置好训练的最大迭代次数,每个训练batch的大小,学习率

从训练数据中取出一个batch的数据

从该batch数据中取出一个数据,包括输入x以及对应的正确标注y

将输入x送入神经网络的输入端,得到神经网络各层输出参数和

根据神经网络的输出和标注值y计算神经网络的损失函数

计算损失函数对输出层的delta误差

利用相邻层之间delta误差的递推公式求得每一层的delta误差
如果是全连接层δδσ
如果是卷积层 
如果是池化层

利用每一层的delta误差求出损失函数对该层参数的导数
如果是全连接层:
δ ,δ
如果是卷积层:
 ,

将求得的导数加到该batch数据求得的导数之和上(初始化为0),跳转到步骤3,直到该batch数据都训练完毕

利用一个batch数据求得的导数之和,根据梯度下降法对参数进行更新

跳转到步骤2,直到达到指定的迭代次数

参考:

[1]刘建平Pinard:卷积神经网络(CNN)反向传播算法

[2]Grzegorz Gwardys:Convolutional Neural Networks backpropagation: from intuition to derivation

[3]Kunlun Bai:A Comprehensive Introduction to Different Types of Convolutions in Deep Learning

[4]CS231n Convolutional Neural Networks for Visual Recognition

本文仅做学术分享,如有侵权,请联系删文。

重磅!计算机视觉工坊-学习交流群已成立

扫码添加小助手微信,可申请加入3D视觉工坊-学术论文写作与投稿 微信交流群,旨在交流顶会、顶刊、SCI、EI等写作与投稿事宜。

同时也可申请加入我们的细分方向交流群,目前主要有ORB-SLAM系列源码学习、3D视觉CV&深度学习SLAM三维重建点云后处理自动驾驶、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、深度估计、学术交流、求职交流等微信群,请扫描下面微信号加群,备注:”研究方向+学校/公司+昵称“,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进去相关微信群。原创投稿也请联系。

▲长按加微信群或投稿

▲长按关注公众号

3D视觉从入门到精通知识星球:针对3D视觉领域的视频课程(三维重建系列三维点云系列结构光系列手眼标定相机标定、激光/视觉SLAM、自动驾驶等)、知识点汇总、入门进阶学习路线、最新paper分享、疑问解答五个方面进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的smdqb聚集区,近4000星球成员为创造更好的AI世界共同进步,知识星球入口:

学习3D视觉核心技术,扫描查看介绍,3天内无条件退款

 圈里有高质量教程资料、可答疑解惑、助你高效解决问题

觉得有用,麻烦给个赞和在看~

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。