实验七基于神经网络的模式识别实验一、实验目的理解BP神经网络和离散Hopfield神经网络的结构和原理,掌握反向传播学习算法对神经元的训练过程,了解反向传播公式。通过构建BP网络和离散Hopfield网络模式识别实例,熟悉前馈网络和反馈网络的原理及结构。二、实验原理BP学习算法是通过反向学习过程使误差最小,其算法过程从输出节点开始,反向地向第一隐含层(即最接近输入层的隐含层)传播由总误差引起的权值修正。BP网络不仅含有输入节点和输出节点,而且含有一层或多层隐(层)节点。输入信号先向前传递到隐节点,经过作用后,再把隐节点的输出信息传递到输出节点,最后给出输出结果。离散Hopfield神经网络的联想记忆过程分为学习和联想两个阶段。在给定样本的条件下,按照Hebb学习规则调整连接权值,使得存储的样本成为网络的稳定状态,这就是学习阶段。联想是指在连接权值不变的情况下,输入部分不全或者受了干扰的信息,最终网络输出某个稳定状态。三、实验条件Matlab7.X的神经网络工具箱:在Matlab7.X的命令窗口输入nntool,然后在键盘上输入Enter键,即可打开神经网络工具箱。四、实验内容1.针对教材P243例8.1,设计一个BP网络结构模型(63-6-9),并以教材图8.5为训练样本数据,图8.6为测试数据。(1)运行train_data.m和test_data.m文件,然后从Matlab工作空间导入(Import)训练样本数据(inputdata10,outputdata10)和测试数据(testinputdata,testoutputdata),其次新建一个神经网络(NewNetwork),选择参数如下表1,给出BP神经网络结构图。表1BP网络结构模型的各项参数设置NetworkName(神经网络名称)nn10_1NetworkType(神经网络类型)Feed-forwardbackprop(前馈反向传播)Inputranges(输入信息范围)来自训练样本的输入数据(inputdata10)Trainingfunction(训练函数)TRAINGD(梯度下降BP算法)Performancefunction(性能函数)MSE(均方误差)Numberoflayers(神经网络层数)2Layer1(第1层)的Numberofneurons(神经元个数)6Layer1(第1层)的TransferFunction(传递函数)LOGSIG(S型函数)Layer2(第2层)的Numberofneurons(神经元个数)9Layer2(第2层)的TransferFunction(传递函数)LOGSIG(S型函数)(2)输入训练样本数据(inputdata10,outputdata10),随机初始化连接权(InitializeWeights),然后进行训练(Train),训练参数设置如表2所示,并观察训练目标值变化曲线图,最后把BP神经网络训练成功后(即误差不再变化后)的误差值填入表3。表2BP网络训练参数训练次数(epochs)10000训练时间(time)Inf训练目标(goal)0学习率(lr)0.3最大确认失败次数(max_fail)5最小性能梯度(min_grad)1e-050两次显示之间的训练步数(show)25表3BP网络各训练算法的训练目标值Trainingfunction(训练函数)NetworkName(神经网络名称)训练次数(epochs)Performance(训练目标值)TRAINGD(梯度下降BP算法)nn10_1TRAINGDM(梯度下降动量BP算法)nn10_2TRAINLMM(Levenberg-MarquardtBP训练函数)nn10_3TRAINRP(弹性BP算法)nn10_4TRAINSCG(变梯度算法)nn10_5(3)选择不同的训练函数,例如TRAINGDM(梯度下降动量BP算法)、TRAINLMM(Levenberg-MarquardtBP训练函数)、TRAINRP(弹性BP算法)、TRAINSCG(变梯度算法),然后输入训练样本数据(inputdata10,outputdata10),训练参数设置如表2所示,设置相同的初始连接权(RevertWeights),观察不同BP训练算法的学习效果,把各训练算法的训练目标值填入上表3。(4)选择训练目标值最小的一种训练算法,选择Weights选项给出其训练后的连接权值和偏置,然后输入测试数据(testinputdata,testoutputdata)进行仿真(Simulate),并把训练和测试的结果都导出(Export)到工作空间,给出训练后的输出结果和输出误差,以及测试后的输出结果和输出误差。(5)对步骤(4)所选择的训练算法,再增加30组样本,然后新建一个神经网络(NewNetwork)的结构为63-16-4,设置NetworkName(神经网络名称)为nn40,并重新按照步骤(2)进行训练(Train),即输入训练样本数据(inputdata40,outputdata8421_40),训练参数设置如表2所示,随机初始化连接权(InitializeWeights)。其次输入测试数据(testinputdata,testoutputdata8421)进行仿真(Simulate),并把训练和测试的结果都导出到工作空间,给出训练后的输出结果和输出误差,以及测试后的输出结果和输出误差。(6)针对Trainingfunction(训练函数)为TRAINGD的BP网络(nn10_1),然后设置不同的学习率(lr),例如0.01、0.1、0.5、1,按照步骤(2)进行训练,观察TRAINGD训练算法的学习效果,把各学习率下的训练目标值值填入表4。表4BP网络各训练算法的训练目标值TRAINGD训练算法的学习率Performance(训练目标值)0.010.10.512.已知字符点阵为模式,两组训练数据为大写字母L小写字母l图1训练数据设计一个能够存储这两个字符的离散Hopfield神经网络,要求:(1)给出相应的离散Hopfield神经网络结构图;(2)计算连接权值及阈值(阈值可设为0);22)小写字母)大写字母laaTT(1010L(1101)2()1((3)输入下列测试数据图2测试数据给出网络最终输出的稳定状态。五、实验报告要求:1.按照实验内容,给出相应结果。2.分析比较采用梯度下降训练算法的BP网络学习率的变化对于训练结果的影响。3.分析比较BP网络和离散Hopfield网络在模式识别方面的异同点。下面是实验报告的基本内容和书写格式。(10165956@qq.com)实验名称班级:学号:姓名:一、实验目的二、实验原理三、实验结果按照实验内容,给出相应结果。四、实验总结1.完成实验报告要求2。2.总结实验心得体会——————————————————————————————————TTtt11001011)2()1(