机器学习实验报告完整Word文件下载.docx
《机器学习实验报告完整Word文件下载.docx》由会员分享,可在线阅读,更多相关《机器学习实验报告完整Word文件下载.docx(25页珍藏版)》请在冰豆网上搜索。
4.2模型训练 19
4.3模型测试 19
5实验结果及分析:
19
5.1AutoEncoder 20
5.2SparseAutoEncoder 20
5.3DenoiseAutoEncoder 21
5.4实验结果汇总及分析 22
6参考资料 24
AutoEncoder实现手写数字识别
1神经网络基本概念
1.1概述
神经网络是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。
这种网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的。
神经网络由多个神经元构成,下图就是单个神经元的图1所示:
图1神经元模型
这个神经元是以以及截距为输入值的运算单元,其输出为,其中函数被称作“激活函数”。
在本次试验中,我们选用sigmoid函数作为激活函数
(1)
图2sigmoid函数图像
1.2神经网络模型
神经网络就是将许多个单一的神经元联结在一起,这样,一个神经元的输出就可以是另一个神经元的输入。
例如,下图就是一个简单的神经网络:
图3神经网络示意图
我们用第层第单元的激活值(输出值)。
当时,,也就是第个输入值。
对于给定的参数集合,神经网络就可以按照函数来计算输出结果。
以上述模型为例,计算步骤如下:
(2)
我们用表示第第层第单元输入加权和(包括偏置),这样我们对上式就可以得到一种更加简洁的表示法:
(3)
上述的计算步骤叫作前向传播。
给定第层的激活值后,第层的激活值就可以按照下面步骤计算得到:
(4)
2AutoEncoder原理
2.1反向传播算法
自编码(AutoEncoder)神经网络是一种无监督的学习算法,它使用了反向传播算法,让目标值等于输入值,例如输入值为训练样本集合,则我们的输出值。
下图是一个自编码神经网络的示例:
图4单隐层神经网络
自编码神经网络的主要参数是连接权重和偏置,我们尝试利用自编码神经网络学习一个,也就是说我们尝试逼近一个恒等函数,从而使得输出接近于输入。
假设我们有一个固定样本集,它包含个样例。
对于单个样例,其代价函数为:
(5)
这是一个方差代价函数。
给定一个包含个样例的数据集,我们可以定义整体代价函数为:
(6)
以上公式中的第一项是一个均方差项。
第二项是一个规则化项(也叫权重衰减项),其目的是减小权重的幅度,防止过度拟合。
我们的目标是针对参数和来求其函数的最小值。
为了求解神经网络,我们将每一个参数和初始化为一个很小的、接近于0的随机数,之后对目标函数求最优解。
梯度下降法中每一次迭代都是按照如下公式对参数和进行更新:
(7)
其中是学习速率。
更新参数和的关键步骤是计算偏导数。
而反向传播算法是计算偏导数的一种有效方法。
整体代价函数的偏导数为:
(8)
反向传播算法的思路是:
给定一个样例,我们首先进行前向传导算法,得到的激活值,包括输出层的输出值。
之后,针对第层的每一个节点,我们计算出其“残差”,该残差表明了该节点对最终输出值得误差产证了多少影响。
残差的定义如下:
(9)
对于的各个层,第层的第个节点的残差计算方法如下:
(10)
需要我们计算的偏导数就可以写成下面的形式:
(11)
总的来说,利用向量化的表示,反向传播算法可以表示成以下几个步骤:
1.进行前馈传导计算,利用前向传导公式,得到直至输出层的激活值。
2.对于第层(输出层),计算出残差:
(12)
3.对于的各个层
(13)
4.计算最终需要的偏导数值:
(14)
5.根据公式(7)更新权重参数:
(15)
(16)
2.2Softmax回归
Softmax回归模型是logistic回归模型在多分类问题上的推广。
在logistic回归中,训练集由个已标记的样本构成:
,其中输入特征。
由于logistic回归是针对二分类问题的,因此类标记。
假设函数如下:
(17)
我们的目的就是训练模型参数,使其能够最小化代价函数:
(18)
而在Softmax回归中,类标签可以取个不同的值。
因此对于训练集,我们有,所以假设函数形式如下:
(19)
其中是模型参数。
Softmax回归算法的代价函数如下:
(20)
其中是示性函数。
为了限制Softmax回归在描述对象时候出现过拟合现象,我们加入了权重衰减项来修改代价函数,则整个代价函数变为:
(21)
经过这个权重衰减后,代价函数就变成了严格的凸函数,这样就可以保证得到唯一解。
此时的Hessian矩阵变为可逆矩阵,并且因为是凸函数,L-BFGS等算法可以保证收敛到全局最优解。
2.3StackedAutoEncoder
栈式自编码神经网络(StackedAutoEncoder)是一个由多层自编码神经网络组成的神经网络,其前一层的自编码神经网络的输出作为厚一层自编码神经网络的输入。
对于一个层的栈式自编码神经网络,假定用表示第个自编码神经网络的参数,那么该栈式自编码神经网络的编码过程就是,按照从前向后的顺序徐行每一层自编码神经网络的编码步骤:
(22)
一种比较好的获取栈式自编码神经网络参数的方法是采用逐层贪婪训练法进行训练。
即利用原始输入来训练网络的第一层,得到其参数;
然后网络的第一层将原始输入转化为由隐层单元激活值组成的向量A,接着把A作为第二层的输入,继续训练得到第二层的参数,最后对后面的各层采用同样的策略训练参数。
2.4微调过程
微调(fine-tuning)是深度学习中的常用策略,可以大幅提神一个展示自编码神经网络的性能表现。
从更高的视角来讲,微调将栈式自编码神经网络的所有层视为一个模型,网络中所有的权重只都可以被优化。
在栈式的自编码神经网络中,微调的实现主要分为以下几个步骤:
1.对于输出层(层),我们使用的是Softmax回归分类器,该层的残差为:
(23)
其中,其中为输入数据对应的类别标签,为条件概率向量。
2.对于的各个层,利用公式(13),(14),(15),(16)计算残差,更新参数。
2.5SparseAutoEncoder
稀疏自编码神经网络(SparseAutoEncoder)的稀疏性可以被解释如下。
如果当神经元的输出接近于1的时候我们认为它是被激活的,而输出接近于0的时候认为它是被抑制的,那么是的神经元大部分的时候都是被抑制的限制被称作稀疏性限制。
令表示隐层神经元的平均活跃度。
我们可以加入一条限制,其中是一个接近于0的稀疏性参数,也就是说该层的所有隐节点的平均活跃度是,接近于0的。
为了实现这一限制,我们在我们的优化目标函数中加入一个额外的惩罚因子,而这一惩罚因子将惩罚那些与相差较大的的情况,从而使得隐层神经元的平均活跃度保持在较小的范围之内。
在本次实验中,我们选择相对熵来做我们惩罚函数,惩罚因子可以表示为:
(24)
这一惩罚因子具有如下的性质,当时,=0,并且随着和。
KL惩罚因子的函数图5所示:
图5KL惩罚因子
加入惩罚因子后,总体的代价函数就可以表示为:
(25)
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)
这就是割线方程,描述了目标函数自变量偏移量和梯度变化量之间的关系,也