




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、卷积神经网络 Convolutional Neural Networks (CNN)一、什么是卷积首先回顾一下,数字图像处理中我们用卷积模板和原始图像的像素卷积。过程如下:Step 1先将模板旋转180度(又称折叠)Step 2、然后让模板依次和原始图像重叠,并且计算重叠部分的数值乘积之和 以2D为例K卷积模板(Kernel), I原始图像先对模板K做折叠,然后依次覆盖图像 I,并且计算重叠部分的数值乘积之和依次进行到最后,会多出一圈,得到最后的卷积结果134423671-20252-6-5033-4-9-501-1-5_200-1-2 10卷积的意义(图像处理而言);对图像使用不同的卷积模板
2、,对图像做不同的处理。比如平滑模板可 以使图像模糊,并且可以减少噪声、锐化模板可以使图像的轮廓变得清晰。二、卷积网络的结构2.1从BP网络到卷积网络回想一下BP神经网络。BP网络每一层节点是一个线性的一维排列状态,层与层的网络节点之 间是全连接的。这样设想一下,如果BP网络中层与层之间的节点连接不再是全连接,而是局部连接的。这样,就是一种最简单的一维卷积网络。如果我们把上述这个思路扩展到二维,这就是我们 在大多数参考资料上看到的卷积神经网络。具体参看下图:FULLY CONNECTED NEURAL NETLOCALLY CONNECTED NEURAL NETExmpre: 1000x100
3、0 ivnagtiM hrdden ynits10*12 jMrortr3!ll-Spctial correlation i占 local-Better to put resMirces eJsewhcrc*lanzeiE也仰俺;JOQOkIOOO ima赛 IM hidden uniff Filter size- 10x10 100M paramfefiS图1:全连接的2D网络(BP网络)图2 :局部连接的2D网络(卷积网络)现在我们考虑单隐层结构,上图左:全连接网络。如果我们有1000x1000像素的图像,有1百万个隐层神经元,每个隐层神经元都连接图像的每一个像素点,就有1000x1000
4、x1000000=10X2个连接,也就是10X2个权值参数。上图右:局部连接网络,每一个节点与上层节点同位置附近10x10的窗口相连接,则1百万个隐层神经元就只有100w乘以100,即10A8个参数。其权值连接个数比原来减少了四个数量级。因此,卷积网络降低了网络模型的复杂度,减少了权值的数量。该优点在网络的输入是多维图像时表现的更为明显,使图像可以直接作为网络的输入,避免了传统识别算法中复杂的特征提取和数据 重建过程。2.2卷积网络的结构卷积神经网络是一个多层的神经网络,每层由多个二维平面组成,而每个平面由多个独立神经 元组成。卷积神经网络中的每一个特征提取层(C-层)都紧跟着一个用来求局部平
5、均与二次提取的INPUT32x32C1: feature mapsC3 f. maps 1610xWS4: f. maps 165x5S2. f mapsF6: layer OUTPUT8410下采样层(S-层),这种特有的两次特征提取结构使网络在识别时对输入样本有较高的畸变容忍能力。ConvolulionsGaussian connectionsSibsampling Convolutiocs Subsampling Full conneclion图3经典的卷积神经网络结构图原始图像的大小决定了输入向量的尺寸,隐层由C-层(特征提取层)和 S-层(下采样层)组成,每层均包含多个平面。C1层神
6、经元提取图像的局部特征,因此每个神经元都与前一层的局部感受野(也就是局部输入窗口)相连。C1层中各平面(由神经元构成)提取图像中不同的局部特征,如边缘特征,上下左右方向特征等,C1层中的输入是有由上一层局部窗口的数值和连接的权值的加权和(也就是卷积,后面会具体解释为什么是卷积),然后通过一个激活函数 (如sigmoid函数,反正切函数) 得到C1层的输出,接下来 S2层是下采样层,简单来书,由4个点下采样为1个点,也就是4个数的加权平均。换句话说,就是我们把2*2的像素缩小成为一个像素,某种意义上来说可以认识是图像处理中的模糊。然后按照这个CS的结构继续构成隐层,当然这些隐层的连接都是局部相连
7、的。同时有人会问了,例如 S2和C3层具体要怎么连接呢,为什么会从 6张变成16张特征图呢。C3层 的特征图是由S2层图像的感受野和对应权值的卷积后,通过随机的组合而形成的,也就意味着S2层和C3层并不像C1层和S2层那样是一一对应的。但当我们感受野的大小和图像一样时,我们经 过特征提取后就变成一个像素了,这里我们开始使用全连接(这样才能完整的把特征保留)。2.3为什么给这种局部连接命名为卷积网络卷积网络第一个特点是连接权值远远小于BP网络的权值。卷积神经网络另外一个特性是权值共享。这样一来就更进一步减少了对网络权值的训练(毕竟权值是共享的,也就意味着有一些全是是相同的)。权值共享是指同一平面
8、层的神经元权值相同。如何理解呢!看下图2,假设红色的点和黑色的点是C1层第一个特征图的2个不同神经元,感受窗口的大小是 5*5的(意味着有25个连接), 这2个神经元连接的权值是共享的(相同的)。这样一来,C1层中的每个神经元的输入值,都有由原始图像和这个相同的连接权值的加权和构成的,想想看,这个过程是不是和卷积的过程很像呢! 没错,就是由这个得名的。同时这样一来,我们需要训练的权值就更少了,因为有很多都是相同的。LOCALLY CONNECTEb NEURAL NET图2:局萤连接的2D郦备(卷积网络)-32. f. maps6Hx14Gaussian connectionsFull com
9、C1: feature maps54: f. maps 165x5INPUT 32x32黑晌 Fe: layer OUTPUT1208410还没理解的话,接着看C1层是一个卷积层(也就是上面说的特征提取层),由6个特征图Feature Map构成。特征图中每个神经元与输入中5*5的邻域相连。特征图的大小为28*28。C1层有156个可训练参数(每个滤波器5*5=25个unit参数和一个 bias偏置参数,一共 6个滤波器,共(5*5+1)*6=156个参数),共 156*(28*28)=122,304 个连接。S2层是一个下采样层,有6个14*14的特征图。特征图中的每个单元与C1中相对应特征
10、图的2*2邻域相连接。S2层每个单元的4个输入相加,乘以一个可训练参数,再加上一个可训练偏置。结果通过sigmoid函数计算。每个单元的2*2感受野并不重叠,因此S2中每个特征图的大小是C1中特征图大小的1/4 (行和列各1/2)。S2层有12个可训练参数和5880个连接。C3:f. maps 1610x10ConvoljlionsSibsampling Corwolutjocs Subsampling Full conneclion 三、卷积网络的训练我们想想卷积网络到底有什么那些参数需要训练呢。第一、卷积层中的卷积模板的权值。第二、下 采样层的2个参数(每个单元的 4个输入相加,乘以一个可
11、训练参数,再加上一个可训练偏置),第三、学习特征的组合(例如 S2到C3的组合方式)3.1我们先回顾一下 BP的反向传播算法3.1.1、Feedforward Pass 前向传播在下面的推导中,我们采用平方误差代价函数。我们讨论的是多类问题,共c类,共N个训练样本。EJ揽士以-朋.n= 1 jt=l这里 表示第n个样本对应的标签的第 k维。 表示第n个样本对应的网络输出的第 k个 输出。对于多类问题,输出一般组织为“ oneof-c”的形式,也就是只有该输入对应的类的输出节点输出为正,其他类的位或者节点为 0或者负数,这个取决于你输出层的激活函数。 sigmoid就是0,tanh 就是-1.因
12、为在全部训练集上的误差只是每个训练样本的误差的总和,所以这里我们先考虑对于一个样 本的BP。对于第n个样本的误差,表示为:c1I曰=刀何-城)2 =押严喙传统的全连接神经网络中,我们需要根据BP规则计算代价函数 E关于网络每一个权值的偏导数。我们用I来表示当前层,那么当前层的输出可以表示为:= /(u* , with u* = WxT + b输出激活函数f(.)可以有很多种,一般是 sigmoid函数或者双曲线正切函数。 sigmoid将输出压 缩到0, 1,所以最后的输出平均值一般趋于 0。所以如果将我们的训练数据归一化为零均值和方差 为1,可以在梯度下降的过程中增加收敛性。对于归一化的数据
13、集来说,双曲线正切函数也是不错 的选择。3.1.2、Backpropagation Pass 反向传播反向传播回来的误差可以看做是每个神经元的基的灵敏度sensitivities (灵敏度的意思就是我们的基b变化多少,误差会变化多少,也就是误差对基的变化率,也就是导数了),定义如下:(第二个等号是根据求导的链式法则得到的)0E _ OEdudb du Ob因为?u/?b=1,所以?E/?b=?E/?u=,也就是说bias基的灵敏度?E/?b= S和误差E对一个节点全 部输入u的导数?E/?u是相等的。这个导数就是让高层误差反向传播到底层的神来之笔。反向传播就是用下面这条关系式:(下面这条式子表
14、达的就是第 I层的灵敏度,就是)M 二(lL+1 卩於+1。口 j)公式(1)这里的“表示每个元素相乘。输出层的神经元的灵敏度是不一样的:H f(uL)o(yn - tnV最后,对每个神经元运用 delta (即S)规则进行权值更新。具体来说就是,对一个给定的神经 元,得到它的输入,然后用这个神经元的delta (即S)来进行缩放。用向量的形式表述就是,对于第I层,误差对于该层每一个权值(组合为矩阵)的导数是该层的输入(等于上一层的输出)与该 层的灵敏度(该层每个神经元的3组合成一个向量的形式)的叉乘。然后得到的偏导数乘以一个负学习率就是该层的神经元的权值的更新了:9Ecwf=(旳TwOE_
15、一讥,“公式(2)对于bias基的更新表达式差不多。实际上,对于每一个权值(W)ij都有一个特定的学习率n。3.2卷积神经网络上一层的特征 maps被一个可学习的卷 map。每一个输出 map可能是组合卷3.2.1、Convolution Layers 卷积层我们现在关注网络中卷积层的BP更新。在一个卷积层,积核进行卷积,然后通过一个激活函数,就可以得到输出特征 积多个输入maps的值:这里M j表示选择的输入 maps的集合,那么到底选择哪些输入maps呢?有选择一对的或者三个的。但下面我们会讨论如何去自动选择需要组合的特征maps。每一个输出map会给一个额外的偏置b,但是对于一个特定的输
16、出map,卷积每个输入 maps的卷积核是不一样的。也就是说,如果输出特征map j和输出特征 map k都是从输入 map i中卷积求和得到,那么对应的卷积核是不一样的。Computing the Gradients 梯度计算我们假定每个卷积层I都会接一个下采样层1+1。对于BP来说,根据上文我们知道, 要想求得 层I的每个神经元对应的权值的权值更新,就需要先求层I的每一个神经节点的灵敏度3(也就是权值更新的公式(2)。为了求这个灵敏度我们就需要先对下一层的节点(连接到当前层I的感兴趣节点的第I+1层的节点)的灵敏度求和(得到3+1),然后乘以这些连接对应的权值(连接第 I层感兴趣节点和第1
17、+1层节点的权值) W。再乘以当前层I的该神经元节点的输入 u的激活函数f的导数值 (也就是那个灵敏度反向传播的公式(1)的3的求解),这样就可以得到当前层I每个神经节点对应的灵敏度3 了。然而,因为下采样的存在,采样层的一个像素(神经元节点)对应的灵敏度3对应于卷积层(上一层)的输出map的一块像素(采样窗口大小)。因此,层I中的一个map的每个节点只与1+1层中相应map的一个节点连接。为了有效计算层I的灵敏度,我们需要上采样 upsample这个下采样downsample层对应的灵敏度 map (特征map中每个像素对应一个灵敏度,所以也组成一个map),这样才使得这个灵敏度 map大小
18、与卷积层的 map大小一致,然后再将层 I的map的激活值的偏导数与从第 1+1层的上采样得到 的灵敏度map逐元素相乘(也就是公式(1 )。在下采样层 map的权值都取一个相同值 3,而且是一个常数。所以我们只需要将上一个步骤得 到的结果乘以一个 3就可以完成第I层灵敏度3的计算。我们可以对卷积层中每一个特征 map j重复相同的计算过程。但很明显需要匹配相应的子采样 层的map (参考公式(1):仍=禹+1(/(讷)。叩+1)|up(.)表示一个上采样操作。如果下采样的采样因子是n的话,它简单的将每个像素水平和垂直方向上拷贝n次。这样就可以恢复原来的大小了。实际上,这个函数可以用Krone
19、cker乘积来实现:up(x) = X lnxn.好,到这里,对于一个给定的map,我们就可以计算得到其灵敏度map 了。然后我们就可以通过简单的对层I中的灵敏度map中所有节点进行求和快速的计算bias基的梯度了:u v公式(3)最后,对卷积核的权值的梯度就可以用BP算法来计算了(公式(2)。另外,很多连接的权值是共享的,因此,对于一个给定的权值,我们需要对所有与该权值有联系(权值共享的连接)的连 接对该点求梯度,然后对这些梯度进行求和,就像上面对bias基的梯度计算一样:dE这里,(P厂中的在卷积的时候与的(u, v)位置的值是由上一层的(u, v)位置的patch与卷积核j逐元素相乘的p
20、atch,输出卷积map k_ij逐元素相乘的结果。咋一看,好像我们需要煞费苦心地记住输出map (和对应的灵敏度map)每个像素对应于输入map的哪个patch。但实际上,在 Matlab中,可以通过一个代码就实现。对于上面的公式,可以用 Matlab的卷积函数来实现:9E=rot 180(conv2(x- -1.rot 180(ali(r)我们先对delta灵敏度map进行旋转,这样就可以进行互相关计算,而不是卷积(在卷积的数学定义中,特征矩阵(卷积核)在传递给conv2时需要先翻转(flipped ) 一下。也就是颠倒下特征矩阵的行和列)。然后把输出反旋转回来,这样我们在前向传播进行卷积
21、的时候,卷积核才是我们想要 的方向。3.2.2、Sub-sampling Layers 子采样层对于子采样层来说,有 N个输入maps,就有N个输出maps,只是每个输出 map都变小了。Xj = f( 3; dowufx-1 + b;)down(.)表示一个下采样函数。典型的操作一般是对输入图像的不同nxn的块的所有像素进行求和。这样输出图像在两个维度上都缩小了n倍。每个输出map都对应一个属于自己的乘性偏置B和一个加性偏置b。Computing the Gradients 梯度计算这里最困难的是计算灵敏度 map。一旦我们得到这个了,那我们唯一需要更新的偏置参数B和b就可以轻而易举了(公式
22、(3)。如果下一个卷积层与这个子采样层是全连接的,那么就可以通过 BP来计算子采样层的灵敏度 maps。我们需要计算卷积核的梯度,所以我们必须找到输入 map中哪个patch对应输出map的哪个像素。这里,就是必须找到当前层的灵敏度 map中哪个patch对应与下一层的灵敏度 map的给定像素, 这样才可以利用公式(1)那样的3递推,也就是灵敏度反向传播回来。另外,需要乘以输入patch与输出像素之间连接的权值,这个权值实际上就是卷积核的权值(已旋转的)。d; =oconv2(6j+1, rotl80(kj+1),在这之前,我们需要先将核旋转一下,让卷积函数可以实施互相关计算。另外,我们需要对卷 积边界进行处理,但在 Matlab里面,就比较容易处理。 Matlab中全卷积会对缺少的输入像素补0。到这里,我们就可以对 b和B计算梯度了。首先,加性基b的计算和上面卷积层的一样,对灵敏度map中所有元素加起来就可以了
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 知识迁移与应用能力提升计划
- 个人知识体系建设的必要性计划
- 2025年网络技术前景分析试题与答案
- 城市交通环境影响评价重点基础知识点
- 2024年盘锦市盘山县项目建设服务中心遴选真题
- 法律文书的格式与写作试题及答案
- 2024年龙岩市永定区招聘中小学幼儿园教师真题
- 全面提升仓库操作规范计划
- 2024年湖南省应急管理厅下属事业单位真题
- 秋季学生访谈与调研计划
- 六年级下册数学课件 整理和复习6.5比和比例 人教版 (共14张PPT)
- 福州市历史建筑保护管理办法(试行)
- JHA及SCL风险评价方法讲解(参考)
- DB11T 1933-2021 人乳库建立与运行规范
- 1.3.1动量守恒定律课件(共13张PPT)
- 国网北京市电力公司授权委托书(用电)
- 中小学教育惩戒规则(试行)全文解读ppt课件
- 调度指挥与统计分析课程教学设计
- 常暗之厢(7规则-简体修正)
- 终端塔基础预偏值(抬高值)计算表格
- 海外医疗服务委托合同协议书范本模板
评论
0/150
提交评论