CNN卷积神经网络--反向传播(2,前向传播)

原创 2016年08月30日 11:35:51

看cnn,首先还是看看前向传播,在细谈反向求导。


    CNN的这三个特点是其对输入数据在空间(主要针对图像数据)上和时间(主要针对时间序列数据,参考TDNN)上的扭曲有很强的鲁棒性。CNN一般采用卷积层与采样层交替设置,即一层卷积层接一层采样层,采样层后接一层卷积...这样卷积层提取出特征,再进行组合形成更抽象的特征,最后形成对图片对象的描述特征,CNN后面还可以跟全连接层,全连接层跟BP一样。下面是一个卷积神经网络的示例

图1

  卷积神经网络的基本思想是这样,但具体实现有多重版本,我参考了matlab的Deep Learning的工具箱DeepLearnToolbox,这里实现的CNN与其他最大的差别是采样层没有权重和偏置,仅仅只对卷积层进行一个采样过程,这个工具箱的测试数据集是MINIST,每张图像是28*28大小,它实现的是下面这样一个CNN:

图2

INPUT -> [[CONV -> RELU]*N -> POOL?]*M -> [FC -> RELU]*K -> FC


前向传输计算

  前向计算时,输入层、卷积层、采样层、输出层的计算方式不相同。

  输入层:输入层没有输入值,只有一个输出向量,这个向量的大小就是图片的大小,即一个28*28矩阵;

 卷积层:卷积层的输入要么来源于输入层,要么来源于采样层,如上图红色部分。卷积层的每一个map都有一个大小相同的卷积核,Toolbox里面是5*5的卷积核。下面是一个示例,为了简单起见,卷积核大小为2*2,上一层的特征map大小为4*4,用这个卷积在图片上滚一遍,得到一个一个(4-2+1)*(4-2+1)=3*3的特征map,卷积核每次移动一步,因此。在Toolbox的实现中,卷积层的一个map与上层的所有map都关联,如上图的S2和C3,即C3共有6*12个卷积核,卷积层的每一个特征map是不同的卷积核在前一层所有map上作卷积并将对应元素累加后加一个偏置,再求sigmod得到的。还有需要注意的是,卷积层的map个数是在网络初始化指定的,而卷积层的map的大小是由卷积核和上一层输入map的大小决定的,假设上一层的map大小是n*n、卷积核的大小是k*k,则该层的map大小是(n-k+1)*(n-k+1),比如上图的24*24的map大小24=(28-5+1)。斯坦福的深度学习教程更加详细的介绍了卷积特征提取的计算过程。                                                                       

  图3

  采样层(subsampling,Pooling:采样层是对上一层map的一个采样处理,这里的采样方式是对上一层map的相邻小区域进行聚合统计,区域大小为scale*scale,有些实现是取小区域的最大值,而ToolBox里面的实现是采用2*2小区域的均值。注意,卷积的计算窗口是有重叠的,而采用的计算窗口没有重叠,ToolBox里面计算采样也是用卷积(conv2(A,K,'valid'))来实现的,卷积核是2*2,每个元素都是1/4,去掉计算得到的卷积结果中有重叠的部分,即:                                                                

    卷积神经网络大致组合经验公式INPUT -> [[CONV -> RELU]*N -> POOL?]*M -> [FC -> RELU]*K -> FC,在斯坦福cs231课程中,典型的一副图说明了次过程。



版权声明:

相关文章推荐

深度学习笔记2:反向传播算法

1、损失函数         损失函数在统计学中是一种衡量损失和误差程度的函数,它一般包括损失项(loss term)和正则项(regularization term)。     损失项     ...

经典反向传播算法公式详细推导

最近学习CNN时,对反向传播的算法模棱两可,公式经常是提起笔就忘记,而且网上的推导看着就烦。于是趁着现在明白了,赶紧写篇博文,留作日后参考。

【Stanford CNN课程笔记】4. 反向传播算法

本课程笔记是基于今年斯坦福大学Feifei Li, Andrej Karpathy & Justin Johnson联合开设的Convolutional Neural Networks for Vis...

CNN卷积神经网络--反向传播(3,Notes on Convolutional Neural Networks)

一、介绍          这个文档讨论的是CNNs的推导和实现。CNN架构的连接比权值要多很多,这实际上就隐含着实现了某种形式的规则化。这种特别的网络假定了我们希望通过数据驱动的方式学习到一些滤波...

CNN的反向传播推导与理解

参考与说明 本文主要是通过阅读相关论文和一些辅助的博文来理解卷积神经网络里面的反向传播算法;相关的论文可以查看Notes on Convolutional Neural Networks, Jake ...

CNN卷积神经网络--反向传播(4,代码理解)

反向传输过程是CNN最复杂的地方,虽然从宏观上来看基本思想跟BP一样,都是通过最小化残差来调整权重和偏置,但CNN的网络结构并不像BP那样单一,对不同的结构处理方式不一样,而且因为权重共享,使得计算残...

卷积神经网络(CNN)反向传播算法公式详细推导

在看本篇博文之前,你需要对卷积神经网络有一定的理解,并且能够自主推导出经典BP神经网络反向传播的相关公式。

matlab中卷积运算conv2的三种形式

matlab中的conv2是用于对二维数据进行卷积运算,有三个参数可供选择,下面是help content of conv2 conv2 Two dimensional convolution.   ...
  • zy3381
  • zy3381
  • 2015-01-29 17:41
  • 7736

卷积神经网络(CNN)讲解及代码

相关文章: 1. 经典反向传播算法公式详细推导 2. 卷积神经网络(CNN)反向传播算法公式详细推导网上有很多关于CNN的教程讲解,在这里我们抛开长篇大论,只针对代码来谈。本文用的是matla...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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