资源预览内容
第1页 / 共59页
第2页 / 共59页
第3页 / 共59页
第4页 / 共59页
第5页 / 共59页
第6页 / 共59页
第7页 / 共59页
第8页 / 共59页
第9页 / 共59页
第10页 / 共59页
亲,该文档总共59页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
1 人工神经网络及其应用第6章BP神经网络 2 一 内容回顾二 BP网络三 网络设计四 改进BP网络五 内容小结 内容安排 3 一 内容回顾 感知机自适应线性元件 4 一 内容回顾 感知机感知机简介神经元模型网络结构功能解释学习和训练局限性自适应线性元件 5 一 内容回顾 感知机自适应线性元件Adline简介网络结构网络学习网络训练 6 2 1BP网络简介2 2网络模型2 3学习规则2 4图形解释2 5网络训练 二 BP网络 7 反向传播网络 Back PropagationNetwork 简称BP网络 是将W H学习规则一般化 对非线性可微分函数进行权值训练的多层网络权值的调整采用反向传播 Back propagation 的学习算法它是一种多层前向反馈神经网络 其神经元的变换函数是S型函数输出量为0到1之间的连续量 它可实现从输入到输出的任意的非线性映射 2 1BP神经网络 8 BP网络主要用于下述方面函数逼近 用输入矢量和相应的输出矢量训练一个网络逼近一个函数模式识别和分类 用一个特定的输出矢量将它与输入矢量联系起来 把输入矢量以所定义的合适方式进行分类 数据压缩 减少输出矢量维数以便于传输或存储具有较强泛化性能 使网络平滑地学习函数 使网络能够合理地响应被训练以外的输入泛化性能只对被训练的输入 输出在最大值范围内的数据有效 即网络具有内插值特性 不具有外插值性 超出最大训练值的输入必将产生大的输出误差 2 1BP神经网络 9 2 2网络模型 一个具有r个输入和一个隐含层的神经网络模型结构 10 感知器和自适应线性元件的主要差别在激活函数上 前者是二值型的 后者是线性的BP网络具有一层或多层隐含层 除了在多层网络上与前面已介绍过的模型有不同外 其主要差别也表现在激活函数上 BP网络的激活函数必须是处处可微的 因此它不能采用二值型的阀值函数 0 1 或符号函数 1 1 BP网络经常使用的是S型的对数或正切激活函数和线性函数 2 1网络模型 11 BP网络特点输入和输出是并行的模拟量网络的输入输出关系由各层连接的权因子决定 没有固定的算法权因子通过学习信号调节 学习越多 网络越聪明隐含层越多 网络输出精度越高 且个别权因子的损坏不会对网络输出产生大的影响只有当希望对网络的输出进行限制 如限制在0和1之间 那么在输出层应当包含S型激活函数在一般情况下 均是在隐含层采用S型激活函数 而输出层采用线性激活函数 2 1网络模型 12 S型函数具有非线性放大系数功能 可以把输入从负无穷大到正无穷大的信号 变换成 1到l之间输出对较大的输入信号 放大系数较小 而对较小的输入信号 放大系数则较大采用S型激活函数可以处理和逼近非线性输入 输出关系 2 1网络模型 13 2 3学习规则 BP算法属于 算法 是一种监督式的学习算法主要思想对于q个输入学习样本 P1 P2 Pq 已知与其对应的输出样本为 T1 T2 Tq使网络输出层的误差平方和达到最小用网络的实际输出A1 A2 Aq 与目标矢量T1 T2 Tq之间的误差修改其权值 使Am与期望的Tm m l q 尽可能接近 14 BP算法是由两部分组成 信息的正向传递与误差的反向传播正向传播过程中 输入信息从输入层经隐含层逐层计算传向输出层 每一层神经元的状态只影响下一层神经元的状态如果在输出层未得到期望的输出 则计算输出层的误差变化值 然后转向反向传播 通过网络将误差信号沿原来的连接通路反传回来修改各层神经元的权值直至达到期望目标 2 3学习规则 15 假设输入为P 输入神经元有r个 隐含层内有s1个神经元 激活函数为F1 输出层内有s2个神经元 对应的激活函数为F2 输出为A 目标矢量为T 2 3学习规则 16 信息的正向传递隐含层中第i个神经元的输出输出层第k个神经元的输出定义误差函数 2 3学习规则 17 2 3学习规则 利用梯度下降法求权值变化及误差的反向传播输出层的权值变化其中同理可得 18 2 3学习规则 利用梯度下降法求权值变化及误差的反向传播输入到隐含层权值变化其中同理可得 19 对于f1为对数S型激活函数 对于f2为线性激活函数 2 3学习规则 20 2 4误差反向传播图形解释 误差反向传播过程实际上是通过计算输出层的误差ek 然后将其与输出层激活函数的一阶导数f2 相乘来求得 ki由于隐含层中没有直接给出目标矢量 所以利用输出层的 ki反向传递来求出隐含层权值的变化量 w2ki 然后计算同样通过将ei与该层激活函数的一阶导数f1 相乘 而求得 ij 以此求出前层权值的变化量 w1ij如果前面还有隐含层 沿用上述同样方法依此类推 一直将输出误差ek逐层的反推算到第一层为止 21 2 4误差反向传播图形解释 22 2 5网络训练 训练BP网络 需要计算网络加权输入矢量以及网络输出和误差矢量 然后求误差平方和当所训练矢量的误差平方和小于误差目标 训练停止 否则在输出层计算误差变化 且采用反向传播学习规则来调整权值 然后重复此过程网络完成训练后 对网络输入一个不是训练集合中的矢量 网络将以泛化方式给出输出结果 23 2 5网络训练 为了能够较好地掌握BP网络的训练过程 我们用两层网络为例来叙述BP网络的训练步骤初始化 用小的随机数初始化每一层的权值W和偏差B 保证网络不被大的加权输入饱和期望误差最小值 error goal最大循环次数 max epoch修正权值的学习速率 lr一般情况下 lr 0 l 0 8 24 2 5网络训练 变量表达 计算网络各层输出矢量A1和A2以及网络误差EA1 tansig W1 P B1 A2 purelin W2 A1 B2 E T A 权值修正 计算各层反传的误差变化D2和D1并计算各层权值的修正值以及新权值 D2 deltalin A2 E D1 deltatan A1 D2 W2 dWl dBl learnbp P D1 lr dW2 dB2 1earnbp A1 D2 1r W1 W1十dW1 B1 B1十dBl W2 W2十dW2 B2 B2十dB2 25 2 5网络训练 计算权值修正后误差平方和SSE sumsqr T purelin W2 tansig W1 P B1 B2 检查 SSE是否小于err goal 若是 训练结束 否则继续以上所有的学习规则与训练的全过程 可以用函数trainbp m来完成它的使用只需定义有关参数 显示间隔次数 最大循环次数 目标误差 以及学习速率 调用后返回训练后权值 循环总数和最终误差TP disp freqmax epocherr goal1r W B epochs errors trainbp W B F P T TP 26 三 网络设计 3 1网络的层数3 2隐含层神经元数3 3初始权值的选取3 4学习速率3 5期望误差的选取3 6应用举例3 7局限性 27 3 1网络的层数 理论上已经证明 具有偏差和至少一个S型隐含层加上一个线性输出层的网络 能够逼近任何有理函数 定理 增加层数主要可以进一步的降低误差 提高精度 但同时也使网络复杂化 从而增加了网络权值的训练时间 一般情况下应优先考虑增加隐含层中神经元数仅用具有非线性激活函数的单层网络来解决问题没有必要或效果不好线性问题非线性问题 28 3 2隐含层神经元数 网络训练精度的提高 可以通过采用一个隐含层 而增加其神经元数的方法来获得 这在结构实现上 要比增加更多的隐含层简单得多定理 实现任意N个输入向量构成的任何布尔函数的前向网络所需权系数数目为在具体设计时 比较实际的做法是通过对不同神经元数进行训练对比 去掉不起作用的隐单元 然后适当地加上一点余量 29 隐含层神经元数 输入r维 输出s2维 样本数q下 隐单元数s1 30 3 3初始权值的选取 一般取初始权值在 1 1 之间的随机数威得罗等人在分析了两层网络是如何对一个函数进行训练后 提出一种选定初始权值的策略选择权值的量级为在MATLAB工具箱中可采用函数nwlog m或nwtan m来初始化隐含层权值W1和B1 其方法仅使用在第一隐含层的初始值的选取上 后面层的初始值仍然采用随机取数 31 3 4学习速率 学习速率决定每一次循环训练中所产生的权值变化量大的学习速率可能导致系统的不稳定小的学习速率导致较长的训练时间 可能收敛很慢 不过能保证网络的误差值不跳出误差表面的低谷而最终趋于最小误差值所以在一般情况下 倾向于选取较小的学习速率以保证系统的稳定性 学习速率的选取范围在0 1 0 8之间 32 3 5期望误差值选取 在设计网络的训练过程中 期望误差值也应当通过对比训练后确定一个合适的值这个所谓的 合适 是相对于所需要的隐含层的节点数来确定 因为较小的期望误差值是要靠增加隐含层的节点 以及训练时间来获得一般情况下 作为对比 可以同时对两个不同期望误差值的网络进行训练 最后通过综合因素的考虑来确定采用其中一个网络 33 3 6应用举例 求解函数逼近问题有21组单输入矢量和相对应的目标矢量 试设计神经网络来实现这对数组的函数关系P 1 0 1 1T 0 96 0 577 0 07290 3770 6410 660 4610 1336 0 201 0 434 0 5 0 393 0 16470 09880 30720 3960 34490 1816 0 0312 0 2183 0 3201 测试集P2 1 0 025 1 34 网络设计 输入输出单元个数均为1 隐含层神经元个数在3 8之间 用可变的隐含层神经元个数 通过误差对比 确定最佳个数 并检验对网络性能的影响 代码 s 3 8 res 1 6 fori 1 6net newff minmax P s i 1 tansig logsig traingdx net trainParam epochs 2000 net trainParam goal 0 0001 net train net P T y sim net P error y T res i norm error endres 1 58121 92701 55801 92701 58031 4449 隐层 输出层 训练函数 也可选 trainlm或traingd 35 网络训练误差 好 36 3 6应用举例 cont d 目标矢量相对于输入矢量的图形初始网络的输出曲线 37 3 6应用举例 cont d 训练1000次2000次 38 3 6应用举例 cont d 训练3000次5000次 39 3 7限制与不足 需要较长的训练时间完全不能训练选取较小的初始权值采用较小的学习速率 但同时又增加了训练时间局部极小值BP算法可以使网络权值收敛到一个解 但它并不能保证所求为误差超平面的全局最小解 很可能是一个局部极小解 40 四 BP网络的改进 4 1目标4 2附加动量法4 3误差函数改进4 4自适应学习速率 41 4 1目标 加快训练速度避免陷入局部极小值 42 4 2附加动量法 利用附加动量的作用则有可能滑过局部极小值修正网络权值时 不仅考虑误差在梯度上的作用 而且考虑在误差曲面上变化趋势的影响 其作用如同一个低通滤波器 它允许网络忽略网络上微小变化特性该方法是在反向传播法的基础上在每一个权值的变化上加上一项正比于前次权值变化量的值 并根据反向传播法来产生新的权值变化 43 4 2附加动量法 带有附加动量因子的权值调节公式其中k为训练次数 mc为动量因子 一般取0 95左右附加动量法的实质是将最后一次权值变化的影响 通过一个动量因子来传递 当动量因子取值为0时 权值变化仅根据梯度下降法产生当动量因子取值为1时 新的权值变化则是设置为最后一次权值的变化 而依梯度法产生的变化部分则被忽略掉了促使权值的调节向着误差曲面底部的平均方向变化 当网络权值进入误差曲面底部的平坦区时 i将变得很小 于是 wij k 1 wij k 从而防止了 wij 0的出现 有助于使网络从误差曲面的局部极小值中跳出 44 4 2附加动量法 在MATLAB工具箱中 带有动量因子的权值修正法是用函数
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号