卷积神经网络convolutional neural networks(cnn)

上传人:mg****85 文档编号:34140206 上传时间:2018-02-21 格式:DOC 页数:9 大小:672KB
返回 下载 相关 举报
卷积神经网络convolutional neural networks(cnn)_第1页
第1页 / 共9页
卷积神经网络convolutional neural networks(cnn)_第2页
第2页 / 共9页
卷积神经网络convolutional neural networks(cnn)_第3页
第3页 / 共9页
卷积神经网络convolutional neural networks(cnn)_第4页
第4页 / 共9页
卷积神经网络convolutional neural networks(cnn)_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《卷积神经网络convolutional neural networks(cnn)》由会员分享,可在线阅读,更多相关《卷积神经网络convolutional neural networks(cnn)(9页珍藏版)》请在金锄头文库上搜索。

1、卷积神经网络 Convolutional Neural Networks(CNN)一、什么是卷积首先回顾一下,数字图像处理中我们用卷积模板和原始图像的像素卷积。过程如下:Step 1、先将模板旋转 180 度(又称折叠)Step 2、然后让模板依次和原始图像重叠,并且计算重叠部分的数值乘积之和以 2D 为例先对模板 K 做折叠,然后依次覆盖图像 I,并且计算重叠部分的数值乘积之和依次进行到最后,会多出一圈,得到最后的卷积结果卷积的意义(图像处理而言) ;对图像使用不同的卷积模板,对图像做不同的处理。比如平滑模板可以使图像模糊,并且可以减少噪声、锐化模板可以使图像的轮廓变得清晰。二、卷积网络的结

2、构2.1 从 BP 网络到卷积网络回想一下 BP 神经网络。BP 网络每一层节点是一个线性的一维排列状态,层与层的网络节点之间是全连接的。这样设想一下,如果 BP 网络中层与层之间的节点连接不再是全连接,而是局部连接的。这样,就是一种最简单的一维卷积网络。如果我们把上述这个思路扩展到二维,这就是我们在大多数参考资料上看到的卷积神经网络。具体参看下图:图 1:全连接的 2D 网络( BP 网络) 图 2:局部连接的 2D 网络(卷积网络)现在我们考虑单隐层结构,上图左:全连接网络。如果我们有 1000x1000 像素的图像,有 1 百万个隐层神经元,每个隐层神经元都连接图像的每一个像素点,就有

3、1000x1000x1000000=1012 个连接,也就是 1012 个权值参数。上图右:局部连接网络,每一个节点与上层节点同位置附近 10x10 的窗口相连接,则 1 百万个隐层神经元就只有 100w 乘以 100,即 108 个参数。其权值连接个数比原来减少了四个数量级。因此,卷积网络降低了网络模型的复杂度,减少了权值的数量。该优点在网络的输入是多维图像时表现的更为明显,使图像可以直接作为网络的输入,避免了传统识别算法中复杂的特征提取和数据重建过程。2.2 卷积网络的结构卷积神经网络是一个多层的神经网络,每层由多个二维平面组成,而每个平面由多个独立神经元组成。卷积神经网络中的每一个特征提

4、取层(C-层)都紧跟着一个用来求局部平均与二次提取的下采样层(S-层) ,这种特有的两次特征提取结构使网络在识别时对输入样本有较高的畸变容忍能力。图 3 经典的卷积神经网络结构图原始图像的大小决定了输入向量的尺寸,隐层由 C-层(特征提取层)和 S-层(下采样层)组成,每层均包含多个平面。C1 层神经元提取图像的局部特征,因此每个神经元都与前一层的局部感受野(也就是局部输入窗口)相连。C1 层中各平面(由神经元构成)提取图像中不同的局部特征,如边缘特征,上下左右方向特征等,C1 层中的输入是有由上一层局部窗口的数值和连接的权值的加权和(也就是卷积,后面会具体解释为什么是卷积) ,然后通过一个激

5、活函数(如 sigmoid 函数,反正切函数)得到 C1 层的输出,接下来 S2 层是下采样层,简单来书,由 4 个点下采样为 1 个点,也就是 4 个数的加权平均。换句话说,就是我们把 2*2 的像素缩小成为一个像素,某种意义上来说可以认识是图像处理中的模糊。然后按照这个 CS 的结构继续构成隐层,当然这些隐层的连接都是局部相连的。同时有人会问了,例如 S2 和 C3 层具体要怎么连接呢,为什么会从 6 张变成 16 张特征图呢。C3 层的特征图是由 S2 层图像的感受野和对应权值的卷积后,通过随机的组合而形成的,也就意味着 S2 层和 C3 层并不像 C1 层和 S2 层那样是一一对应的。

