卷积神经网络及其应用docx.docx
《卷积神经网络及其应用docx.docx》由会员分享,可在线阅读,更多相关《卷积神经网络及其应用docx.docx(35页珍藏版)》请在冰点文库上搜索。
卷积神经网络及其应用docx
专业学位硕士学位论文
卷积神经网络及其应用
ConvolutionalNeuralNetworkandItsApplications
it«工乂畧
DalianUniversityofTechnology
was
大连理工大学学位论文独创性声明
作者郑重声明:
所呈交的学位论文,是本人在导师的指导下进行研究工作所取得的成果。
尽我所知,除文中已经注明引用内容和致谢的地方外,本论文不包含其他个人或集体已经发表的研究成果,也不包含其他已申请学位或其他用途使用过的成果。
与我一同工作的同志对本研究所做的贡献均已在论文中做了明确的说明并表示了谢意。
若有不实之处,本人愿意承担相关法律责任。
学位论文题目:
卷积神经网络及其应用
摘要
卷枳神经网络(ConvolutionalNeuralNetwork,CNN)是一种学习效率非常髙的神经网络,本文详细介绍其模型原理及其在图像分类与大规模连续语音识别中的应用。
CNN将特征抽取与分类过程相结合进行神经网络的训练,在图像分类领域获得了巨大成功。
本文的实验部分使用CNN模型进行MNIST手写体数字识别,正确率明显优于传统方法。
从2010年开始,深度神经网络(DeepNeuralNetwork,DNN)使语音识别词错误率降低了20%~30%,是该领域的巨大突破。
近年来学术研究表明,CNN可以获得比DNN更多的性能提升。
木文的实验表明,CNN-HMM混合模型相对DNN-HMM混合模型可以继续降低词错课率。
CNN、DNN通过优化方法学习参数的过程含有大量的矩阵运算,在大规模图像分类与语音识别中,这一过程将变得非常缓慢。
使用NVIDIAGPU来加速矩阵运算,可以获得相对于CPU几十倍、上百倍的性能提升。
为了克服过拟合问题,本文还探索了线性校正单^(RectifiedLinearUnits,ReLU)和Dropout等新技术。
图像分类的实验表明ReLU、Dropout可以提高CNN的泛化能力。
关键词:
卷积神经网络;图像分类;语音识别;ReLU;Dropout
TheConvolutionalNeuralNetworkandItsApplicationsAbstract
ConvolutionalNeuralNetwork(CNN)isanefficientlearningneuralnetwork.Thispaperprovidesdetailedanalysisaboutitsbasictheoryandapplicationsinimageclassificationandlarge-scalecontinuousspeechrecognition.
CNNcombinesfeatureextractionandclassificationprocessforneuralnetworktrainingandgetssignificantsuccessinthefieldofimageclassification.Inexperimentalsectionofthispaper,MNISThandwrittendigitrecognitionusingCNNmodelgetsbetterresultthantraditionalmethods.
Since2010,DeepNeuralNetwork(DNN)makesspeechrecognitionworderrorratereduce20%~30%,whichisagreatbreakthroughinthefield.Inrecentyears,AcademicresearchsuggeststhatCNNcangainmoreperformanceimprovementthanDNN.TheexperimentalresultsshowthatCNN-HMMhybridmodelcancontinuetoreducingtheworderrorrate,comparedtoDNN-HMMhybridmodel.
TheoptimizationprocessofCNNandDNNcontainsalotofmatrixoperations.Inlarge-scaleimageclassificationandspeechrecognition,theprocesswillbeveryslow.UsingtheNVIDIAGPUtospeedupthematrixoperationscangetdozensorevenhundredtimesfasterthanCPU.
Inordertoovercomethefittingproblem,thispaperalsoexploresnewmethodsliketheRectifiedLinearUnits(ReLU)andDropout.TheexperimentsonimageclassificationindicateReLUandDropoutcanimprovethegeneralizationabilityofCNN.
KeyWords:
CNN;ImageClassification;SpeechRecognition;ReLU;Dropout
摘要I
AbstractH
1绪论1
1.1深度神经网络2
1.2文章结构2
2入工神经网络3
2.1神经元3
2.2前向传播3
2.3反向传播5
2.4Softmax回归9
3卷枳神经网络10
3.1卷积(Convolution)10
3.2池化(Pooling)11
3.3卷枳神经网络的结构12
3.4卷枳神经网络的前向传播与反向传播13
3.4.1前向传播13
3.4.2反向传播14
4神经网络的优化15
4.1梯度下降15
4.2损失函数15
4.3线性校正单元与Dropout16
4.4CUDA编程17
5实验设计18
5.1图像分类18
5」」MN1ST18
5」.2CIFAR-1019
5.2语音识别20
5.2.1863语料库21
5.2.2android-mobile语音22
5.3GPU与CPU性能对比22
结论23
参考文献24
攻读硕士学位期间发表学术论文情况26
致谢27
大连理工犬学学位论文版权使用授权书28
1绪论
人工神经网络(ArtificialNeuralNetworks,ANN)起源于上世纪40年代,是一种模仿生物神经网络的结构和功能的数学模型。
它从结构、实现机理和功能上模拟生物神经网络,常用来对输入和输出间复杂的关系进行建模。
1958年Rosenblatt提出了感知机(perceptron),它可以被视为一种简单形式的前馈式人工神经网络,是一种二元线性分类1969年Minsky和Papert^]指出:
“①单层感知机不能实现XOR功能;②计算机能力有限,很难处理神经网络所需要的长时间参数优化过程”⑵。
他们的论点极大地影响了神经网络的研呢,加之当时串行计算机和人工智能所取得的成就,掩盖了发展新型计算机和人工智能新途径的必要性和迫切性,使人工神经网络的研究处于低潮。
如果把单层感知机堆成多层(称为multilayerperceptron,MLP,如图1.1所示),是可以求解线性不可分问题的,但当时缺乏有效的算法。
1974年哈佛大学的PaulWerbos提出了比较有效的BP算法⑶(本质上是求解无约束优化问题的梯度下降法),1986年多伦多大学的GeoffHinton等人重新发现这一算法⑷,人工神经网络再次受到重视。
layerLtLayerl2
图1.1多层感知机Fig.l」MultilayerPerceptron
BP算法在神经网络的层数增多时容易陷入局部最优的困境.也很容易产生过拟合的问题。
20世纪90年代,各种各样的浅层机器学习模型相继被提出,如支撑向量机(SupportVectorMachines>SVM).Boosting.最大燔方法(如LogisticRegression,LR)等。
这些模型具有高效的学习算法,且不存在局部最优的问题,在理论分析与实际应用中都获得了巨大的成功。
相比之下,MLP的训练需要很多经验和技巧,多层前馈神经网络的研究逐渐变得冷淸。
1.1深度神经网络
随着2006年深度神经网络(DNN)和深度学习(deeplearning)®念的提出,神经网络又成为机器(统计)学习领域的研究热点这些名词由多伦多大学的GeofFHinton研究组于2006年创造。
Hinton研究组提出1)多隐藏层的人工神经网络具有优异的特征学习能力,学习得到的特征对数据有更本质的刻画,从而有利于可视化或分类;2)深度神经网络在训练上的难度,可以通过“逐层预训练”(layer・wisepre・training)来有效克服。
关于预训练有助于深度学习的原因,最直接的解释是预训练将网络参数训练到一组合适的初始值,从这组初始值出发会得到一个较优的局部最优解。
卷积神经网络(ConvolutionalNeuralNetwork,CNN)由纽约大学的YannLeCunI6J于1998年提出(如图1.2所示),在手写体认别、交通标志识别等图像分类任务中得到了广泛应用。
CNN本质上是一个多层感知机,其成功的原因关键在于它所采用的局部连接和共享权值的方式,一方面减少了的权值的数量使得网络易于优化,另一方面降低了过拟合的风险。
图1.2LeNet-5结构图,一个卷积神经网络
Fig.l.2ArchitectureofLcNct-5,aConvolutionalNeuralNetwork.
CNN在许多模式识别的大赛中都获得了最好的结果,如手写体数字识别MNIST(大规模图像识别⑺。
1.2文章结构
文章余下部分组织如下,第2章介绍人工神经网络(ANN)模型,第3章描述CNN模型,第4童讲述神经网络的优化算法,CNN在图像识别、语音识别方面的应用在第5章实验部分,结论部分总结全文。
2人工神经网络
本章节介绍人工神经网络中的前馈网络的基本结构与反向传播算法的数学模型,其符号系统较多地参考了文献[23]。
2.1神经元
神经元是神经网络的基本单位,神经元的非线性模型如图2.1。
图2.1神经元
Fig.2.1Neuron
对于神经元.我们可以使用如下方程来描述:
z=・a,+b
心/⑵
坷~乙为输入向屋,叫为神经元突触权值,Z是输入信号线性组合与偏置b的和,/(•)是激活函数。
2.2前向传播
神经网络中的神经元存在多种组织关系,在分层网络中,神经元以层的形式组织。
严格的无圈网络结构称为前馈网络(如图l.l)o
圆圈代表神经网络的一个输入值,"+1”标识的圆圈称为偏置神经元,也就是截距项。
神经网络最左边的一层叫做输入层,最右的一层叫做输出层(本例中,输出层只有一个神经元)。
中间所有神经元组成的一层叫做隐藏层,隐藏层神经元功能是以某种方式介入输入与输出之间。
可以看到,图1.1神经网络有3个输入单元(偏昼单元不计算在内)•1个隐藏层及1个输出单元。
我们q用来表示网络的层数,图1.】中耳二3,我们将第/层记为厶,于是厶是输入层,给是神经网络的输出层。
该神经网络的参数为(炉,b)=(W⑴,0"化沪)),其中硝)是第/层第丿个神经元与第/+1层第Z个神经元之间的连接权值,甲)是第/+1层第i个神经元的偏置项。
因此在本例中,〃⑴w田珀,"⑴丘丹2。
需要注意的是,没有其他单元连向偏置单元(即偏置单元没有输入),它们的输出总是+1。
同时,我们使用》表示第/层的神经元个数(偏置单元不计算在内)。
我们用即表示第/层第i个神经元的激活值(输出值)。
当心1时,甲=旺,神经网络的输入层的输入值也就是该层的激活值。
如果给定了参数炉,d图1.1中的神经网络就可以按照函数7)来计算输出结果。
该神经网络的计算过程如下所示:
屮=/(昭乂+腔%+吧X+A⑴)
田=/(昭X+兇%+昭X+£))
叩=/(踏召+那2+吆%+辱)
“)=屮=/(咖2)+W>+咖亠十护))
如果我们用岁)表示第/层第i个神经元输入加权和(包括偏置单元),比如,铲=£爲叫匀*曙,那么妒=/(器))。
若将激活函数/(・)扩展为用向量的形式来表示,即/(%Z2,ZJ)=[/(ZJ,/(Z2),/(ZJF,那么,上面的计算过程可以更简洁地表示为:
z⑵=0⑴X+6⑴
m>)(22)
Z⑶=炉⑵a⑵+沪)
人“⑴之⑶=/(z⑴)
我们将上面的计算过程(2.2)称作前向传播(Feed-Forward).之前我们使用a⑴=x表示输入层的激活值,那么给定笫/层的激活值a"〉后,第/+1层的激活值於“就可以按照卜-面步骤计算得到:
(2.3)
z(z=炉%⑴+抄a(讥/刖)
将参数矩阵化.便用矩阵一向量运算方式,那么我们便可以利用线性代数中的矩阵运算对神经网络进行快速迭代求解。
神经网络的输出层也可以有多个输出单元。
比如,图2.2的神经网络有两层隐藏层:
N及厶,输出层厶有两个输出单元。
图2・2人工神经网络
Fig.2.2ArtificialNeuralNetworks
要学习得到这样的神经网络的参数“上,需要样本集(x(0,y°),其中€9<2o
2.3反向传播
假设我们有一个样本集{(X⑴肿…,(占>$・))},它包含m个训练样本。
把神经网络学习参数刃上的过程当作一个一般的优化问题,可以用批量梯度下降法来求解神经网络的参数形上。
具体来讲,对于单个样本(xj),定义其损失函数为:
丿(炉,处,刃=11|伽⑴-y|f(2.4)
这是一个平方差损失函数。
给定一个包含m个样本的数据集,我们可以定义全体损失函数为:
]・1m1
二丄2?
(妙上;0,严)=-£(4||如乂曲)-严||2)(2.5)
丿(”上;兀丿)是单个样本计算得到的平方差损失函数;J(W、b)是整体样本损失函数。
以上的损失函数(2.5)经常被用于分类或回归问题。
在二分类问题屮,我们可以用y=o或1,來代衣荫种类型的标签(这是因为sigmoid激活函数的值域为(0,1);如果我们使用双曲止切塑激活丙数,那么应该选用・1和+1作为标签)。
我们的目标是通过优化参数〃和方来使损失函数丿(“上)达到较小的值。
为了求解神经网络,我们需要将每一个参数%;“和洋>初始化为一个接近零的随机值(比如说,使用正态分布Normals2)生成的随机值,£通常设置为0.01),Z后对目标函数使用诸如批量梯度下降法的最优化算法来学习参数"和/>°乂因为丿(炉#)是一个非凸函数,梯度下降法很可能会收敛到局部最优解;在实际应用中,梯度下降法通常能得到令人满意的
结果。
需要强调的是,要将参数进行随机初始化,而不是全部置为0。
如果所有参数都用相同的值作为初始值,那么所有隐藏层单元最终会得到与输入值有关的、相同的数值即刘于任何输入x都会有:
af二昭)=碍》=...,那么对于所有岭'〉都会取相同的数值,这称为对称。
随机初始化则可以使对称失效。
梯度下降法中每一次迭代都按照如下公式(2.6)对参数W和b进行更新:
呼二呼十為丿(和)
*(2.6)
其中y是学习速率。
英中关键步骤是计算偏导数耗J",b)和
dW^n砌丿
接下来详细介绍反向传播(Back-Propagation)算法,它是一种监督学习算法,常被用来训练多层感知机,它是计算偏导数的一种有效方法,其本质是微积分中求导的链式法则。
由于底层的W^b参数的偏导数计算可以利用上层炉和6参数偏导数的结果,所以认真设计迭代过程,有利于减少不必要的计算。
我们首先来讲一下如何使用反向传播算法来计算磊7J(",b;x,刃和
丿(炉上;兀刃,这两项是单个样本(兀』)的损失函数J(W.b\x.y)的偏导数。
一旦求出该偏导数,就可以利用下式推导出整体损失函数丿(炉“)的偏导数:
楊W恥対命側心肿)(27)
反向传播算法主要有两个环节:
1)前向传播,2)权值更新;反复迭代,直到收敛。
具体地,给定一个样本(兀刃,先进行“前向传播“运算,计算出网络中各层的激活值,和输出层的输出值。
之后,针对第/层的每一个神经元八我们计算岀其“残差”卑二纟虫炉上)。
对于最终的输出神经元,我们可以直接算出网络产生的激活值与实际值之间的差距,我们将这个差距定义为曙讥第q层为输出层)。
对于隐藏单元我们如何处理呢?
我们将基于/+1层神经元残差计算
下面给出反向传播算法的细节:
1)进行前向传播计算,利用前向传播公式(2.2),得到厶,厶,…和输出层垢的激活值
a<°・*
2)对于输IB层(第®层)的每个输出单元f,我们根据下面的公式计算残差:
铲=晶JWE刃二希剳八")卜-UW八铲)详细推导:
列"二磊丿(”e;x』)=晶*IIy-仏⑴『
=-U-g))/9)=-(z一町)/(罗)
3)对/="厂1,“厂2,”厂3,...,2的各个层,第/层的第j个神经元的残差计算方法如下:
/J刼罗(刃)
Vs1丿
详细推导过程如下:
棺=命人呼gy)二令*II丿-嘔⑴『=事諭力昴掳3-心M
=£(乜7(娜))•昴W)卜臥-(儿"0))/©)・
=£(磔•砒Tf(严)))j士(町T•罗巾/'(才小)
戶Im
将上式中的耳-1与仞的关系替换为/-1与/的关系,就可以得到:
理=切4T八屮)
、用>
以上的求导过程遵循求导的链式法则。
4)计算参数炉与b的偏导数,i|算方法如下:
最后,
那么,
1)
2)
我们用矩阵•向量重写上面的计算过程。
反向传播算法则可表示为以下几个步骤:
进行前向传播计算,利用前向传播公式,得到—和输出层q的激活值。
对输出层(第仞层),计算残差:
丹)=a/py,孥刃=p_十“(宀
(2.8)
3)
4)
对于心耳-1,耳-2,耳-3,...,2的隐藏层,计算:
护)=》(鷲切=_((财))「沖)”⑺)计算各层参数"与b的偏导数:
%"站沪響型益4“(外
dW{h
(2.9)
(2.10)
批量梯度F降法中的迭代过程如下:
1)
2)
3)
那么,经网络。
对于所有/,令△形⑴:
=o,E:
=o(设置为全零矩阵或全零向量)
对于f=1到m,
a.使用反向传播算法计算%丿(炉上;九刃和%丿(炉上/,刃;
b.计算△肿):
=A炉⑴+V”,J(炉,6;心刃;
c.计算3:
=劭⑴+V#丿(炉上;兀刃;
更新参数权值(卩为学习速率):
■■
沪。
=护⑴_卩丄a沪。
m
■■
■■
叫沖*丄a
\_m
我们可以重复梯度卜降法的迭代步骤来减小损失函数丿(羽上)的值,进而求解神
(2.11)
(2.12)
(2.13)
2.4Softmax回归
本节我们介绍softmax冋归模型冋,该模型是logistic回归模型在多分类问题上的自然推广。
在多分类问题中,类别标签丿可以取两个以上的值。
在softmax冋归中,我们解决的是多分类问题(相对的logisUc回归解决的二分类问题),类标p可以取斤个不同的值(而不是2个)。
因此,对于训练集{(x⑴丿⑴(*・),严))},我们有例如;在CIFAR-10图像识别任务中,冇^=10个不同的类别。
对于给定的测试输入x,假设函数p(y=j\x)&x^于类别j概率值。
也就是x的每一种分类结果出现的概率。
因此假设函数的值为一个(维的向址(向量元素的和为1)來表示这《个估计的概率值。
具体地说,假设输出因数%(羽形式如下
时)二
p(y")=l|x"〉;w)
■
■
p(j(0=Ar|x(,);w)
(2.14)
其中鸭…叫e£R-*'为槿型的参数.一^!
^这一项是在对槪率分布进行归一化,
使得所有概率之和为1。
为方便起见,使用符号&来表示全部的模型参数。
使用神经网络做多分类任务时候,通常釆用softmax作为输出层。
3卷积神经网络
卷积神经网络受视觉神经机制的启发而设计,是为识别二维或三维信号而设计的一个多层感知器,这种网络结构对平移、缩放、倾斜等变形具有高度不变性。
CNN的基本结构包括两种特殊的神经元层,其一为卷枳层,每个神经元的输入与前一层的局部相连,并提取该局部的特征;其二是池化层,用来求局部敏感性与二次特征提取的计算层。
这种两次特征提取结构减小了特征分辨率,减少了需要优化的参数数目。
CNN可以用来识别位移、缩放及其他形式扭曲不变性的二维或三维图像。
CNN的特征提取层参数是通过训练数据学习得到的,所以其避免了人工特征抽取,而是从训练数据中进行学习;其次同~特征图的神经元共享权值,减少了网络参数,这也是卷积网络相对于全连接网络的一大优势。
共享局部权值这一特殊结构更接近于贞实的生物神经网络使卷积苻经网络在图像处理、语音识别领域有着独特的优越性,另一方面权值共享同时降低了用络的复杂性,且多维输入信号(语音、图像)可以直接输入网络的特点避免了特征提取和分类过程中数据重排的过程。
3.1卷积(Convolution)
卷积是分析数学中的一种运算,设fWtg(x)是田上两个可积函数,做积分
£c/(r)g(x-r)Jr(3.1)
这个积分定义了函数/(x),g(x)的卷积。
自然世界中的物理信号有其固有特性,也就是说,信号的--部分的统计特性与其他部分在很大程度上是一样的。
例如,从一个大分辨率的图像中随机选取5x5的小块作为样本,并且从该样本中学习到了一些特征,这时我们可以把从这个5x5样本中学习到的特征探测器应用到这个图像的任意地方中去。
特别是,我们可以用从5x5样本中所学习到的特征探测器跟原本的大分辨率图像作卷积,从而对这个大分辨率图像上的任一位賈获得个不同的特征激活值。
如图3」为图像中一种卷积形式。
1
1
1
0
0
0
1
1
1
0
0
0
人
0
0
Xo
Qo
0
1
1;
Qc
Q;
E
s
a
0
a
S
Convolved
lmageFeature
图3・1图像上的卷积操作,左图是原始图像,右图是与3x3核卷积后的待征图
Fig.3.1ConvolutiononImage,leftpictureisoriginalimage,rightpictureisthefeaturemapafter
convolutedwitha3x3