CNN公式推导

转载 2017年01月03日 21:21:03

转自:http://www.mamicode.com/info-detail-874778.html

CNN公式推导

1 前言

         在看此blog之前,请确保已经看懂我的前两篇blog【深度学习笔记1(卷积神经网络)】和【BP算法与公式推导】。并且已经看过文献[1]的论文【Notes on Convolutional Neural Networks】。因为本文就是讲解文献[1]论文前部分公式的推导过程<这里有一个假设,或许公式是错误的,如有好的理解请留言>


2 CNN公式推导

         卷积神经网络参数求解的过程与上次笔记【BP算法与公式推导】类似,但是在形式上还是有变化的。文献[1]的论文直接给出了参数求解的公式,主要包括:卷积层和subsampling层的残差以及对应的对权重参数和偏置参数的导数。

注意:这里的卷积核参数所放在的层与残差放在了同一层,和上次笔记略有不同,但是没有影响!


2.1 卷积层:

2.1.1 卷积计算

         假设第l层为卷积层,第l+1层为subsampling层,则第l层第j个feature map的计算公式如下:

技术分享

         上面的*号实质是让卷积核k在第l-1层所有关联的feature maps上做卷积运算,然后求和,再加上一个偏置参数,取sigmoid得到最终激励值的过程。

例子:假设第l-1层只有两个feature map,大小为4*4像素。

    技术分享      技术分享

一个卷积核K(二维卷积核K11和K12),大小为2*2。

    技术分享   技术分享

则计算第l层的一个feature map结果如下,大小为3*3像素:

技术分享

技术分享

技术分享

注意:在matlab中可以用convn函数来实现卷积,如:

image = convn(im, kernel, ‘valid’); 其中计算的过程会先将kernel反转180度,再与im做卷积操作。

技术分享

因此本文中我们举例子用的卷积核2*2大小是已经旋转180度后的,即技术分享


2.1.2 残差计算

         BP算法中残差计算等于第l+1层与其连接的所有结点的权值和残差的加权和再乘以该点对z的导数值。卷积层的下一层是subsampling层,采用的是一对一非重叠采样,故残差计算更为简单。

         第l层第j个feature map的残差计算公式如下:

技术分享

其中第l层为卷积层,第l+1层为subsampling层,subsampling层与卷积层是一一对应的。其中up(x)是将第l+1层的大小扩展为和第l层大小一样。举个简单的例子,假如第l+1层为2*2的,subsampling的采样大小为2*2,其中第l+1层的一个feature map所对应的残差为:

技术分享

那么扩展之后就变为了

技术分享

直观上的理解:由于是一对一采样,故扩展之后第l层的每个节点只对应第l+1层唯一的一个结点,按照BP算法残差计算公式可以得出:第l层某结点残差就等于权值w乘以第l+1层对应节点残差值再乘以f(z)的导数,公式仅仅是矢量化的形式。

 

2.1.3 梯度计算

(1) 论文中给出了偏置参数b的导数,公式为:

技术分享

下面我们给出推导公式,(其中第2行到第3行用到了假设,因为这里的zjlbjl都是矩阵,没有矩阵对矩阵求导,这里给出了一个求和公式。我也解释不了是否正确,有知道的可以留言!)其中njl为第l层第j个feature map中点的个数。

技术分享

(2) 论文中给出了偏置参数k的导数,其中kijl表示第l层第j个feature map与第l-1层第i个feature map相连所对应的kernel,是一个矩阵:

技术分享

公式推导如下:

技术分享

这里我们给出例子:比如卷积层为3*3的大小,卷积核的大小为2*2上一层feature map大小为4*4

技术分享技术分享

技术分享技术分享

技术分享技术分享


技术分享

论文中给出其matlab代码:

技术分享

由于matlab中先要反转180度,故代码中先对残差旋转180度,得到的结果是技术分享, 要想得到最后的结果K, 故对其结果再旋转180度。

 

2.2  subsampling层:

2.2.1卷积计算

         设第l层为subsampling层,第l-1为卷积层,由于是一对一采样,假设采样大小为2*2,故计算公式为:

技术分享

这里的down(x)是将x中2*2的大小中像素值进行求和。计算过程为对上一层卷积层2*2大小进行求和然后乘以权重w,再加上一个偏置,再求取sigmoid函数。

 

2.2.2 残差计算

论文中给出了残差的计算公式:

技术分享

其中第l层为subsampling层,第l+1层为卷积层。

直观上的理解:如下图:左边为subsampling层的一个featuremap,右边是卷积层的一个feature map,

技术分享技术分享

技术分享技术分享
 比如对于当前结点中的7号结点,其与下一层的连接方式为{k22, 2; k21,3; k12, 5; k11, 6}(这里可以用笔简单画下就计算出来了)。故根据bp算法中残差计算方法等于第l+1层与其连接的所有结点的权值和残差的加权和再乘以该点对z的导数值,就相当于用卷积核技术分享直接在下一层卷积层的残差上做卷积运算,方式为full类型,也就得到公式中的形式,由于matlab自带的卷积函数会先旋转对K旋转180度,故我们需要先对其旋转180度,再计算卷积。(当然我认为这里的公式有点偏差,的下标不应该用j,而是用i,而且需要对第l+1层中所有的与该subsampling相连接的featuremap最后的结果求和—源码中的确是这样的。)

 