6、但当我们感受野的大小和图像一样时,我们经过特征提取后就变成一个像素了,这里我们开始使用全连接(这样才能完整的把特征保留) 。2.3 为什么给这种局部连接命名为卷积网络卷积网络第一个特点是连接权值远远小于 BP 网络的权值。卷积神经网络另外一个特性是权值共享。这样一来就更进一步减少了对网络权值的训练(毕竟权值是共享的,也就意味着有一些全是是相同的) 。权值共享是指同一平面层的神经元权值相同。如何理解呢!看下图 2,假设红色的点和黑色的点是 C1 层第一个特征图的 2 个不同神经元,感受窗口的大小是 5*5 的(意味着有 25 个连接) ,这 2 个神经元连接的权值是共享的(相同的) 。这样一来,

7、C1 层中的每个神经元的输入值,都有由原始图像和这个相同的连接权值的加权和构成的,想想看,这个过程是不是和卷积的过程很像呢!没错,就是由这个得名的。同时这样一来,我们需要训练的权值就更少了,因为有很多都是相同的。还没理解的话,接着看C1 层是一个卷积层(也就是上面说的特征提取层) ,由 6 个特征图 Feature Map 构成。特征图中每个神经元与输入中 5*5 的邻域相连。特征图的大小为 28*28。C1 层有 156 个可训练参数(每个滤波器 5*5=25 个 unit 参数和一个 bias偏置参数,一共 6 个滤波器,共(5*5+1)*6=156 个参数) ,共156*(28*28)=

8、122,304 个连接。S2 层是一个下采样层,有 6 个 14*14 的特征图。特征图中的每个单元与 C1 中相对应特征图的2*2 邻域相连接。S2 层每个单元的 4 个输入相加,乘以一个可训练参数,再加上一个可训练偏置。结果通过 sigmoid 函数计算。每个单元的 2*2 感受野并不重叠,因此 S2 中每个特征图的大小是 C1中特征图大小的 1/4(行和列各 1/2) 。S2 层有 12 个可训练参数和 5880 个连接。三、卷积网络的训练我们想想卷积网络到底有什么那些参数需要训练呢。第一、卷积层中的卷积模板的权值。第二、下采样层的 2 个参数(每个单元的 4 个输入相加,乘以一个可训练

9、参数,再加上一个可训练偏置) , 第三、学习特征的组合(例如 S2 到 C3 的组合方式)3.1 我们先回顾一下 BP 的反向传播算法3.1.1、Feedforward Pass 前向传播在下面的推导中,我们采用平方误差代价函数。我们讨论的是多类问题,共 c 类,共 N 个训练样本。这里 表示第 n 个样本对应的标签的第 k 维。 表示第 n 个样本对应的网络输出的第 k个输出。对于多类问题,输出一般组织为“one-of-c”的形式,也就是只有该输入对应的类的输出节点输出为正,其他类的位或者节点为 0 或者负数,这个取决于你输出层的激活函数。sigmoid 就是0,tanh 就是-1.因为在全

10、部训练集上的误差只是每个训练样本的误差的总和,所以这里我们先考虑对于一个样本的 BP。对于第 n 个样本的误差,表示为:传统的全连接神经网络中,我们需要根据 BP 规则计算代价函数 E 关于网络每一个权值的偏导数。我们用 l 来表示当前层,那么当前层的输出可以表示为:输出激活函数 f(.)可以有很多种,一般是 sigmoid 函数或者双曲线正切函数。sigmoid 将输出压缩到0, 1,所以最后的输出平均值一般趋于 0 。所以如果将我们的训练数据归一化为零均值和方差为 1,可以在梯度下降的过程中增加收敛性。对于归一化的数据集来说,双曲线正切函数也是不错的选择。3.1.2、Backpropaga

