机器学习实验报告完整_第1页
机器学习实验报告完整_第2页
机器学习实验报告完整_第3页
机器学习实验报告完整_第4页
机器学习实验报告完整_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

MACROBUTTONMTEditEquationSection2SEQMTEqn\r\hSEQMTSec\r1\hSEQMTChap\r1\h基于AutoEncoder原理和L_BFGS优化算法实现手写数字识别目录1神经网络根本概念 )2.6DenoiseAutoEncoder当采用无监督的方法分层预训练深度网络的权值时,为了学习到较鲁棒的特征,可以在网络的可视层〔即数据的输入层〕引入随机噪声,这种方法称为DenoiseAutoEncoder〔简称dAE模型〕。DenoiseAutoEncoder的模型如下:图6denoiseAutoencoder原理由上图可知,样本按照分布参加随机噪声后变为,在本实验中,我们参加的噪音是对原始数据随机局部清0。dAE可以直观的解释为:1.dAE有点类似人体的感官系统,比方人眼看物体时,如果物体某一小局部被遮住了,人依然能够将其识别出来,2.多模态信息输入人体时〔比方声音,图像等〕,少了其中某些模态的信息有时影响也不大。3.普通的autoencoder的本质是学习一个相等函数,即输入和重构后的输出相等,这种相等函数的表示有个缺点就是当测试样本和训练样本不符合同一分布,即相差较大时,效果不好,明显,dAE在这方面的处理有所进步。3L_BFGS算法3.1根本原理机器学习算法中经常碰到非线性优化问题,如SparseFiltering算法,其主要工作在于求解一个非线性极小化问题。在具体实现中,大多调用的是成熟的软件包做支撑,其中最常用的一个算法是L-BFGS。L_BFGS算法是拟牛顿算法中广泛使用的一种优化算法。牛顿算法具有标准形式:。拟牛顿法是在牛顿法的根底上开展来的。牛顿法的根本思想是在现有极小值点估计值的附近对目标函数进行二阶泰勒展开,进而找到极小点的下一个估计值。因而,牛顿法具有二次收敛性;然而,牛顿法要求海森矩阵为正定阵,同时对海森矩阵的计算也意味着很大的计算代价,包括对海森矩阵求逆的过程。随后,拟牛顿算法应运而生,拟牛顿法属于梯度法的一种,具有下面形式:,其中是正定矩阵。该方法在迭代过程中通过对迭代方向的调整,使其接近牛顿下降方向。它的特点是:收敛速度快,防止牛顿法的二次微分计算。相对于共轭梯度法,它的缺乏在于,在计算迭代方向的矩阵向量乘法中,需要存储矩阵。并被证明在解决有约束、无约束以及大规模优化问题上比牛顿法更有效。拟牛顿算法的根本思想是不通过求偏导而直接构造出可近似海森矩阵〔或海森矩阵的逆矩阵〕的对称正定矩阵,在“拟牛顿条件”下优化目标函数。不同的拟牛顿算法那么对应不同的构造海森矩阵或其逆矩阵的方式。拟牛顿条件:假定在第k次迭代后,使用二次模型对目标函数在处进行近似,为求导操作:(26)这里表示求导,和分别对应和。为n*n对称正定矩阵,并且在每次迭代中会进行更新。对上式求极值点可得:(27)那么那么视为下一步迭代的搜索方向,在该方向上进行一维线搜索得到步长之后,将会确定下一步迭代的取值:(28)紧接着,使用相似的方法,在处对该目标函数使用二次模型进行近似,可以得到:(29)接下来将建立点处和点处的关系,即上式在处和处的梯度值应该和目标函数一致。因此,可以得到以下的关系:(30)整理可得:(31)令,将得到以下关系式:(32)这就是割线方程,描述了目标函数自变量偏移量和梯度变化量之间的关系,也就是拟牛顿算法需要满足的条件。其中是对目标函数相应的海森矩阵的近似,假定对海森矩阵的逆矩阵进行近似,那么可以得到另一等价的割线方程:(33)BFGS算法是通过近似海森矩阵来实现的,同时是对称正定矩阵。接下来给出的构造方法。BFGS算法:采用直接法进行构造,并定义矩阵的更新方式:(34)为了保证矩阵的对称正定特性,对按以下方式进行定义:(35)将上式和割线方程联立可得:(36)括号中表示数值结果,并非向量结果。在这里,假定括号中数值分别是1和-1;之后,确定和的数值,可得:(37)再令,并进一步得到和的数值:(38)最终得出了的更新方程:(39)对上式应用Sherman–Morrison–Woodbury公式将得到该方程的另一表示:(40)以上就是BFGS算法的海森矩阵〔或其逆矩阵〕的估计值的更新方程。L_BFGS算法:L-BFGS算法是在BFGS算法的根底上得到的,由于原始的BFGS算法需要保存n*n的矩阵,该存储量随n成平方规模增长,为了减少存储量,减小内存开销,适应大规模的优化问题,L_BFGS算法应运而生。L_BFGS算法是对BFGS算法的近似,其核心思想是不再存储完整的n*n矩阵,而是仅仅保存m个最近的n维向量和,这样存储量就由降低至。与此同时,算法性能也接近原始BFGS算法〔选取适宜的m值,依问题而定〕。紧接着,将给出L_BFGS算法的具体原理。根据BFGS算法中的更新方程,可以根据公式展开得到与的关系,如下:(41)很自然的,考虑L_BFGS算法,如果k<=m-1,那么用来计算的公式成立,无需修改;如果k>m-1〔即k>=m〕时,仅仅保存最近的m个向量和m个向量,那么用来计算的公式变为:(42)那么可以将上述两种情况进行综合,令,那么有:(43)在每步迭代中得到后,在处建立相应的二次模型,根据极值点条件:(44)将成为处下一步进行搜索的方向,根据JorgeNocedalStephenJ.Wright《NumericalOptimization》书中的介绍,这里给出一个计算的高效的算法:3.2算法流程以上给出了L_BFGS算法的原理和算法流程,这局部将给出在具体优化过程中该算法的应用。通常,需要将L_BFGS算法和线搜索方向配合起来使用,以到达不错的效果,其收敛性也能得到一定的保证。L-BFGS可以被用来求解大型的无约束优化问题〔MachineLearning中的很多问题都可以用其求解,如LogisticRegress等〕。这里首先给出一种广泛使用的非精确一维线搜索算法Wolfe非精确线搜索。非精确线搜索算法是指对目标函数来说,给出在点处沿着下降方向的步长值,使在处的函数值相比处的函数值有一定的下降。而不同的非精确一维线搜索算法通过构造不同的测试条件来到达使函数值取得一定下降的目的,本文仅给出满足〔强〕Wolfe条件的一维非精确线搜索算法。下面给出满足Wolfe条件的可接受步长区间的图:图7Wolfe条件的可接受步长区间的图〔1〕(45)〔2〕(46)强Wolfe条件:〔2〕(47)这里条件1用来使处的函数值有一定的下降值,条件2用来限定处的斜率应大于处斜率的倍;而强Wolfe条件〔2〕的进一步限定了处斜率值,使可接受步长落在某个波谷中。当然,在该算法具体的实现中,仅仅有这些是不够的,当每次迭代步长落在不满足〔强〕Wolfe条件的地方,需要使用插值算法给出新的步长值,这样才能够到达满意的结果。下面给出Wolfe非精确一维线搜索算法的流程:现在已经介绍了线搜索以及L_BFGS算法的相关内容。下面给出整体算法流程,用来实现实际的最优化问题。3.3算法收敛性分析:根据割线方程,和应为对称正定矩阵,这在时成立。当目标函数为凸函数,成立;然而对非凸函数来说,该不等式不一定成立,但是,如果线搜索算法满足Wolfe或强Wolfe条件,将成立。此外,线搜索算法中初始步长的选择也尤为重要。4基于AutoEncoder的手写数字识别4.1MNIST数据库MNIST数据集是由Google实验室的CorinnaCortes和纽约大学柯朗研究所的YannLeCun建有一个手写数字数据库,训练库有60,000张手写数字图像,测试库有10,000张。每一个手写数字大小为像素。局部手写数字如下列图所示:图8局部样本4.2模型训练在本次实验中,我们将像素的手写数字变换成的列数据作为我们模型的输入。训练数据个数为60000组。训练目标为得到第一层自编码神经网络的,第二层自编码神经网络的,以此类推。Softmax回归的参数。具体操作步骤见第二章。4.3模型测试我们使用MNIST数据集中提供的10000组数据对我们训练的模型进行准确度测试。模型准确率=〔分对样本数〕/〔总样本数〕。5实验结果及分析:对于只有一个隐层的Autoencoder的权重可视化,以及准确率,如5.1到5.3所示。总的实验结果和参数详见表1.5.1AutoEncoder这是最原始的Autoencoder,在训练时没有引入稀疏项和白噪声。这个Autonecoder只有一个隐层。图9所示是该隐层的权值。隐层节点一共有196个。训练的具体参数可查后面的表1.准确度:0.915W可视化:图9Autoencoder权值可视化结果分析:从图中可以依稀的看出数字0到9,这是由于这是Autoencoder的第一层。Autoencoder虽然是神经网络。但是可以看成是线性的模型,又由于这是第一层的权值〔总共也就一层〕,所以对数据的抽象程度不高,所以从权值中根本上能够看出0到9的数字。这一点在稀疏Autoencoder中表现的更加明显。5.2SparseAutoEncoderSparseAutoencoder在Autoencoder的根底上引入了稀疏项,起到压缩信息的作用。具体说就是将输入数据用尽量少的神经节点来表示。这样就会尽量的保存有用的信息而剔除无用的信息。如果从空间的角度来理解就是将原始数据投射到由隐层节点个数个向量张成的一个低维度空间里面,同时要求投射到低维空间后数据尽量沿隐层节点的基向量,也就是权值向量分布。这样带来的好处就是能提高低一步分类的准确度。准确度:0.9276W可视化:图10SparseAutoencoder权值可视化结果分析:从图中可以看出,相对于图9〔原始Autoencoder〕,图10的数字信息更加明显,而且少了不少的“噪声”。原因正如上面所说,引入稀疏项之后,原始数据每次激活的神经元的数量较之前少了很多。因此,一些繁杂的信息,比方图9里面的“噪声”,就被去掉了,只留下了真正有用的信息。因此,图10显得比拟清晰。而且从实验结果上可以看出以SparseAutoencoder为根底的分类器的分类精度确实比根本的Autoencoder的分类精度高。5.3DenoiseAutoEncoder这里的DenoiseAutoencoder跟Autoencoder的训练程序参数设置根本相同,唯一不同的是DenoiseAutoencoder在训练的时候参加了噪声。参加噪声的目的是为了模拟可能出现的遮挡,模糊,等情况,从而使训练出来的分类器更加健壮。准确度:0.9194W可视化:图11DenoiseAutoencoder权值可视化结果分析由于与Autoencoder相比,只有训练样本不一样,因为在训练时参加噪声。加噪声的规那么是:每一个像素点以0.3的概率变为0。所以,图11和图9大体上是一致的,由于训练数据不一样,所以表到达权值上就有一些差异。而且从训练结果上看,参加噪声后使得分类器精度有一定的提升。5.4实验结果汇总及分析在表1中,n表示Autoencoder的层数,AccRate表示以Autoencoder为根底的softmax分类器的准确度,λ1表示Autoencoder的权重衰减项系数,β为Autoencoder的稀疏项系数,ρ为Autoencoder的稀疏性参数,λ2为softmax的权重衰减项系数。DenoiseAutoencoder的像素值变为0的概率都是0.3,表1中的Autoencoder的隐层节点数都是196个。5.1~5.3用到的Autoencoder的具体训练参数如表1所示:表1Autoencoder详细训练参数及准确率nAccRateλ1βρλ2AutoEncoder10.9150.0002000.0003DenoiseAutoEncoder10.91940.0002000.0003SparseAutoEncoder10.92760.000220.0150.0003在训练一层的分类器的时候,通过控制变量法,改变Autoencoder的训练参数,训练出不同的Autoencoder。通过这种方法可以得到不同参数大小对Autoencoder的影响。在表2中,隐层节点都是300个,训练Autoencoder时,最大迭代次数也都是400次,其余参数如下表所示:表2Autoencoder参数对结果的影响nAccRateλ1βρλ2AutoEncoder10.91540.000330.010.0003AutoEncoder10.80310.000330.0010.0003AutoEncoder10.92850.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论