模式识别实验报告本次报告选做第一个实验,实验报告如下:1实验要求构造1个三层神经网络,输出节点数1个,即多输入单输出型结构,训练它用来将表中的第一类样本和第二类样本分开。采用逐个样本修正的BP算法,设隐层节点数为4,学习效率η=0.1,惯性系数α=0.0;训练控制总的迭代次数N=100000;训练控制误差:e=0.3。在采用0~1内均匀分布随机数初始化所有权值。对1)分析学习效率η,惯性系数α;总的迭代次数N;训练控制误差e、初始化权值以及隐层节点数对网络性能的影响。要求绘出学习曲线----训练误差与迭代次数的关系曲线。并将得到的网络对训练样本分类,给出错误率。采用批处理BP算法重复1)。比较两者结果。表1神经网络用于模式识别数据(X1、X2、X3是样本的特征)样本第一类第二类X1X2X3X1X2X311.582.32-5.80.210.03-2.2120.671.58-4.780.370.28-1.831.041.01-3.630.181.220.164-1.492.18-3.39-0.240.93-1.015-0.411.21-4.73-1.180.39-0.3961.393.162.870.740.96-1.1671.201.40-1.89-0.381.94-0.488-0.921.44-3.220.020.72-0.1790.451.33-4.380.441.31-0.1410-0.760.84-1.960.461.490.682BP网络的构建三层前馈神经网络示意图,见图1.图1三层前馈神经网络①网络初始化,用一组随机数对网络赋初始权值,设置学习步长、允许误差、网络结构(即网络层数L和每层节点数nl);②为网络提供一组学习样本;③对每个学习样本p循环a.逐层正向计算网络各节点的输入和输出;b.计算第p个样本的输出的误差Ep和网络的总误差E;c.当E小于允许误差或者达到指定的迭代次数时,学习过程结束,否则,进行误差反向传播。d.反向逐层计算网络各节点误差)(ljp如果lf取为S型函数,即xlexf11)(,则对于输出层))(1()()()()(ljpjdpljpljpljpOyOO对于隐含层)1()()()()()1(lkjljpljpljpljpwOOe.修正网络连接权值)1()()()1(lipljpijijOkWkW式中,k为学习次数,为学习因子。取值越大,每次权值的改变越剧烈,可能导致学习过程振荡,因此,为了使学习因子的取值足够大,又不至产生振荡,通常在权值修正公式中加入一个附加动量法。在BP中希望误差反向传递,有两种误差反向传递的方式:逐个样本与批处理。在BP算法。一种模式是在给神经网络每提供一组学习样本,就计算一次误差并调整权重系数,这种方法称逐个样本模式.另一种模式是给网络提供所有的样本数据学习完之后,再计算出误差,进而调整权重系数,这种方法称批处理模式.这两种模式各有各的特点.Rumelhart和McClelland假定在学习了全部样榜数据之后才修改权重系数.但是,逐个样本模式在系统辩识和实时控制系统中显得十分重要,因为实时控制中无法将所有模式学习完之后才进行权重系数调整.下面给出了两种算法的程序流程图,见图2.因为只有两类样本,所以使用0代表第一类样本,使用1代表第二类样本,也就是使用0和1作为输出结果T。对应的输出结果T=[0;0;0;0;0;0;0;0;0;0;1;1;1;1;1;1;1;1;1;1]’;通过算法流程图,使用计算机语言对于BP神经网络进行编程实验。图2算法程序图3BP网络参数设置比较使用BP网络中的有动量的梯度下降法对于连接权值与阈值进行调整。在建立好网络之后,通过控制某些参数不变的情况下,调整某一个参数的变化,去实验模拟网络的好坏,通过经验的方式找到较好的训练参数,为今后模型的初始化提供可靠的参数。3.1网络评价标准评价网络设计的好坏,首先是它的精度,其次是它的训练时间。训练时间包含两层:一层是循环次数,二是每一次循环的时间。本报告选用样本分类的错误率,迭代的次数与总的迭代时间,对于网络进行必要的评价。3.2初始权值的设置初始权值的选取对于学习是否达到局部最小,是否能够收敛,以及训练的时间有很大的关系。初始权值的过大与过小,均会影响学习的速度,因此在报告中选用(0,1)之间随机分布的小数进行设置。具体的设置结果如图所示:inputWeights=0.58570.25310.06880.17420.91710.18350.72860.75820.73710.53430.88700.6967inputbias=0.77700.50190.42550.6112layerWeights=0.85580.67080.52360.2988layerbias=0.7040inputWeights为输入层与隐含层的连接权值的初始化;inputbias为隐含层的阈值;layerWeights为隐含层到输出层的连接权值;layerbias为输出层阈值的设置。通过对于权值初始化的改变,观察网络的性能,具体见表2:表2权值实验参数表权值范围(0,1)(-1,0)(0.5,1)(-1,-0.5)(0,0.5)(-0.5,0)迭代次数177230500520250180迭代时间112201错误率055500由实验可知,网络的性能以初始化的权值有很大的关系,初始值的好坏,直接影响迭代次数与网络的精度。并且可以初步猜想:初始权值的随机性能,对于网络的结果产生了直接的影响,后面的变量控制之后,网络所得结果也会出行随机波动的现象。为了产生稳定的结果,后面的操作将初始值进行固定化,取值在(0,1)之间的随机数。3.3学习速率η的选取学习速率决定每一次循环训练所产生的权值变化量。学习速率高,系统可能不稳定;过低,训练时间长,不收敛。经验的话,一般取值在0.01~0.8之间。实验参数见表:表3学习速率实验参数表学习速率0.010.050.10.20.70.8迭代次数9302313734219210迭代时间(S)310011错误率(%)1510151550100通过实验发现,随着学习速率的增加,迭代次数现减少后增加,错误率也是同样的变化趋势。推荐本报告的学习速率取值在0.1至0.2之间。3.4学习误差的选取学习误差越小,样本训练的精度越高,但是迭代的次数与训练的时间会相应的增加。实验参数见表:表4学习误差实验参数表学习误差0.30.10.050.010.0050.001迭代次数41551701346382711674迭代时间(S)0111340错误率(%)25150000通过实验可知,学习误差设置在0.05到0.01之间比较合适,在保证错误率最小的情况下,可以使得算法的迭代次数与迭代时间最小。3.5惯性系数的选取本报告选用有动量的梯度下降算法对于权值与阈值进行逆向调整,其中的惯性系数,是将之前的学习经验考虑紧修正过程,实质相当于阻尼项,减小学习过程的震荡,赶山收敛性,它的取值在(0,1)之间,实验参数交表:表5动量因子实验参数表动量因子00.10.30.50.71迭代次数26912523142656215000迭代时间(S)1011250错误率(%)0555540通过实验可知,惯性系数取值在0至0.3之间比较合适,较大的时候收敛较慢,迭代次数与时间都剧烈增加。3.6隐层节点数相对于增加网络隐含层的数量,增加隐含层节点数可以比较容易的提高整个网络的训练精度,具体参数见表:表6节点数量实验参数表隐层节点数456789迭代次数20021918097100180迭代时间(S)111001错误率(%)500505通过实验可知,随着隐含层的节点数的增加,迭代次数变化规律不是很显著,错误率确实逐渐减小的,本报告最优的节点数目应该是5至6个。4BP网络拟合结果通过上一章的参数设置训练,逐步找到了适合本报告的参数值。在选用上述参数值的情况下,对于实验的结果进行分析。图3实验结果通过训练的网络对于实验结果进行预测,结果如上图所示,预测类型与真实类型进行了100%的匹配,训练结果比较理想。图4均方误差上图为均方误差图,随着迭代次数的增加,均方误差逐渐减小,并逐渐收敛到指定的误差范围。图5判别函数通过将两类数据进行分类,拟合出它的判别函数完成分类器的设计,上图为具体的判别函数的形式。5总结通过这次实验,学会了如何使用BP神经网络解决二分类的问题,对于网络的参数以及相应的性能进行了探究,深刻的认识了BP神经网络的核心思想。一下是自己的一些见解:(1)批处理从本质上是在线处理的特例,不过批处理处理能力,迭代速度更优,在线处理的实际意义更加强大,对不同的问题,选用不同的方法解决;本次选用批处理进行,因为本次实验不具有在线处理的特性,得到的效果也不如批处理优越(2)BP神经网络从理论上可以解决任意维数的线性分类问题,只要通过增加隐含层的数量,节点的数目,控制学习误差,速率等参数,就可以实现这一目标,本次实验由于二分类,没有必要增加隐层的层数,有些认识上的缺憾。(3)BP神经网络作为一种启发式的算法,试图寻找全局最优解,在理论上仍然有待提高。学习完模式识别这门课,对于聚类与分类的认识,上升到了一个比较新的台阶,希望今后可以更进一步学习。