11、tion Pass 反向传播反向传播回来的误差可以看做是每个神经元的基的灵敏度 sensitivities(灵敏度的意思就是我们的基 b 变化多少,误差会变化多少,也就是误差对基的变化率,也就是导数了) ,定义如下:(第二个等号是根据求导的链式法则得到的)因为u/b=1,所以E/b=E/u=,也就是说 bias 基的灵敏度E/b= 和误差 E 对一个节点全部输入 u 的导数E/u 是相等的。这个导数就是让高层误差反向传播到底层的神来之笔。反向传播就是用下面这条关系式:(下面这条式子表达的就是第 l 层的灵敏度,就是)公式(1)这里的“”表示每个元素相乘。输出层的神经元的灵敏度是不一样的:最后,

12、对每个神经元运用 delta(即 )规则进行权值更新。具体来说就是,对一个给定的神经元,得到它的输入,然后用这个神经元的 delta(即 )来进行缩放。用向量的形式表述就是,对于第 l 层,误差对于该层每一个权值(组合为矩阵)的导数是该层的输入(等于上一层的输出)与该层的灵敏度(该层每个神经元的 组合成一个向量的形式)的叉乘。然后得到的偏导数乘以一个负学习率就是该层的神经元的权值的更新了:公式(2)对于 bias 基的更新表达式差不多。实际上,对于每一个权值(W) ij 都有一个特定的学习率 Ij。3.2 卷积神经网络3.2.1、Convolution Layers 卷积层我们现在关注网络中卷

13、积层的 BP 更新。在一个卷积层,上一层的特征 maps 被一个可学习的卷积核进行卷积,然后通过一个激活函数,就可以得到输出特征 map。每一个输出 map 可能是组合卷积多个输入 maps 的值: 这里 Mj 表示选择的输入 maps 的集合,那么到底选择哪些输入 maps 呢?有选择一对的或者三个的。但下面我们会讨论如何去自动选择需要组合的特征 maps。每一个输出 map 会给一个额外的偏置 b,但是对于一个特定的输出 map,卷积每个输入 maps 的卷积核是不一样的。也就是说,如果输出特征 map j 和输出特征 map k 都是从输入 map i 中卷积求和得到,那么对应的卷积核是

14、不一样的。Computing the Gradients 梯度计算我们假定每个卷积层 l 都会接一个下采样层 l+1 。对于 BP 来说,根据上文我们知道,要想求得层 l 的每个神经元对应的权值的权值更新,就需要先求层 l 的每一个神经节点的灵敏度 (也就是权值更新的公式(2) ) 。为了求这个灵敏度我们就需要先对下一层的节点(连接到当前层 l 的感兴趣节点的第 l+1 层的节点)的灵敏度求和(得到 l+1) ,然后乘以这些连接对应的权值(连接第 l层感兴趣节点和第 l+1 层节点的权值) W。再乘以当前层 l 的该神经元节点的输入 u 的激活函数 f的导数值(也就是那个灵敏度反向传播的公式(

15、1)的 l 的求解) ,这样就可以得到当前层 l 每个神经节点对应的灵敏度 l 了。然而,因为下采样的存在,采样层的一个像素(神经元节点)对应的灵敏度 对应于卷积层(上一层)的输出 map 的一块像素(采样窗口大小) 。因此,层 l 中的一个 map 的每个节点只与l+1 层中相应 map 的一个节点连接。为了有效计算层 l 的灵敏度,我们需要上采样 upsample 这个下采样 downsample 层对应的灵敏度map(特征 map 中每个像素对应一个灵敏度,所以也组成一个 map) ,这样才使得这个灵敏度 map大小与卷积层的 map 大小一致,然后再将层 l 的 map 的激活值的偏导

16、数与从第 l+1 层的上采样得到的灵敏度 map 逐元素相乘(也就是公式(1) ) 。在下采样层 map 的权值都取一个相同值 ,而且是一个常数。所以我们只需要将上一个步骤得到的结果乘以一个 就可以完成第 l 层灵敏度 的计算。我们可以对卷积层中每一个特征 map j 重复相同的计算过程。但很明显需要匹配相应的子采样层的 map(参考公式(1) ):up(.)表示一个上采样操作。如果下采样的采样因子是 n 的话,它简单的将每个像素水平和垂直方向上拷贝 n 次。这样就可以恢复原来的大小了。实际上,这个函数可以用 Kronecker 乘积来实现:好,到这里,对于一个给定的 map,我们就可以计算得到其灵敏度 map 了。然后我们就可以通过简单的对层 l 中的灵敏度 map 中所有节点进行求和快速的计算 bias 基的梯度了:公式(3)最后,对卷积核的权值的梯度就可以用 BP 算法来计算了(公式( 2) ) 。另外,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号