ConvolutionalNeuralNetworks卷积神经网络主要内容1.卷积神经网络—诞生背景与历程2.卷积神经网络应用—LeNet-5手写数字识别3.深度学习—Hinton做了些什么4.深度学习在数字图像识别上的运用—Hinton如何在2012年ImageNet引起轰动卷积神经网络提出的背景浅层神经网络大约二三十年前,神经网络曾经是机器学习领域特别热门的一个方向,这种基于统计的机器学习方法比起过去基于人工规则的专家系统,在很多方面显示出优越性。卷积神经网络提出的背景但是后来,因为理论分析的难度,加上训练方法需要很多经验和技巧,以及巨大的计算量和优化求解难度,神经网络慢慢淡出了科研领域的主流方向。值得指出的是,神经网络(如采用误差反向传播算法:BackPropagation,简称BP算法,通过梯度下降方法在训练过程中修正权重使得网络误差最小)在层次深的情况下性能变得很不理想(传播时容易出现所谓的梯度弥散GradientDiffusion或称之为梯度消失,根源在于非凸目标代价函数导致求解陷入局部最优,且这种情况随着网络层数的增加而更加严重,即随着梯度的逐层不断消散导致其对网络权重调整的作用越来越小),所以只能转而处理浅层结构(小于等于3),从而限制了性能。浅层神经网络的缺陷于是,20世纪90年代,有更多各式各样的浅层模型相继被提出,比如只有一层隐层节点的支撑向量机(SVM,SupportVectorMachine)和Boosting,以及没有隐层节点的最大熵方法(例如LR,LogisticRegression)等,在很多应用领域取代了传统的神经网络。显然,这些浅层结构算法有很多局限性:在有限样本和计算单元情况下对复杂函数的表示能力有限,针对复杂分类问题其泛化能力受到一定的制约。更重要的是,浅层模型有一个特点,就是需要依靠人工来抽取样本的特征。然而,手工地选取特征是一件非常费力的事情,能不能选取好很大程度上靠经验和运气。能不能自动地学习一些特征呢?卷积神经网络早在1989年,YannLeCun(现纽约大学教授)和他的同事们就发表了卷积神经网络(ConvolutionNeuralNetworks,简称CNN)的工作。CNN是一种带有卷积结构的深度神经网络,通常至少有两个非线性可训练的卷积层,两个非线性的固定卷积层(又叫PoolingLayer)和一个全连接层,一共至少5个隐含层。CNN的结构受到著名的Hubel-Wiesel生物视觉模型的启发,尤其是模拟视觉皮层V1和V2层中SimpleCell和ComplexCell的行为。卷积神经网络应用LeNet-5手写数字识别三大特点:1、局部感受野2、权值共享3、次采样(pooling)重点概念卷积核(卷积滤波器)特征图(FeatureMap)C层是一个卷积层:通过卷积运算,可以使原信号特征增强,并且降低噪音S层是一个下采样层:利用图像局部相关性的原理,对图像进行子抽样,可以减少数据处理量同时保留有用信息F6层是经典神经网络:输入向量和权重向量之间的点积,再加上一个偏置。然后将其传递给sigmoid函数产生单元i的一个状态。C1层:输入图片大小:32*32卷积窗大小:5*5卷积窗种类:6输出特征图数量:6输出特征图大小:28*28(32-5+1)神经元数量:4707[(28*28)*6)]连接数:12304[(5*5+1)*6]*(28*28)可训练参数:156[(5*5+1)*6]S2层:输入图片大小:(28*28)*6卷积窗大小:2*2卷积窗种类:6输出下采样图数量:6输出下采样图大小:(14*14)*6神经元数量:1176(14*14)*6连接数:5880(2*2+1)*(14*14)*6可训练参数:12(6*(1+1))卷积和子采样过程:卷积过程包括:用一个可训练的滤波器fx去卷积一个输入的图像(第一阶段是输入的图像,后面的阶段就是卷积特征map了),然后加一个偏置bx,得到卷积层Cx。子采样过程包括:每邻域四个像素求和变为一个像素,然后通过标量Wx+1加权,再增加偏置bx+1,然后通过一个sigmoid激活函数,产生一个大概缩小四倍的特征映射图Sx+1。C3层输入图片大小:(14*14)*6卷积窗大小:5*5卷积窗种类:15输出特征图数量:16输出特征图大小:10*10(14-5+1)神经元数量:1600[(10*10)*16)]连接数:151600(60+16)*(10*10)*25(部分连接)可训练参数:1516[(60+16)*25](C3中的每个特征map是连接到S2中的所有6个或者几个特征map的,表示本层的特征map是上一层提取到的特征map的不同组合(这个做法也并不是唯一的))连接数计算:151600=[(60+16)*25]*(10*10)60=3*6+9*4+6;16是因为每种神经元都有一个常数连接S4层:输入图片大小:(10*10)*16卷积窗大小:2*2卷积窗种类:16输出下采样图数量:16输出下采样图大小:(5*5)*16神经元数量:400(5*5)*16连接数:2000(2*2+1)*(5*5)*16可训练参数:32(16*(1+1))C5层:输入图片大小:(5*5)*16卷积窗大小:5*5卷积窗种类:120输出特征图数量:120输出特征图大小:1*1(5-5+1)神经元数量:120(1*120)连接数:48120[16*(5*5)+1]*1*120(全连接)可训练参数:48120[16*(5*5)+1]*1*120F6层:输入图片大小:(1*1)*120卷积窗大小:1*1卷积窗种类:84输出特征图数量:84输出特征图大小:1神经元数量:84连接数:10164120*84(全连接)可训练参数:10164120*84OUTPUT层:输入图片大小:1*84输出特征图数量:1*10最后,输出层有10个神经元,是由径向基函数单元(RBF)组成,输出层的每个神经元对应一个字符类别。RBF单元的输出,是由公式:iyjijjiwxy2)(卷积神经网络的衰落在很长时间里,CNN虽然在小规模的问题上,如手写数字,取得过当时世界最好结果,但一直没有取得巨大成功。这主要原因是,CNN在大规模图像上效果不好,比如像素很多的自然图片内容理解,所以没有得到计算机视觉领域的足够重视。深度学习的崛起2012年10月,GeoffreyHinton和他的两个学生在著名的ImageNet问题上用更深的CNN取得世界最好结果,使得图像识别大踏步前进。在Hinton的模型里,输入就是图像的像素,没有用到任何的人工特征。深度学习在图像识别中的应用2012年6月,《纽约时报》披露了GoogleBrain项目,吸引了公众的广泛关注。这个项目是由著名的斯坦福大学的机器学习教授AndrewNg和在大规模计算机系统方面的世界顶尖专家JeffDean共同主导,用16,000个CPUCore的并行计算平台去训练含有10亿个节点的深度神经网络(DNN,DeepNeuralNetworks),使其能够自我训练,对2万个不同物体的1,400万张图片进行辨识。在开始分析数据前,并不需要向系统手工输入任何诸如“脸、肢体、猫的长相是什么样子”这类特征。JeffDean说:“我们在训练的时候从来不会告诉机器:‘这是一只猫’(即无标注样本)。系统其实是自己发明或领悟了‘猫’的概念。”2014年3月,同样也是基于深度学习方法,Facebook的DeepFace项目使得人脸识别技术的识别率已经达到了97.25%,只比人类识别97.5%的正确率略低那么一点点,准确率几乎可媲美人类。该项目利用了9层的神经网络来获得脸部表征,神经网络处理的参数高达1.2亿。这个惊人的结果为什么在之前没有发生?原因当然包括算法的提升,比如dropout等防止过拟合技术,但最重要的是,GPU带来的计算能力提升和更多的训练数据。百度在2012年底将深度学习技术成功应用于自然图像OCR识别和人脸识别等问题,并推出相应的桌面和移动搜索产品,2013年,深度学习模型被成功应用于一般图片的识别和理解。从百度的经验来看,深度学习应用于图像识别不但大大提升了准确性,而且避免了人工特征抽取的时间消耗,从而大大提高了在线计算效率。可以很有把握地说,从现在开始,深度学习将取代“人工特征+机器学习”的方法而逐渐成为主流图像识别方法。总结ANN(人工神经网络)又被称为浅层神经网络(shallowneuralnetwork,也可能使用了CNN的方法。CNN(卷积神经网络)其实是已经很早提出来的理论,也得到了在字母识别数字识别上的好的运用,letnet-5。DNN(深度神经网络)可近似为深度卷积神经网络(CNNs),将卷积神经网络的深度大大加深。总结当下研究的热门是用更深层次的卷积神经网络模型用于图像和语音识别。难点在于训练使模型收敛。Hinton在12年ImageNet能使错误率大大降低的关键不仅仅是增加了卷积神经网络的深度,而之所以能训练深层次的网络使其达到收敛,原因是改进了卷积神经网络的训练方式(ReLU+Dropout)。Hinton在2012年发表的关于图像处理的文章:imagenet-classification-with-deep-convolutional-neural-networks