2.2.2 梯度计算

(1) 偏置b的导数,其公式的推导过程与卷积层是一样的的。

(2) 权重w的导数,论文给出的公式如下:

技术分享

技术分享

公式推导如下:

技术分享

这里我们给出一个例子:比如subsampling层feature map大小为2*2,则其上一层卷积层feature map的大小为4*4,如下所示,计算过程为对上一层卷积层2*2大小进行求和然后乘以权重w,再加上一个偏置,再求取sigmoid函数。(其中1,2,3,4只是一个标号,不是具体的值)

技术分享技术分享

技术分享技术分享

技术分享技术分享
则计算过程为:

wjl = d11*{1+2+3+4} +d12*{5+6+7+8} + d21*{9+10+11+12} + d22*{13+14+15+16}。与公式相符。

注意:公式推导中有一个不那么正确的假设,但有了这个假设,一切结论都是成立的,这个结论或许超出了我数学的海拔高度,有正确解法的可以留言,谢谢!

 

参考文献:

1:原始论文:Notes onConvolutional Neural Networks http://cogprints.org/5869/1/cnn_tutorial.pdf

2: 论文翻译参看:http://blog.csdn.net/zouxy09/article/details/9993371

3:如何正确使用论文中公式(附带小例子)见:http://www.cnblogs.com/tornadomeet/p/3468450.html



CNN公式

CNN反向传播公式推导

《Notes on Convolutional Neural Networks》 一、介绍          这个文档讨论的是CNNs的推导和实现。CNN架构的连接比权值要多很多,这实际上就隐含着...
  • DanyHgc
  • DanyHgc
  • 2016年12月06日 19:33
  • 1623

CNN卷积神经网络学习笔记3:权值更新公式推导

在上篇《CNN卷积神经网络学习笔记2:网络结构》中,已经介绍了CNN的网络结构的详细构成,我们已经可以初始化一个自己的CNN网络了,接下来就是要用训练得到一个确定的CNN的模型,也就是确定CNN的参数...
  • happyer88
  • happyer88
  • 2015年07月06日 11:23
  • 12956

CNN卷积神经网络推导和实现

原文地址:http://blog.csdn.net/zouxy09/article/details/9993371 自己平时看了一些论文,但老感觉看完过后就会慢慢的淡忘,某一天重新拾起来的时候又...
  • liuxiabing150
  • liuxiabing150
  • 2015年08月01日 14:09
  • 874

深度学习之二:CNN推导

前面看过了CNN的基本结构,经典的模式如下图:   上图经典的CNN模型主要可以概括为三个部分: convolution层:convolution是将原来的输入向量映射成...
  • u010223750
  • u010223750
  • 2016年05月06日 20:41
  • 2004

CNN卷积神经网络反向推导

前言:   CNN作为DL中最成功的模型之一,有必要对其更进一步研究它。虽然在前面的博文Stacked CNN简单介绍中有大概介绍过CNN的使用,不过那是有个前提的:CNN中的参数必须已提前学习好。...
  • Evan123mg
  • Evan123mg
  • 2014年10月16日 15:40
  • 4528

Deep Learning论文笔记之(四)CNN卷积神经网络推导和实现

Deep Learning论文笔记之(四)CNN卷积神经网络推导和实现zouxy09@qq.comhttp://blog.csdn.net/zouxy09          自己平时看了一些论文,但老...
  • zouxy09
  • zouxy09
  • 2013年08月16日 00:40
  • 373567

CNN反向求导推导

本文主要是借助参考文献1《Notes on Convolutional Neural Networks》的内容,还博客【2】和【3】里面的内容,对卷积神经网络的推导做个梳理。输出层求导激活函数logi...
  • lansatiankongxxc
  • lansatiankongxxc
  • 2015年11月05日 22:48
  • 2980

CNN的反向传播推导与理解

参考与说明 本文主要是通过阅读相关论文和一些辅助的博文来理解卷积神经网络里面的反向传播算法;相关的论文可以查看Notes on Convolutional Neural Networks, Ja...
  • xunan003
  • xunan003
  • 2017年04月29日 20:45
  • 449

(转载--讲CNN推导比较详细的文章)卷积神经网络全面解析 by Moonshile

(原文:http://www.moonshile.com/post/juan-ji-shen-jing-wang-luo-quan-mian-jie-xi) 卷积神经网络全面解析 ...
  • ligang_csdn
  • ligang_csdn
  • 2016年12月27日 14:25
  • 1690

Maple 公式推导

Maple 公式推导   2012-03-24 13:07:35|  分类: 学习 |  标签:maple   |举报 |字号 订阅 即以此功德,庄严佛净土。上报...
  • yu132563
  • yu132563
  • 2014年12月24日 16:05
  • 2125
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:CNN公式推导
举报原因:
原因补充:

(最多只允许输入30个字)