哈工大模式识别实验报告概论

哈工大模式识别实验报告概论
哈工大模式识别实验报告概论

模式识别实验报告

本次报告选做第一个实验,实验报告如下:

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是样本的特征)

2 BP 网络的构建

三层前馈神经网络示意图,见图1.

图1 三层前馈神经网络

①网络初始化,用一组随机数对网络赋初始权值,设置学习步长η、允许误差ε、网络结构(即网络层数L 和每层节点数n l );

②为网络提供一组学习样本; ③对每个学习样本p 循环

a .逐层正向计算网络各节点的输入和输出;

b .计算第p 个样本的输出的误差Ep 和网络的总误差E ;

c .当E 小于允许误差ε或者达到指定的迭代次数时,学习过程结束,否则,进行误差反向传播。

d .反向逐层计算网络各节点误差)

(l jp δ

如果l f 取为S 型函数,即x

l e x f -+=

11

)(,则 对于输出层))(1()

()()()(l jp jdp l jp l jp l jp O y O O --=δ 对于隐含层∑+-=)1()()()()()1(l kj l jp l jp l jp l jp w O O δδ

e .修正网络连接权值

)

1()()()1(-+=+l ip l jp ij ij O k W k W ηδ

式中,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 算法程序图

3 BP网络参数设置比较

使用BP网络中的有动量的梯度下降法对于连接权值与阈值进行调整。在建立好网络之后,通过控制某些参数不变的情况下,调整某一个参数的变化,去实验模拟网络的好坏,通过经验的方式找到较好的训练参数,为今后模型的初始化提供可靠的参数。

3.1 网络评价标准

评价网络设计的好坏,首先是它的精度,其次是它的训练时间。训练时间包含两层:一层是循环次数,二是每一次循环的时间。本报告选用样本分类的错误率,迭代的次数与总的迭代时间,对于网络进行必要的评价。

3.2 初始权值的设置

初始权值的选取对于学习是否达到局部最小,是否能够收敛,以及训练的时间有很大的关系。初始权值的过大与过小,均会影响学习的速度,因此在报告中选用(0,1)之间随机分布的小数进行设置。具体的设置结果如图所示:inputWeights =

0.5857 0.2531 0.0688

0.1742 0.9171 0.1835

0.7286 0.7582 0.7371

0.5343 0.8870 0.6967

inputbias =

0.7770

0.5019

0.4255

0.6112

layerWeights =

0.8558 0.6708 0.5236 0.2988

layerbias =

0.7040

inputWeights为输入层与隐含层的连接权值的初始化;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个。

4 BP网络拟合结果

通过上一章的参数设置训练,逐步找到了适合本报告的参数值。在选用上述参数值的情况下,对于实验的结果进行分析。

图3 实验结果

通过训练的网络对于实验结果进行预测,结果如上图所示,预测类型与真实类型进行了100%的匹配,训练结果比较理想。

图4 均方误差

上图为均方误差图,随着迭代次数的增加,均方误差逐渐减小,并逐渐收敛到指定的误差范围。

图5 判别函数

通过将两类数据进行分类,拟合出它的判别函数完成分类器的设计,上图为具体的判别函数的形式。

5 总结

通过这次实验,学会了如何使用BP神经网络解决二分类的问题,对于网络的参数以及相应的性能进行了探究,深刻的认识了BP神经网络的核心思想。一下是自己的一些见解:

(1)批处理从本质上是在线处理的特例,不过批处理处理能力,迭代速度更优,在线处理的实际意义更加强大,对不同的问题,选用不同

的方法解决;本次选用批处理进行,因为本次实验不具有在线处理

的特性,得到的效果也不如批处理优越

(2)BP神经网络从理论上可以解决任意维数的线性分类问题,只要通过增加隐含层的数量,节点的数目,控制学习误差,速率等参数,就

可以实现这一目标,本次实验由于二分类,没有必要增加隐层的层

数,有些认识上的缺憾。

(3)BP神经网络作为一种启发式的算法,试图寻找全局最优解,在理论上仍然有待提高。学习完模式识别这门课,对于聚类与分类的认

识,上升到了一个比较新的台阶,希望今后可以更进一步学习。

相关主题
相关文档
最新文档