实验二多层前向网络应用于字符识别一、实验的目的1.通过实验了解多层前向网络的工作原理;2.通过实验掌握多层前向网络用于字符识别的基本原理与方法;3.通过上机实验掌握BP算法的具体实现和神经网络工具箱中相关函数的使用。二、实验原理1.多层前向网络的工作原理简述前向网络:实现复杂的非线性映射、结构简单、易编程。前向网络结构图1)单隐层前向网络2)一般层(第l层结构(1lL))更精确地(第l层结构)第l层输出)()()(1)()1()()(1lilSjliljlijlliVfywfyl,1liSwhere)(1)1()()(1liSplpliplilywV-----第l层第i个神经元的净输入。激活函数:xexf11)(,21()111xxxefxee,xxf)((输出层,函数逼近)2.BP算法简述(a)初始化Selecttheweightsandthresholdswithsmallstochasticnumber,say]1.0,1.0[.(b)前向计算(第k步)))(()()()()()()()()(1)1()()(1kVfkykkykwkVlilliliSjljlijlil,Ll,,2,1,lSi1,where)()()0(kkxy.(c)后向计算(第k步).1)),(()))(()((2)()(')()(LLiLLiLiLiSmikVfkVfktkFor1,,2,1LLl.1,)())(()()(11)1()(')1()(lSjljlilljiliSikkVfkwkl(d)更新权值和阈值)(1)()(1)()()()1()()()(kkkkykkwkwlilililjlilijlij,.1,1,11LlSjSill主要包括:权值与阈值的初始化、网络结构选择、学习步长选择、收敛速度等。1.权值与阈值的初始化(1)选择很小的随机数:如取]1,1[,]10.,1.0[中均匀分布的随机数。Goal:避免节点饱和,导致迭代次数的大量增加。(2)试多个初值2.网络结构的选择网络的近似和泛化能力依靠:网络结构、训练样本数。(1)层数常用二层(单隐层)、三层(双隐层),四层以上为特殊目的。Remark:(a)单隐层的问题:神经元之间“相互作用”。在这种情况下,由于缺少冗余性,提高映射在一个点的逼近精度而不恶化其它点的逼近程度是困难的;(b)双隐层优点:使得拟合更加容易。第一隐层学习局部特征,第二隐层抽取整体特征。(2)神经元个数的选择神经元个数不是越多越好,特别对含噪数据。原因:过拟合,缺乏泛化能力。建议:尽量使用更小的网络:网络参数个数训练样本个数。(1)防过拟合的方法---Cross-ValidationMethodAim:选取隐层最优神经元个数:10,20,30,40,50可利用数据的划分:如泛化误差、识别率给老板看最终选定模型的评估检测集确定最佳神经元个数验证集训练网络训练集)(:)25%SetTest(:%)25SetValidation(:%)50setTraining(Remark:此法可用于确定:最优参数。3.学习率的选取通常很小:0.1,0.05,0.01,0.005.太小:收敛慢;太大:震荡或不收敛。4.训练的停止准则-----Cross-ValidationLearningset,Validationset,TestsetStoppingcriterion:训练误差曲线与确认误差曲线相背离,停止。5.PatternClassification输出层——Sigmoid函数;M类(2M)),1,,(or,1),(0,0,MClass),,,(1or,0),(1,0,1ClassM目标输出:个神经元输出层,05.0;新模式x的判别:iiykyyyM1TM21maxarg),,,(yx.Classkx3.动量BP算法低通滤波器(IIR):)()1()1()(kxrkryky,10r,jrer11)H())X(H()Y(.显然,011)H(1)0H(rr低通滤波器。BP算法:)(1)()(1)()()()1()()()(kkkkykkwkwlilililjlilijlij动量BP算法:(对)()()(F)()()()(kykwljlikwwlijkw)和)()(F)()()(klikwwlikw进行低通滤波))(1)(1)()()()()()(kkkkwkwkwlilililijlijlijwhere)()1()1()()()()1()1()()()()()()()()(krkrkkykrkwrkwlilililjlilijlij三、问题的描述字符识别是模式识别的一个重要的研究方向,在很多领域有着广泛的应用。本试验考虑设计一个多层前向网络用于二十六个英文字母的识别。在计算机中,字符或图像均可用位图形式描述。图1给出了字母A的位图形式,如果用1表示,其余元素用0表示,则字母A可以用一个如下57的矩阵表示图1字母A的位图图2含噪字母A的位图10001100011111110001010100101000100A.如果将上述矩阵按行拉直,则得到字母A的理想特征向量表示,即T1]000110001111111000101010010100010[0A.用同样的方式,可以定义其它所有26个英文字母的理想特征向量,以作为多层前向网络的输入向量。26个英文字母对应的神经网络的目标输出,用一个26维的向量表示,例如,字母A、B的目标输出分别为TT0]000000000000000000000001[0target_B0]000000000000000000000000[1target_A其它字母依次类推。26个英文字母的理想特征向量及其所对应的目标输出,可通过调用”prprob”函数得到,位图可使用”plotchar”画出。利用多层前向网络进行字符识别,就是通过设计和训练一个网络,使网络能够对应于字符的特征向量输入得到相应的目标输出。然而,在实际识别过程中,待识别字符的特征向量通常是所对应的理想特征向量的含噪版本,图2给出了一个含有噪声的字母A的位图。因此,在训练和设计网络时,应该使网络具有一定的抑制噪声的能力。四、实验的内容和步骤1.阅读多层前向网络的原理及其相应的BP算法,设计一个输入层和输出层神经元个数为35、26的单隐层的神经网络,编制程序进行实验。熟悉神经网络工具箱中如下函数:traingdx:具有自适应学习率的动量BP学习算法的训练函数;newff:生成一个新的多层前向网络;train:对网络进行训练;sim:对网络进行仿真,即求网络对给定输入所对应的输出;2.选取隐层神经元的个数为10,采用每个字母理想特征向量的20个加噪的版本(均值为0,方差为0.1和0.2的高斯白噪各10个)作为训练样本,选取适当的初始权值和阈值对网络进行训练,直到网络收敛;3.训练结束后,检验网络的识别能力。产生一系列加噪的特征向量(均值为0高斯白噪)作为网络的输入向量,检验在噪声方差依次为0:0.05:0.5下的正确恢复率,绘出识别率与噪声方差的变化关系曲线,观察它们的变化规律;4.选取不同的初始权值和阈值对网络进行训练,分别画出训练误差收敛曲线,观察它们的变化规律。要求至少选取两组,一组在大的区间选取,一组在小的区间选取;5.使用交叉确认法确定最优隐层神经元的个数,其中一半用于训练网络,另一半用于交叉确认,对于选定的具有最优因曾神经元的网络进行训练,并在训练结束后观察在噪声方差依次为0:0.05:0.5下的正确恢复率,用于交叉确认的隐层神经元的个数依次为:5,10,15,20,30,40;训练样本的选择:每个字母理想特征向量的40个加噪的版本(均值为0,方差为0.1和0.2的高斯白噪各20个);交叉确认样本的选择。6.为了进一步提高网络的识别能力,可以通过增加含噪训练样本的个数和隐层神经元的个数来实现,给出你的试验结果。五.实验结果及分析1)所设计的一个输入层和输出层神经元个数为35、26的单隐层的神经网络如下:网络收敛图示网络识别图待识别的字母识别后的字母2)所设计的一个输入层和输出层神经元个数为35、26的单隐层的神经网络,选取适当的初始权值和阈值对网络进行训练,直到网络收敛;结果如下:网络收敛图3)训练结束后,检验网络的识别能力。检验在噪声方差依次为0:0.05:0.5下的正确恢复率,绘出识别率与噪声方差的变化关系曲线,结果如下图:结果分析:由上图易知识别率随着噪声的方差增大逐渐减少,虽有一些波动大体趋势较稳定。4)选取不同的初始权值和阈值对网络进行训练,画出训练误差收敛曲线,结果如下图:00.050.10.150.20.250.30.350.40.450.50.40.50.60.70.80.91噪声方差var识别率Rrate识别率随噪声方差的变化关系图在[-0.5,0.5]之间选取的收敛曲线在[-0.01,0.01]之间选取的收敛曲线结果分析:有两组实验结果显然易知,在大区间[-0.5,0.5]之间选取初始权值和阈值比在小区间[-0.01,0.01]上选取从总体上有更快的收敛速度,这种初始权值和阈值的选择,针对不同的问题可能有不同的最优选择区间,这是一种经验的选择,只有多做试验才能大概确定。5)训练样本的选择:每个字母理想特征向量的40个加噪的版本(均值为0,方差为0.1和0.2的高斯白噪各20个);交叉确认样本的选择,结果如下:最佳的神经元个数为:ans=4000.10.20.30.40.50.650.70.750.80.850.90.951噪声方差var识别率Rrate识别率随噪声方差的变化关系图方差0.1的正确识别方差0.2的正确识别待识别的字母识别正确待识别的字母识别正确方差0.3的识别正确方差0.3的错误识别待识别的字母识别正确待识别的字母识别错误方差0.5的错误识别方差0.5的正确识别结果分析:由所输出的结果可知最佳神经元个数为40;由识别噪率方差变化关系图可以知道识别率随着噪声方差的增大而减小。待识别的字母识别错误待识别的字母识别正确6)为了进一步提高网络的识别能力,可以通过增加含噪训练样本的个数和隐层神经元的个数来实现,试验结果如下:增加含噪训练样本个数后识别率的变化(神经元个数为15)含噪训练样本个数5035075976791248识别率(方差为0)(%)8898100100100识别率(方差0.1的)(%)8795918181识别率(方差0.3的)(%)5560455654增加隐层神经元个数后识别率的变化(含噪训练样本为493个)隐层神经元个数1015202530识别率(方差为0)(%)8594100100100识别率(方差0.1的)(%)5463868990识别率(方差0.3的)(%)3349566564结果分析:由上表一推断,在隐层神经元个数不变的情况下,识别率方差为零的情况下随着含噪训练样本的增加,识别率总体上是增大的趋势,而识别率方差为0.1和0.3的情况下会出现极大值;由表二得,在训练样本个数不变的情况下,随着隐层神经元个数的增加,识别率是增大的趋势。六.总结通过本次试验,可知BP网络结果可用于识别字幕数字等识别分类器的设计中。不过,要值得注意的是对含噪的识别还是有一定的误差,需要进一步改进算法,即需要提高抗噪能力。也得到了一些提高识别能力有关的结论,如:训练样本一般