第四章Matlab神经网络工具箱与数值试验1第一章Matlab神经网络工具箱介绍与数值试验1.1Matlab神经网络工具箱中BP网络相关函数介绍MATLAB神经网络工具箱中包含了许多用于BP网络分析和设计的函数。BP网络的常用函数如表4-1所示。[10,12]表4-1BP网络的常用函数函数类型函数名称函数用途前向网络创建函数newcf创建一个多层前馈BP网络newff创建一个前向BP网络newfftd创建一个前馈输入延迟BP网络传递函数logsigS型的对数函数dlogsigLogig的导函数tansigS型的正切函数dtansigtansig的导函数purelin纯线性函数学习函数traingd基于标准BP算法的学习函数trainrp采用Rprop算法训练trainlm采用LM算法训练traincgf基于共轭梯度法的学习函数traingdm动量梯度下降算法学习函数仿真函数sim仿真一个神经网络1.2数值试验1.2.1.“异或”问题“异或”问题(XOR)是典型的非线性划分问题。这里以它为例,简单介绍BP网络的应用。在Matlab7.0环境下,建立一个三层的BP神经网络,其中输入层和隐层分别各有两个神经元,输出层有一个神经元。现要求训练这一网络,使其具有解决“异或”问题的能力。第四章Matlab神经网络工具箱与数值试验2“异或”问题的训练输入和期望输出如表5-1。表5-1异或问题的训练输入和期望输出1X2X1d0000111011101)基于标准BP算法结果如下及图5.1所示:横轴表示迭代次数,纵轴表示误差。迭代到第240次时达到预设精度。迭代停止时,误差为9.97269e-005,此时的梯度为0.00924693。05010015020010-410-310-210-1100101240EpochsTraining-BlueGoal-BlackPerformanceis9.97269e-005,Goalis0.0001图5.1基于标准BP算法的“异或”问题2)基于共轭梯度法结果如下及图5.2所示:第四章Matlab神经网络工具箱与数值试验3横轴表示迭代次数,纵轴表示误差。迭代到第16次时达到预设精度。迭代停止时,误差为9.0770e-005,此时的梯度为0.00318592。024681012141610-410-310-210-110010116EpochsTraining-BlueGoal-BlackPerformanceis9.07705e-005,Goalis0.0001图5.2基于共轭梯度法的“异或”问题3)基于LM算法结果如下及图5.3所示:横轴表示迭代次数,纵轴表示误差。迭代到第4次时达到预设精度。迭代停止时,误差为8.8892e-006,此时的梯度为0.00727382。第四章Matlab神经网络工具箱与数值试验400.511.522.533.5410-610-510-410-310-210-11001014EpochsTraining-BlueGoal-BlackPerformanceis8.88918e-006,Goalis0.0001图5.3基于LM算法的“异或”问题4)基于RPROP算法结果如下及图5.4所示:横轴表示迭代次数,纵轴表示误差。迭代到第31次时达到预设精度。迭代停止时,误差为4.6696e-005,此时的梯度为0.00721433。第四章Matlab神经网络工具箱与数值试验505101520253010-410-310-210-110010131EpochsTraining-BlueGoal-BlackPerformanceis4.66955e-005,Goalis0.0001图5.4基于RPROP算法的“异或”问题1.2.2.连续函数拟合问题一个神经网络最强大的用处之一是在函数逼近上。它可以用在诸如被控对象的模型辨识中,即将过程看成一个黑箱子,通过测量其输入/输出特性,然后利用所得实际过程的输入/输出数据训练一个神经网络,使其输出对输入的响应特性具有与被辨识过程相同的外部特性[10]。1)线性函数拟合使用标准BP算法,对函数y=5x进行拟合。结果如图5.5,红色虚线和“+”号表示拟合结果。迭代到第8次时达到预设精度。迭代停止时,误差为2.49485e-005,此时的梯度为0.0190722。第四章Matlab神经网络工具箱与数值试验6-1-0.8-0.6-0.4-0.200.20.40.60.81-5-4-3-2-1012345图5.5线性函数拟合2)二次函数拟合使用RPROP算法,对函数2y=x-4进行拟合。结果如图5.6,红色虚线和“+”号表示拟合结果。迭代到第320次时达到预设精度。迭代停止时,误差为9.9923e-005,此时的梯度为0.00135595。第四章Matlab神经网络工具箱与数值试验7-1-0.8-0.6-0.4-0.200.20.40.60.81-4-3.8-3.6-3.4-3.2-3-2.8-2.6图5.6二次函数拟合3)sin函数拟合使用共轭梯度算法,对函数y=sinx进行拟合。结果如图5.7,红色虚线和“+”号表示拟合结果。迭代到第119次时达到预设精度。迭代停止时,误差为9.92315e-005,此时的梯度为0.0025562。第四章Matlab神经网络工具箱与数值试验8-4-3-2-101234-1-0.8-0.6-0.4-0.200.20.40.60.81图5.7sin函数拟合4)指数函数拟合使用LM算法,对函数y=xe进行拟合。结果如图5.8,红色虚线和“+”号表示拟合结果。迭代到第8次时达到预设精度。迭代停止时,误差为5.99591e-005,此时的梯度为0.0544397。第四章Matlab神经网络工具箱与数值试验9-2-1.5-1-0.500.511.52012345678图5.8指数函数拟合5)复合函数拟合使用LM算法,对函数sin1y=xe进行拟合。结果如图5.8,红色虚线和“+”号表示拟合结果。迭代到第9次时达到预设精度。迭代停止时,误差为9.73363e-005,此时的梯度为0.0163562。第四章Matlab神经网络工具箱与数值试验10-2-1.5-1-0.500.511.52-1-0.8-0.6-0.4-0.200.20.40.60.81图5.9复合函数拟合1.2.3.3-bitParity问题这次仿真我们考虑3-bitParity问题,该问题被认为是“异或”问题的三位形式。这个问题描绘了三个二进制输入得到一个二进制输出的过程。如果输入中1的个数是奇数个,则输出是1。反之,输出为0[14]。3-bitParity问题的训练输入和期望输出如表5-2。表5-23-bitParity问题的训练输入和期望输出1X2X3X1d00000011010101101001101011001111第四章Matlab神经网络工具箱与数值试验111)基于标准BP算法结果如下及图5.10所示:横轴表示迭代次数,纵轴表示误差。迭代到第113次时达到预设精度。迭代停止时,误差为9.99979e-005,此时的梯度为0.00799224。02040608010010-410-310-210-1100101113EpochsTraining-BlueGoal-BlackPerformanceis9.99979e-005,Goalis0.0001图5.10基于最速下降法的3-bitParity问题2)基于共轭梯度法结果如下及图5.11所示:横轴表示迭代次数,纵轴表示误差。迭代到第60次时达到预设精度。迭代停止时,误差为9.42383e-005,此时的梯度为0.0161969。第四章Matlab神经网络工具箱与数值试验12010203040506010-410-310-210-110060EpochsTraining-BlueGoal-BlackPerformanceis9.42383e-005,Goalis0.0001图5.11基于共轭梯度法的3-bitParity问题3)基于LM算法结果如下及图5.12所示:横轴表示迭代次数,纵轴表示误差。迭代到第19次时达到预设精度。迭代停止时,误差为9.49592e-006,此时的梯度为0.025507。第四章Matlab神经网络工具箱与数值试验1302468101214161810-610-510-410-310-210-110010119EpochsTraining-BlueGoal-BlackPerformanceis9.49592e-006,Goalis0.0001图5.12基于LM算法的3-bitParity问题4)基于RPROP算法结果如下及图5.13所示:横轴表示迭代次数,纵轴表示误差。迭代到第33次时达到预设精度。迭代停止时,误差为9.09842e-005,此时的梯度为0.0115333。第四章Matlab神经网络工具箱与数值试验1405101520253010-410-310-210-110033EpochsTraining-BlueGoal-BlackPerformanceis9.09842e-005,Goalis0.0001图5.13基于RPROP算法的3-bitParity问题第四章Matlab神经网络工具箱与数值试验15第四章Matlab神经网络工具箱与数值试验16第二章总结BP网络的算法实际上就是解决一个无约束最优化问题。标准BP算法是BP神经网络的最基本的算法,应用了最速下降法的思想,所以它不可避免的具备了最速下降法所带了的缺点。为了克服标准BP算法的缺陷,人们进行了更深入的研究,对标准BP算法进行了改进,并提供了一系列快速学习算法,以满足解决不同问题的需要。快速BP算法从改进途径上可分为两大类:一类是采用启发式学习方法,如引入动量因子的学习算法、变学习速率学习算法等;另一类则是采用更有效的数值优化方法,如共轭梯度学习算法、Levenberg-Marquardt算法以及B&B算法等。对于不同的问题,在选择学习算法对BP网络进行训练时,不仅要考虑算法本身的性能,还要视问题的复杂度、样本集大小、网络规模、网络误差目标和所要解决的问题类型而定[10]。2.1各种算法的优缺点比较标准BP算法易于理解,方法简单,每一次迭代的工作量较小,所需要的存储空间也较小,而且即使从一个不好的初值开始计算,也可以保证算法的收敛性[11]。不过正如前文中数值试验所表现的那样,标准BP算法在收敛速度上很慢,迭代次数很多,而且受学习率的影响很大。Levenberg-Marquardt算法是应用于训练BP网络问题的牛顿算法的一个简单版本。它的突出优点是收敛速度快,而且收敛误差小。它的缺点也很突出,它所需的存储空间很大,计算量也很大,所以当网络规模增大时,它的性能会变得很差。另外,LM算法对初值的选择很敏感,不恰当的初值会使算法不收敛。对于规模较小的BP网络,LM算法不失为一个极好的选择。共轭梯度算法是上面两种算法的一个折中算法。它比标准BP算法收敛速度快,比LM算法的计算量小,性能稳定,所需的存储空间也不算很大。它更适合解决网络规模比较大的情况。第四章Matlab神经网络工具箱与数值试验17RPROP算法是一种有“弹性”的学习算法。算法直观易理解,计算难度小,收敛速度较快,占用存储空间较小。RPROP算法在分类问题上的表现比在函数逼近问题上的表现要更好。