![机器学习实验报告完整_第1页](http://file4.renrendoc.com/view/1afbf3ae058c697bad59b8e848e595da/1afbf3ae058c697bad59b8e848e595da1.gif)
![机器学习实验报告完整_第2页](http://file4.renrendoc.com/view/1afbf3ae058c697bad59b8e848e595da/1afbf3ae058c697bad59b8e848e595da2.gif)
![机器学习实验报告完整_第3页](http://file4.renrendoc.com/view/1afbf3ae058c697bad59b8e848e595da/1afbf3ae058c697bad59b8e848e595da3.gif)
![机器学习实验报告完整_第4页](http://file4.renrendoc.com/view/1afbf3ae058c697bad59b8e848e595da/1afbf3ae058c697bad59b8e848e595da4.gif)
![机器学习实验报告完整_第5页](http://file4.renrendoc.com/view/1afbf3ae058c697bad59b8e848e595da/1afbf3ae058c697bad59b8e848e595da5.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于AutoEncoder原理和L_BFGS优化算法实现手写数字识别目录TOC\o"1-5"\h\z神经网络基本概念3概述3神经网络模型4AutoEncoder原理5反向传播算法5Softmax回归7StackedAutoEncoder8微调过程9SparseAutoEncoder9DenoiseAutoEncoder10L_BFGS算法11基本原理113.2算法流程163.3算法收敛性分析:19基于AutoEncoder的手写数字识别19MNIST数据库19模型训练20模型测试20实验结果及分析:20AutoEncoder21SparseAutoEncoder21DenoiseAutoEncoder22实验结果汇总及分析23参考资料25AutoEncoder实现手写数字识别1神经网络基本概念概述神经网络是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。这种网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的。神经网络由多个神经元构成,下图就是单个神经元的图神经网络是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。这种网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的。神经网络由多个神经元构成,下图就是单个神经元的图1所示:图1神经元模型f(z)f(z)二(1)图2sigmoid函数图像这个神经元是以x,x,x以及截距+1为输入值的运算单元,其输出为23h(x)二f(Wtx)二f(Y3Wx+b),其中函数f(•)被称作“激活函数”。在本次试W,bi二ii验中,我们选用sigmoid函数作为激活函数f(•)11+exp(-z)神经网络模型神经网络就是将许多个单一的神经元联结在一起,这样,一个神经元的输出就可以是另一个神经元的输入。例如,下图就是一个简单的神经网络:I2J+1LayerLxLayer神经网络就是将许多个单一的神经元联结在一起,这样,一个神经元的输出就可以是另一个神经元的输入。例如,下图就是一个简单的神经网络:I2J+1LayerLxLayerL;LayerL3图3神经网络示意图我们用a(I)第l层第i单元的激活值(输出值)。当l=1时,a(I)二x,也就是iii第i个输入值。对于给定的参数集合W,b,神经网络就可以按照函数h(x)来计W,b算输出结果。以上述模型为例,计算步骤如下:a⑵=f(W(i)x+W(i)x+W(i)x+b(i))TOC\o"1-5"\h\z1111221331a⑵=f(W(1)x+W(1)x+W(1)x+b(1))2112222332a⑵=f(W(1)x+W(1)x+W(1)x+b(1))3113223333h(x)=a⑶=f(W⑵a⑵+W⑵a⑵+W⑵a⑵+b⑵)W,b11111221331我们用z(l)表示第第l层第i单元输入加权和(包括偏置),这样我们对上式i就可以得到一种更加简洁的表示法:z⑵=W⑴x+b⑴a⑵=f(z⑵)⑶z⑶=W⑵a⑵+b⑵h(x)=a⑶=f(z⑶)W,b上述的计算步骤叫作前向传播。给定第l层的激活值a(l)后,第l+1层的激活值a(l+1)就可以按照下面步骤计算得到:z(l+1)=W(l)a(l)+b(l)a(l+1)=f(z(l+1))
2AutoEncoder原理反向传播算法自编码(AutoEncoder)神经网络是一种无监督的学习算法,它使用了反向传播算法,让目标值等于输入值,例如输入值为训练样本集合{x⑴,X(2),x⑶…},则我们的输出值y(i)=x(i)。下图是一个自编码神经网络的示例:图4单隐层神经网络自编码神经网络的主要参数是连接权重W和偏置b,我们尝试利用自编码神经网络学习一个h(x)=x,也就是说我们尝试逼近一个恒等函数,从而使得输W,b出x接近于输入x。假设我们有一个固定样本集{(x(l),y(】)),•••,(x(m),y(m))},它包含m个样例。对于单个样例(x,y),其代价函数为:J(W,b;x,y)J(W,b;x,y)二-h2w,b(x)-y|2(5)这是一个方差代价函数。给定一个包含m个样例的数据集,我们可以定义整体代价函数为:
J(W,b)=丄近m1i=1hJ(W,b)=丄近m1i=1h(x)-y2)w,bi=1mJ(W,b;x(i),y(i))|+®迟为E(w(I))2I2jil=1i=1j=1-EEE1(w(l))22jil=1i=1j=1(6)以上公式中的第一项J(W,b)是一个均方差项。第二项是一个规则化项(也叫权重衰减项),其目的是减小权重的幅度,防止过度拟合。我们的目标是针对参数W和b来求其函数J(W,b)的最小值。为了求解神经网络,我们将每一个参数w(I)和b(I)初始化为一个很小的、接近于0的随机数,iji之后对目标函数求最优解。梯度下降法中每一次迭代都是按照如下公式对参数W和b进行更新:8W(I)=W(I)-aJ(W,b)(7)ijj8W(i)(7)ij8b(i)=b(i)-aJ(W,b)ii8b(i)i其中a是学习速率。更新参数W和b的关键步骤是计算偏导数。而反向传播算法是计算偏导数的一种有效方法。整体代价函数J(W,b)的偏导数为:aJ(W,b)=8W(iaJ(W,b)=8W(i)ijaT—J(W,b)=8b(i)iLJ(W,b;x(i),y(i))+-W(i)ijm8W(i)Li=1j丄E$J(W,b;x(i),y(i))m8b(i)i=1i反向传播算法的思路是:给定一个样例(x,y),我们首先进行前向传导算法,得到L,L,…的激活值,包括输出层L的输出值h(x)。之后,针对第i层的每23«iW,b一个节点i,我们计算出其“残差”5(i),该残差表明了该节点对最终输出值得i误差产证了多少影响。残差的定义如下:88Z(88Z(ni)
ihw,b(x)-沖=-(y-a(代))-f'(z(ni))iiz(9)对于i=n-1,n-2,n-3,...,2的各个层,第i层的第i个节点的残差计算方法iii如下:
/、0W(i)5(i+i)f'(z(i))jijJ=/、0W(i)5(i+i)f'(z(i))jijJ=i丿需要我们计算的偏导数就可以写成下面的形式(10)QJ(W,b;x,y)=a(i)5(i+i)QW(i)jiijQJ(W,b;x,y)=5(i+i)Qb(i)ii总的来说,利用向量化的表示,反向传播算法可以表示成以下几个步骤:(11)1.进行前馈传导计算,利用前向传导公式,得到L,L,…直至输出层L的叫23激活值。2.对于第n层(输出层),计算出残差:i5(n)=—(y—a(n))•广(z(n))(12)3.对于i二n—1,n—2,n—3,...,2的各个层iii(l))t5(i+i)).f(z(i))(13)计算最终需要的偏导数值:J(W,b;x,y)=5(i+i)(a(i))tw(i)J(W,b;x,y)=5(i+i)b(i)根据公式(7)更新权重参数:(14)AW(i)=AW(i)+VJ(W,b;x,y)w(i)Ab(i)=Ab(i)+VJ(W,b;x,y)b(i)1\—AW(i)+九W(i)丄m丿b(i)=b(i)—a—Ab(i)mW(i)=W(i)—a(15)(16)Softmax回归Softmax回归模型是logistic回归模型在多分类问题上的推广。在logistic回归中,训练集由m个已标记的样本构成:{(x(i),y(i)),…,(x(m),y(m))},其中输入特征x(i)n+i。由于logistic回归是针对二分类问题的,因此类标记y⑴e{o,i}。
假设函数如下:h9(x)=1+exp(-9Tx)假设函数如下:我们的目的就是训练模型参数9,使其能够最小化代价函数:J(9)=-—£y(i)logh(x(i))+(1-y(i))log(1一h(x(i)))(17)(18)1-i=1(17)(18)而在Softmax回归中,类标签y可以取k个不同的值。因此对于训练集,y(D),・・・,(x(m),y(m))},我们有y⑴e式如下:h(X(i)h(X(i))=91e9fx(i)■■£Ke9jx(i)j=1■e9jx(i)p(y(i)=kIx(i);9)p(y(i)=1Ix(i);9)p(y(i)=21x(i);9)(19)其中9,9,...,9訥n+1是模型参数。12kSoftmax回归算法的代价函数如下J(9)J(9)=--m££1{y(i)Jlog严—__£ke9Tx(i)i=1Li=1j=1(20)其中1{}是示性函数。为了限制Softmax回归在描述对象时候出现过拟合现象,我们加入了权重衰减项k£n92来修改代价函数,则整个代价函数变为2i=1j=0ijJ(9)J(9)=-丄mU1{y(i)=j}logZjke9fx(i)i=1j=111-J1=1+匹£922ji=1j=1(21)经过这个权重衰减后a>o),代价函数就变成了严格的凸函数,这样就可以保证得到唯一解。此时的Hessian矩阵变为可逆矩阵,并且因为J(9)是凸函数,L-BFGS等算法可以保证收敛到全局最优解。StackedAutoEncoder栈式自编码神经网络(StackedAutoEncoder)是一个由多层自编码神经网络组成的神经网络,其前一层的自编码神经网络的输出作为厚一层自编码神经网络的输入。对于一个n层的栈式自编码神经网络,假定用W(k,1),W(k,2),b(k,1),b(k,2)表示第k个自编码神经网络的W(1),W(2),b(l),b(2)参数,那么该栈式自编码神经网络的编码过程就是,按照从前向后的顺序徐行每一层自编码神经网络的编码步骤:a(()=f(z(l))(22)z((+i)=W((,i)a(()+b((,1)一种比较好的获取栈式自编码神经网络参数的方法是采用逐层贪婪训练法进行训练。即利用原始输入来训练网络的第一层,得到其参数W(1,1),W(1,2),b(1,1),b(1,2);然后网络的第一层将原始输入转化为由隐层单元激活值组成的向量A,接着把A作为第二层的输入,继续训练得到第二层的参数W(2,1),W(2,2),b(2,1),b(2,2),最后对后面的各层采用同样的策略训练参数。微调过程微调(fine-tuning)是深度学习中的常用策略,可以大幅提神一个展示自编码神经网络的性能表现。从更高的视角来讲,微调将栈式自编码神经网络的所有层视为一个模型,网络中所有的权重只都可以被优化。在栈式的自编码神经网络中,微调的实现主要分为以下几个步骤:对于输出层(n层),我们使用的是Softmax回归分类器,该层的残差为:(5(n()=J)・f(Z(n())(23)an(其中VJ="(I-P),其中I为输入数据对应的类别标签,P为条件概率向量。对于(=n-1,n-2,n-3,...,2的各个层,利用公式(13),(14),(15),((((16)计算残差,更新参数。SparseAutoEncoder稀疏自编码神经网络(SparseAutoEncoder)的稀疏性可以被解释如下。如果当神经元的输出接近于1的时候我们认为它是被激活的,而输出接近于0的时候认为它是被抑制的,那么是的神经元大部分的时候都是被抑制的限制被称作稀疏性限制。令6=丄「a(2)(x(i))]表示隐层神经元j的平均活跃度。我们可以加入jmj一条限制0=p,其中P是一个接近于0的稀疏性参数,也就是说该层的所有隐j节点的平均活跃度是P,接近于0的。为了实现这一限制,我们在我们的优化目标函数中加入一个额外的惩罚因子,而这一惩罚因子将惩罚那些与P相差较大的P的情况,从而使得隐层神经元的平均活跃度保持在较小的范围之内。在本次j实验中,我们选择相对熵来做我们惩罚函数,惩罚因子可以表示为:TOC\o"1-5"\h\z无KL(p||p)=无plog2+(1-p"og^^(24)、pl-p丿=ij=1jj这一惩罚因子具有如下的性质,当p=p时,KL(p||p)=0,并且随着p和jjp。KL惩罚因子的函数图5所示:j图5KL惩罚因子加入惩罚因子后,总体的代价函数就可以表示为:J(W,b)=J(W,b)+卩£2KL(p||p)(25)sparsejj=1DenoiseAutoEncoder当采用无监督的方法分层预训练深度网络的权值时,为了学习到较鲁棒的特征,可以在网络的可视层(即数据的输入层)引入随机噪声,这种方法称为DenoiseAutoEncoder(简称dAE模型)。DenoiseAutoEncoder的模型如下:图6denoiseAutoencoder原理由上图可知,样本x按照qD分布加入随机噪声后变为X,在本实验中,我们加入的噪音是对原始数据随机部分清0。dAE可以直观的解释为:l.dAE有点类似人体的感官系统,比如人眼看物体时,如果物体某一小部分被遮住了,人依然能够将其识别出来,2.多模态信息输入人体时(比如声音,图像等),少了其中某些模态的信息有时影响也不大。3.普通的autoencoder的本质是学习一个相等函数,即输入和重构后的输出相等,这种相等函数的表示有个缺点就是当测试样本和训练样本不符合同一分布,即相差较大时,效果不好,明显,dAE在这方面的处理有所进步。3L_BFGS算法基本原理机器学习算法中经常碰到非线性优化问题,如SparseFiltering算法,其主要工作在于求解一个非线性极小化问题。在具体实现中,大多调用的是成熟的软件包做支撑,其中最常用的一个算法是L-BFGS。L_BFGS算法是拟牛顿算法中广泛使用的一种优化算法。牛顿算法具有标准形式:Xk+1二Xk-(V2f(Xk))一1Vf(xk)。拟牛顿法是在牛顿法的基础上发展来的。牛顿法的基本思想是在现有极小值点估计值的附近对目标函数进行二阶泰勒展开,进而找到极小点的下一个估计值。因而,牛顿法具有二次收敛性;然而,牛顿法要求海森矩阵为正定阵,同时对海森矩阵的计算也意味着很大的计算代价,包括对海森矩阵求逆的过程。随后,拟牛顿算法应运而生,拟牛顿法属于梯度法的一种,具有下面形式:Xk+1=Xk+akdk,dk=—DkVf(xk),其中Dk是正定矩阵。该方法在迭代过程中通过对迭代方向dk的调整,使其接近牛顿下降方向。它的特点是:收敛速度快,避免牛顿法的二次微分计算。相对于共轭梯度法,它的不足在于,在计算迭代方向dk的矩阵向量乘法中,需要存储矩阵Dk。并被证明在解决有约束、无约束以
及大规模优化问题上比牛顿法更有效。拟牛顿算法的基本思想是不通过求偏导而直接构造出可近似海森矩阵(或海森矩阵的逆矩阵)的对称正定矩阵,在“拟牛顿条件”下优化目标函数。不同的拟牛顿算法则对应不同的构造海森矩阵或其逆矩阵的方式。拟牛顿条件:假定在第k次迭代后,使用二次模型对目标函数f在X处进行近似,A为求k导操作:1m(p)二f+AfTp+恳pTBp(26)kkk2k这里A表示求导,m(0)和Am(0)分别对应f和Af。B为n*n对称正定矩kkkkk阵,并且在每次迭代中会进行更新。对上式求极值点可得:p=~B~iAf(27)kkk那么p则视为下一步迭代的搜索方向,在该方向上进行一维线搜索得到步k长«之后,将会确定下一步迭代的x取值:kk+1(28)x=x+ap(28)k+1kkk紧接着,使用相似的方法,在X处对该目标函数使用二次模型进行近似,可以k+1得到:mk+mk+11(p)二fk+1+爼+iTp+2pTBk+1p(29)接下来将建立X点处和X点处的关系,即上式在X处和X处的梯度值应TOC\o"1-5"\h\zkk+1kk+1该和目标函数f一致。因此,可以得到以下的关系:Am(-ap)=Af-Bap=Af(30)k+1kkk+1k+1kkk整理可得:Af-Af=Bapk+1kk+1kk(31)令Af-Af=y,ap=s=X-Xk+1kkkkkk+1k将得到以下关系式:y二Bskk+1k(32)(38)—(38)—1这就是割线方程,描述了目标函数自变量偏移量和梯度变化量之间的关系,也就是拟牛顿算法需要满足的条件。其中B是对目标函数相应的海森矩阵的近k+1似,假定对海森矩阵的逆矩阵进行近似,则可以得到另一等价的割线方程:s二Dy(33)kk+1kBFGS算法是通过近似海森矩阵来实现的,同时B是对称正定矩阵。接下k+1来给出B的构造方法。k+1BFGS算法:采用直接法进行构造,并定义矩阵B的更新方式:k+1B=B+AB;B=Ik+1kk0(34)为了保证B矩阵的对称正定特性,对AB按以下方式进行定义:kkAB=auut+pvvtk将上式和割线方程联立可得(35)y=Bs+auuTs+pvvtskkkkk(36)二Bs+(auTs)u+(pvts)vkkkk括号中表示数值结果,并非向量结果。在这里,假定括号中数值分别是1和-1;之后,确定a和p的数值,可得:autskpvTsk=1oa=—^-uTsk=—1oP=vTskBs+auuTs+pvvTskkkk(37)=Bs+u—vkk再令Bs=v,u=y,并进一步得到a和p的数值:kkk1a=——yTs
kk(39)(39)最终得出了B的更新方程:口"丄yyTBsstbB=B+—k―k———k—k—kkk+ikytsstbskkkkk对上式应用Sherman-Morrison-Woodbury公式将得到该方程的另一表示:B-1=(I-psyt)B-i(I-pyst)+psstk+ikkkkkkkkkk1P=—kyTs(40)kkB-1oDk+1k+1D=(I-psyt)D(I-pyst)+psstk+1kkkkkkkkkk以上就是BFGS算法的海森矩阵(或其逆矩阵)的估计值的更新方程。L_BFGS算法:L-BFGS算法是在BFGS算法的基础上得到的,由于原始的BFGS算法需要保存n*n的矩阵,该存储量随n成平方规模增长,为了减少存储量,减小内存开销,适应大规模的优化问题,L_BFGS算法应运而生。L_BFGS算法是对BFGS算法的近似,其核心思想是不再存储完整的n*n矩阵,而是仅仅保留m个最近的n维向量y和s,这样存储量就由O(n2)降低至O(m*n)。与此同时,算法性kk能也接近原始BFGS算法(选取合适的m值,依问题而定)。紧接着,将给出L_BFGS算法的具体原理。根据BFGS算法中D的更新方k+1程,可以根据公式展开得到D与D的关系,如下:k+10D=(VTVT...VT)D(V...VV)k+1kk-1000k-1k+(VTVT...VT)pssT(V...VV)kk-110001k-1k+(VTVT...VT)pssT(V...VV)kk-121112k-1k+...+(VTVT)pssT(VV)(41)kk-1k-2k-2k-2k-1k+(VT)pssT(V)kk-1k-1k-1k+pssTkkkpkyTpkyTskk,Vk=I-pysTkkk很自然的,考虑L_BFGS算法,如果k<=m-1,那么用来计算D的公式成k+1立,无需修改;如果k>m-l(即k>=m)时,仅仅保留最近的m个向量y和mk个向量s,则用来计算D的公式变为:TOC\o"1-5"\h\zkk+1D=(VTVt…Vt)D(V…VV)k+1kk—1k—m+10k—m+1k—1k+(VtVt...VT)pssT(V...VV)kk—1k—m+2k—m+1k—m+1k—m+1k—m+2k—1k+(VTVT...VT)pssT(V...VV)kk—1k—m+3k—m+2k—m+2k—m+2k—m+3k—1k+...(42)+(VTVT)pssT(VV)kk—1k—2k—2k—2k—1k+(VT)pssT(V)kk—1k—1k—1k+pssTkkk那么可以将上述两种情况进行综合,令x二min{m—1,k},则有:D=(VTVT..VT)D(V..VV)k+1kk—1k—x0k—xk—1kTOC\o"1-5"\h\z+(VTVT...VT)pssT(V...VV)kk—1k—x+1k—xk—xk—xk—x+1k—1k+(VTVT...VT)pssT(V...VV)kk—1k—x+2k—x+1k—x+1k—x+1k—x+2k—1k+...(43)+(VTVT)pssT(VV)kk—1k—2k—2k—2k—1k+(VT)pssT(V)kk—1k—1k—1k+pssTkkk在每步迭代中得到D后,在x处建立相应的二次模型,根据极值点条件:kkP二—D(44)kkkp将成为x处下一步进行搜索的方向,根据JorgeNocedalStephenJ.Wrightkk《NumericalOptimization》书中的介绍,这里给出一个计算DAf的高效的算k+1k法:AlgorithmL_BFGSAlgorithmL_BFGStwo一loop-recursionq〜纣kfori=k一1,…k一majpsTqiiiqJq-ayiiend一forrjDq0fori=k一m,…k一1卩JpyTriirJr+s(a-P)iiend一forreturnr算法流程以上给出了L_BFGS算法的原理和算法流程,这部分将给出在具体优化过程中该算法的应用。通常,需要将L_BFGS算法和线搜索方向配合起来使用,以达到不错的效果,其收敛性也能得到一定的保证。L-BFGS可以被用来求解大型的无约束优化问题(MachineLearning中的很多问题都可以用其求解,如LogisticRegress等)。这里首先给出一种广泛使用的非精确一维线搜索算法---Wolfe非精确线搜索。非精确线搜索算法是指对目标函数来说,给出在x点处沿着下降方向d的步长值,使在x+ad处的函数值相比x处的函数值有一定的下降。而不同的非精确一维线搜索算法通过构造不同的测试条件来达到使函数值取得一定下降的目的,本文仅给出满足(强)Wolfe条件的一维非精确线搜索算法。下面给出满足Wolfe条件的可接受步长区间的图:1申似上甲1+3訂LncofMifficicnr£tdesired/:|「-J---./■'w■■1uc-eepwble〔acceptable图7Wolfe条件的可接受步长区间的图(1)f(x+ap)<f(x)+caAfTpkkkk1kkk(45)(2)Af(x+ap)tp>cAftpkkkk2kk(46)强Wolfe条件:(2)abs(Af(x+ap)tp)+cAftp<0kkkk2kk(47)这里条件1用来使x+ap处的函数值有一定的下降值,条件2用来限定kkkx+ap处的斜率应大于x处斜率的c倍;而强Wolfe条件(2)的进一步限定kkkk2了x+ap处斜率值,使可接受步长落在某个波谷中。kkk当然,在该算法具体的实现中,仅仅有这些是不够的,当每次迭代步长落在不满足(强)Wolfe条件的地方,需要使用插值算法给出新的步长值,这样才能够达到满意的结果。下面给出Wolfe非精确一维线搜索算法的流程:AlgorithmWolfe_searchinitialize:x,d,c=1.0E-4,c=0.912old_gtd0=g(x)Td,old_f0=f(x)aL=0,aU=1.0E8,stepk=0calculate:f=f(x+step*d),gtd=g(x+step*d)TdWolfel=f(x+step*d)-old_f0-c*old_gtd0*step1Wolfe2=c*old_gtd0-g(x+step*d)Td2(orWolfe2=c*old_gtd0+abs(g(x+step*d)Td))2judge:if(Wolfel<0)if(Wolfe2<0)break;elseaLJstepaUJaUoutside-insertforstependifaLJaLaUJstepinner-insertforstependifgotocalculate:returnstep现在已经介绍了线搜索以及L_BFGS算法的相关内容。下面给出整体算法流程,用来实现实际的最优化问题。initialize:x,f(x),k=00loop:while(k<k_max)if(g(x)<epsilon)kbreak;if(k==0)d=-g(x)
kkelsegetdviaAlgorithmL_BFGSkendgetaviaAlgorithmWolfe_searchkx=x+a*dk+1kkkk=k+1end-whilereturnxk3.3算法收敛性分析:根据割线方程,D和B应为对称正定矩阵,这在yTS>0时成立。当目
k+1k+1kk标函数为凸函数,yTs>0成立;然而对非凸函数来说,该不等式不一定成立,kk但是,如果线搜索算法满足Wolfe或强Wolfe条件,yts>0将成立。此外,线kk搜索算法中初始步长的选择也尤为重要。4基于AutoEncoder的手写数字识别MNIST数据库MNIST数据集是由Google实验室的CorinnaCortes和纽约大学柯朗研究所的YannLeCun建有一个手写数字数据库,训练库有60,000张手写数字图像,测试库有10,000张。每一个手写数字大小为28x28像素。部分手写数字如下图所示:图8部分样本模型训练在本次实验中,我们将28x28像素的手写数字变换成lx784的列数据作为我们模型的输入x。训练数据个数为60000组。训练目标为得到第一层自编码神经网络的W,b,第二层自编码神经网络的W,b,以此类推°Softmax回归的参数0。ll22具体操作步骤见第二章。模型测试我们使用MNIST数据集中提供的10000组数据对我们训练的模型进行准确度测试。模型准确率=(分对样本数)/(总样本数)。5实验结果及分析:对于只有一个隐层的Autoencoder的权重可视化,以及准确率,如5.1到5.3所示。总的实验结果和参数详见表1.
AutoEncoder这是最原始的Autoencoder,在训练时没有引入稀疏项和白噪声。这个Autonecoder只有一个隐层。图9所示是该隐层的权值。隐层节点一共有196个。训练的具体参数可查后面的表1.准确度:0.915W可视化:图9Autoencoder权值可视化结果分析:从图中可以依稀的看出数字0到9,这是由于这是Autoencoder的第一层。Autoencoder虽然是神经网络。但是可以看成是线性的模型,又由于这是第一层的权值(总共也就一层),所以对数据的抽象程度不高,所以从权值中基本上能够看出0到9的数字。这一点在稀疏Autoencoder中表现的更加明显。SparseAutoEncoderSparseAutoencoder在Autoencoder的基础上引入了稀疏项,起到压缩信息的作用。具体说就是将输入数据用尽量少的神经节点来表示。这样就会尽量的保留
有用的信息而剔除无用的信息。如果从空间的角度来理解就是将原始数据投射到由隐层节点个数个向量张成的一个低维度空间里面,同时要求投射到低维空间后数据尽量沿隐层节点的基向量,也就是权值向量分布。这样带来的好处就是能提高下一步分类的准确度。准确度:0.9276w可视化:片2*0ETS52/!=72曷弓?El石片2*0ETS52/!=72曷弓?El石0^23a"aj牛■_“zi7?47f■■i0二管7——<sco^VE2y号<2/◎亡2da1SS3577^/■->rG/\3「/JG-CGo£©36图10SparseAutoencoder权值可视化结果分析:从图中可以看出,相对于图9(原始Autoencoder),图10的数字信息更加明显,而且少了不少的“噪声”。原因正如上面所说,引入稀疏项之后,原始数据每次激活的神经元的数量较之前少了很多。因此,一些繁杂的信息,比如图9里面的“噪声”,就被去掉了,只留下了真正有用的信息。因此,图10显得比较清晰。而且从实验结果上可以看出以SparseAutoencoder为基础的分类器的分类精度确实比基本的Autoencoder的分类精度高。DenoiseAutoEncoder这里的DenoiseAutoencoder跟Autoencoder的训练程序参数设置基本相同,唯一不同的是DenoiseAutoencoder在训练的时候加入了噪声。加入噪声的目的是为了模拟可能出现的遮挡,模糊,等情况,从而使训练出来的分类器更加健壮。准确度:0.9194W可视化:图11DenoiseAutoencoder权值可视化结果分析由于与Autoencoder相比,只有训练样本不一样,因为在训练时加入噪声。加噪声的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030全球开放式框架工业显示器行业调研及趋势分析报告
- 2025年全球及中国平盘电滑环行业头部企业市场占有率及排名调研报告
- 2025-2030全球TGV基板行业调研及趋势分析报告
- 2025年全球及中国完全生物基聚酰胺行业头部企业市场占有率及排名调研报告
- 幼儿绘本讲述与演绎幼儿绘本讲述的停连运用技巧讲解
- 2025景区商场蛇年新春嘉年华活动策划方案
- 2025绿洲集团工程合同管理规范
- 沙石采购合同范本工程合同
- 2025【合同范本】打印机耗材长期供货合同
- 防雷技术服务合同
- 第2课+古代希腊罗马(教学设计)-【中职专用】《世界历史》(高教版2023基础模块)
- 中储粮兰州公司考试笔试题库
- 焊接机器人在汽车制造中应用案例分析报告
- 重建成长型思维课件
- 电捕焦油器火灾爆炸事故分析
- 质量问题分析及措施报告
- 汽修厂安全风险分级管控清单
- 现代通信原理与技术(第五版)PPT全套完整教学课件
- 病例展示(皮肤科)
- DB31T 685-2019 养老机构设施与服务要求
- 燕子山风电场项目安全预评价报告
评论
0/150
提交评论