第一章Matlab神经网络工具箱介绍和数值试验1.1Matlab神经网络工具箱中BP网络相关函数介绍MATLAB神经网络工具箱中包含了许多用于BP网络分析和设计的函数。
BP网络的常用函数如表4-1所示。
[10,12]表4-1 BP网络的常用函数函数类型函数名称函数用途前向网络创建函数newcf 创建一个多层前馈BP网络newff 创建一个前向BP网络newfftd 创建一个前馈输入延迟BP网络传递函数logsig S型的对数函数dlogsig Logig的导函数tansig S型的正切函数dtansig tansig的导函数purelin 纯线性函数学习函数traingd 基于标准BP算法的学习函数trainrp 采用Rprop算法训练trainlm 采用LM算法训练traincgf 基于共轭梯度法的学习函数仿真函数sim 仿真一个神经网络1.2数值试验1.2.1.“异或”问题“异或”问题(XOR)是典型的非线性划分问题。
这里以它为例,简单介绍BP网络的使用。
在Matlab7.0环境下,建立一个三层的BP神经网络,其中输入层和隐层分别各有两个神经元,输出层有一个神经元。
现要求训练这一网络,使其具有解决“异或”问题的能力。
“异或”问题的训练输入和期望输出如表5-1。
表5-1 异或问题的训练输入和期望输出1X 2X 1d0 0 0 0 1 1 1 0 1 111)基于标准BP 算法结果如下及图5.1所示:横轴表示迭代次数,纵轴表示误差。
迭代到第240次时达到预设精度。
迭代停止时,误差为9.97269e-005,此时的梯度为0.00924693。
05010015020010-410-310-210-110101240 EpochsT r a i n i n g -B l u e G o a l -B l a c kPerformance is 9.97269e-005, Goal is 0.0001图5.1 基于标准BP 算法的“异或”问题2)基于共轭梯度法结果如下及图5.2所示:横轴表示迭代次数,纵轴表示误差。
迭代到第16次时达到预设精度。
迭代停止时,误差为9.0770e-005,此时的梯度为0.00318592。
024681012141610-410-310-210-11010116 EpochsT r a i n i n g -B l u e G o a l -B l a c kPerformance is 9.07705e-005, Goal is 0.0001图5.2 基于共轭梯度法的“异或”问题3) 基于LM 算法结果如下及图5.3所示:横轴表示迭代次数,纵轴表示误差。
迭代到第4次时达到预设精度。
迭代停止时,误差为8.8892e-006,此时的梯度为0.00727382。
10-610-510-410-310-210-1101014 EpochsT r a i n i n g -B l u e G o a l -B l a c kPerformance is 8.88918e-006, Goal is 0.0001图5.3 基于LM 算法的“异或”问题4) 基于RPROP 算法结果如下及图5.4所示:横轴表示迭代次数,纵轴表示误差。
迭代到第31次时达到预设精度。
迭代停止时,误差为4.6696e-005,此时的梯度为0.00721433。
5101520253010-410-310-210-11010131 EpochsT r a i n i n g -B l u e G o a l -B l a c kPerformance is 4.66955e-005, Goal is 0.0001图5.4 基于RPROP 算法的“异或”问题1.2.2. 连续函数拟合问题一个神经网络最强大的用处之一是在函数逼近上。
它可以用在诸如被控对象的模型辨识中,即将过程看成一个黑箱子,通过测量其输入/输出特性,然后利用所得实际过程的输入/输出数据训练一个神经网络,使其输出对输入的响应特性具有和被辨识过程相同的外部特性[10]。
1)线性函数拟合使用标准BP 算法,对函数y =5x 进行拟合。
结果如图5.5,红色虚线和“+”号表示拟合结果。
迭代到第8次时达到预设精度。
迭代停止时,误差为2.49485e-005,此时的梯度为0.0190722。
-5-4-3-2-1012345图5.5 线性函数拟合2) 二次函数拟合使用RPROP 算法,对函数2y =x -4进行拟合。
结果如图5.6,红色虚线和“+”号表示拟合结果。
迭代到第320次时达到预设精度。
迭代停止时,误差为9.9923e-005,此时的梯度为0.00135595。
-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 =sin x 进行拟合。
结果如图5.7,红色虚线和“+”号表示拟合结果。
迭代到第119次时达到预设精度。
迭代停止时,误差为9.92315e-005,此时的梯度为0.0025562。
10.80.60.40.2-0.2-0.4-0.6-0.8-1图5.7 sin函数拟合4)指数函数拟合使用LM算法,对函数y=x e进行拟合。
结果如图5.8,红色虚线和“+”号表示拟合结果。
迭代到第8次时达到预设精度。
迭代停止时,误差为5.99591e-005,此时的梯度为0.0544397。
-2-1.5-1-0.500.51 1.52012345678图5.8 指数函数拟合5) 复合函数拟合使用LM 算法,对函数sin 1y = x e 进行拟合。
结果如图5.8,红色虚线和“+”号表示拟合结果。
迭代到第9次时达到预设精度。
迭代停止时,误差为9.73363e-005,此时的梯度为0.0163562。
-2-1.5-1-0.50.511.52-1-0.8-0.6-0.4-0.200.20.40.60.81图5.9 复合函数拟合1.2.3. 3-bit Parity 问题这次仿真我们考虑3-bit Parity 问题,该问题被认为是“异或”问题的三位形式。
这个问题描绘了三个二进制输入得到一个二进制输出的过程。
如果输入中1的个数是奇数个,则输出是1。
反之,输出为0[14]。
3-bit Parity 问题的训练输入和期望输出如表5-2。
表5-2 3-bit Parity 问题的训练输入和期望输出1X 2X 3X 1d0 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 1 0 0 1 1 0 1 0 1 1 0 0 11111) 基于标准BP 算法结果如下及图5.10所示:横轴表示迭代次数,纵轴表示误差。
迭代到第113次时达到预设精度。
迭代停止时,误差为9.99979e-005,此时的梯度为0.00799224。
02040608010010-410-310-210-1100101113 Epochs T r a i n i n g -B l u e G o a l -B l a c k Performance is 9.99979e-005, Goal is 0.0001图5.10 基于最速下降法的3-bit Parity 问题2) 基于共轭梯度法结果如下及图5.11所示:横轴表示迭代次数,纵轴表示误差。
迭代到第60次时达到预设精度。
迭代停止时,误差为9.42383e-005,此时的梯度为0.0161969。
10203040506010-410-310-210-110060 Epochs T r a i n i n g -B l u e G o a l -B l a c k Performance is 9.42383e-005, Goal is 0.0001图5.11 基于共轭梯度法的3-bit Parity 问题3) 基于LM 算法结果如下及图5.12所示:横轴表示迭代次数,纵轴表示误差。
迭代到第19次时达到预设精度。
迭代停止时,误差为 9.49592e-006,此时的梯度为0.025507。
02468101214161810-610-510-410-310-210-110010119 Epochs T r a i n i n g -B l u e G o a l -B l a c k Performance is 9.49592e-006, Goal is 0.0001图5.12 基于LM 算法的3-bit Parity 问题4) 基于RPROP 算法结果如下及图5.13所示:横轴表示迭代次数,纵轴表示误差。
迭代到第33次时达到预设精度。
迭代停止时,误差为9.09842e-005,此时的梯度为0.0115333。
05101520253010-410-310-210-110033 Epochs T r a i n i n g -B l u e G o a l -B l a c k Performance is 9.09842e-005, Goal is 0.0001图5.13 基于RPROP 算法的3-bit Parity 问题第二章总结BP网络的算法实际上就是解决一个无约束最优化问题。
标准BP算法是BP 神经网络的最基本的算法,使用了最速下降法的思想,所以它不可避免的具备了最速下降法所带了的缺点。
为了克服标准BP算法的缺陷,人们进行了更深入的研究,对标准BP算法进行了改进,并提供了一系列快速学习算法,以满足解决不同问题的需要。
快速BP算法从改进途径上可分为两大类:一类是采用启发式学习方法,如引入动量因子的学习算法、变学习速率学习算法等;另一类则是采用更有效的数值优化方法,如共轭梯度学习算法、Levenberg-Marquardt算法以及B&B算法等。
对于不同的问题,在选择学习算法对BP 网络进行训练时,不仅要考虑算法本身的性能,还要视问题的复杂度、样本集大小、网络规模、网络误差目标和所要解决的问题类型而定[10]。
2.1各种算法的优缺点比较标准BP算法易于理解,方法简单,每一次迭代的工作量较小,所需要的存储空间也较小,而且即使从一个不好的初值开始计算,也可以保证算法的收敛性[11]。
不过正如前文中数值试验所表现的那样,标准BP算法在收敛速度上很慢,迭代次数很多,而且受学习率的影响很大。
Levenberg-Marquardt算法是使用于训练BP网络问题的牛顿算法的一个简单版本。
它的突出优点是收敛速度快,而且收敛误差小。
它的缺点也很突出,它所需的存储空间很大,计算量也很大,所以当网络规模增大时,它的性能会变得很差。
另外,LM算法对初值的选择很敏感,不恰当的初值会使算法不收敛。