反向传播神经网络.ppt

上传人:sh****n 文档编号:8733335 上传时间:2020-03-31 格式:PPT 页数:37 大小:296.55KB
返回 下载 相关 举报
反向传播神经网络.ppt_第1页
第1页 / 共37页
反向传播神经网络.ppt_第2页
第2页 / 共37页
反向传播神经网络.ppt_第3页
第3页 / 共37页
点击查看更多>>
资源描述
第06讲反向传播网络 反向传播网络 Back PropagationNetwork 简称BP网络 是将W H学习规则一般化 对非线性可微分函数进行权值训练的多层网络 BP网络是一种多层前向反馈神经网络 其神经元的变换函数是S型函数 因此输出量为0到1之间的连续量 它可以实现从输入到输出的任意的非线性映射 由于其权值的调整采用反向传播 Backpropagation 的学习算法 因此被称为BP网络 BP网络主要用于 1 函数逼近 用输入矢量和相应的输出矢量训练一个网络逼近 个函数 2 模式识别 用一个特定的输出矢量将它与输入矢量联系起来 3 分类 把输入矢量以所定义的合适方式进行分类 4 数据压缩 减少输出矢量维数以便于传输或存储 6 1BP网络模型与结构 一个具有r个输入和一个隐含层的神经网络模型结构 感知器和自适应线性元件的主要差别在激活函数上 前者是二值型的 后者是线性的 BP网络具有一层或多层隐含层 除了在多层网络上与前面已介绍过的模型有不同外 其主要差别也表现在激活函数上 BP网络的激活函数必须是处处可微的 所以它就不能采用二值型的阀值函数 0 1 或符号函数 1 1 BP网络经常使用的是S型的对数或正切激活函数和线性函数 图6 2BP网络S型激活函数 因为S型函数具有非线性放大系数功能 它可以把输入从负无穷大到正无穷大的信号 变换成 1到l之间输出 对较大的输入信号 放大系数较小 而对较小的输入信号 放大系数则较大 所以采用S型激活函数可以去处理和逼近非线性的输入 输出关系 只有当希望对网络的输出进行限制 如限制在0和1之间 那么在输出层应当包含S型激活函数 在一般情况下 均是在隐含层采用S型激活函数 而输出层采用线性激活函数 BP网络的特点 1 输入和输出是并行的模拟量 2 网络的输入输出关系是各层连接的权因子决定 没有固定的算法 3 权因子是通过学习信号调节的 这样学习越多 网络越聪明 4 隐含层越多 网络输出精度越高 且个别权因子的损坏不会对网络输出产生大的影响 6 2BP学习规则 BP算法属于 算法 是一种监督式的学习算法 其主要思想为 对于q个输入学习样本 P1 P2 Pq 已知与其对应的输出样本为 T1 T2 Tq 学习的目的是用网络的实际输出A1 A2 Aq 与目标矢量T1 T2 Tq 之间的误差来修改其权值 使Al l l 2 q 与期望的Tl尽可能地接近 即 使网络输出层的误差平方和达到最小 BP算法是由两部分组成 信息的正向传递与误差的反向传播 在正向传播过程中 输入信息从输入经隐含层逐层计算传向输出层 每一层神经元的状态只影响下一层神经元的状态 如果在输出层没有得到期望的输出 则计算输出层的误差变化值 然后转向反向传播 通过网络将误差信号沿原来的连接通路反传回来修改各层神经元的权值直至达到期望目标 图6 3具有一个隐含层的简化网络图 设输入为P 输入神经元有r个 隐含层内有s1个神经元 激活函数为F1 输出层内有s2个神经元 对应的激活函数为F2 输出为A 目标矢量为T 6 2 1信息的正向传递1 隐含层中第i个神经元的输出为 2 输出层第k个神经元的输出为 3 定义误差函数为 6 1 6 2 6 3 6 2 2利用梯度下降法求权值变化及误差的反向传播 1 输出层的权值变化对从第i个输入到第k个输出的权值有 其中 同理可得 6 4 6 5 6 6 6 7 2 隐含层权值变化 对从第j个输入到第i个输出的权值 有 其中 同理可得 6 8 6 9 6 10 通过MATLAB的实现过程 1 对于 6 1 式所表示的隐含层输出 若采用对数S型激活函数 则用函数logsig m 若采用双曲正切S型激活函数 则用函数tansig m 2 对于 6 2 式所表示的输出层输出 若采用线性激活函数有purelin m与之对应 3 对于 6 3 式所表示的误差函数 可用函数sumsqr m求之 4 有learnbp m函数专门求 6 4 6 7 6 8 和 6 10 式所表示的输出层以及隐含层中权值与偏差的变化量 5 由 6 5 和 6 9 式所表示的误差的变化有函数deltalin m deltatan m deltalog m来解决 它们分别用于线性层 双曲正切层和对数层 6 2 3误差反向传播的流程图与图形解释 误差反向传播过程实际上是通过计算输出层的误差ek 然后将其与输出层激活函数的一阶导数f2 相乘来求得 ki 由于隐含层中没有直接给出目标矢量 所以利用输出层的 ki反向传递来求出隐含层权值的变化量 w2ki 然后计算 并同样通过将ei与该层激活函数的一阶导数f1 相乘 而求得 ij 以此求出前层权值的变化量 w1ij 如果前面还有隐含层 沿用上述同样方法依此类推 一直将输出误差ek一层一层的反推算到第一层为止 图6 4误差反向传播法的图形解释 6 3BP网络的训练过程 为了训练一个BP网络 需要计算网络加权输入矢量以及网络输出和误差矢量 然后求得误差平方和 当所训练矢量的误差平方和小于误差目标 训练则停止 否则在输出层计算误差变化 且采用反向传播学习规则来调整权值 并重复此过程 当网络完成训练后 对网络输入一个不是训练集合中的矢量 网络将以泛化方式给出输出结果 为了能够较好地掌握BP网络的训练过程 我们用两层网络为例来叙述BP网络的训练步骤 1 用小的随机数对每一层的权值W和偏差B初始化 以保证网络不被大的加权输入饱和 并进行以下参数的设定或初始化 a 期望误差最小值error goal b 最大循环次数max epoch c 修正权值的学习速率1r 一般情况下k 0 0l 0 7 d 从1开始的循环训练 forepoch 1 max epoch 2 计算网络各层输出矢量A1和A2以及网络误差E A1 tansig W1 P B1 A2 purelin W2 A1 B2 E T A 3 计算各层反传的误差变化D2和D1并计算各层权值的修正值以及新权值 D2 deltalin A2 E D1 deltatan A1 D2 W2 dlWl dBl learnbp P D1 lr dW2 dB2 1earnbp A1 D2 1r W1 W1十dW1 B1 B1十dBl W2 W2十dW2 B2 B2十dB2 4 再次计算权值修正后误差平方和 SSE sumsqr T purelin W2 tansig W1 P B1 B2 5 检查SSE是否小于err goal 若是 训练结束 否则继续 以上所有的学习规则与训练的全过程 仍然可以用函数trainbp m来完成 它的使用同样只需要定义有关参数 显示间隔次数 最大循环次数 目标误差 以及学习速率 而调用后返回训练后权值 循环总数和最终误差 TP disp freqmax epocherr goal1r W B epochs errors trainbp W B F P T TP 例6 1 用于函数逼近的BP网络的设计 P 1 0 1 1 T 0 960 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 比较trainbpx和trainbp的速度差别 exc4 m 泛化性能 使网络平滑地学习函数 使网络能够合理地响应被训练以外的输入 要注意的是 泛化性能只对被训练的输入 输出对最大值范围内的数据有效 即网络具有内插值特性 不具有外插值性 超出最大训练值的输入必将产生大的输出误差 6 4BP网络的设计 6 4 1网络的层数理论上已经证明 具有偏差和至少一个S型隐含层加上一个线性输出层的网络 能够逼近任何有理函数 增加层数主要可以更进一步的降低误差 提高精度 但同时也使网络复杂化 从而增加了网络权值的训练时间 一般情况下 应优先考虑增加隐含层中的神经元数 能不能仅用具有非线性激活函数的单层网络来解决问题呢 结论是 没有必要或效果不好 6 4 2隐含层的神经元数网络训练精度的提高 可以通过采用一个隐含层 而增加其神经元数的方法来获得 这在结构实现上 要比增加更多的隐含层要简单得多 在具体设计时 比较实际的做法是通过对不同神经元数进行训练对比 然后适当地加上一点余量 6 4 3初始权值的选取一般取初始权值在 1 1 之间的随机数 威得罗等人在分析了两层网络是如何对一个函数进行训练后 提出一种选定初始权值的策略 在MATLAB工具箱中可采用函数nwlog m或nwtan m来初始化隐含层权值W1和B1 其方法仅需要使用在第一隐含层的初始值的选取上 后面层的初始值仍然采用随机取数 6 4 4学习速率学习速率决定每一次循环训练中所产生的权值变化量 大的学习速率可能导致系统的不稳定 小的学习速率导致较长的训练时间 可能收敛很慢 不过能保证网络的误差值不跳出误差表面的低谷而最终趋于最小误差值 所以在一般情况下 倾向于选取较小的学习速率以保证系统的稳定性 学习速率的选取范围在0 01 0 8之间 6 4 5期望误差的选取在设计网络的训练过程中 期望误差值也应当通过对比训练后确定一个合适的值 这个所谓的 合适 是相对于所需要的隐含层的节点数来确定 因为较小的期望误差值是要靠增加隐含层的节点 以及训练时间来获得的 一般情况下 作为对比 可以同时对两个不同期望误差值的网络进行训练 最后通过综合因素的考虑来确定采用其中一个网络 6 5限制与不足 1 需要较长的训练时间 2 完全不能训练通常为了避免这种现象的发生 一是选取较小的初始权值 二是采用较小的学习速率 但这又增加了训练时间 3 局部极小值BP算法可以使网络权值收敛到一个解 但它并不能保证所求为误差超平面的全局最小解 很可能是一个局部极小解 6 6反向传播法的改进方法 主要目标是为了加快训练速度 避免陷入局部极小值 6 6 1附加动量法附加动量法使网络在修正其权值时 不仅考虑误差在梯度上的作用 而且考虑在误差曲面上变化趋势的影响 其作用如同一个低通滤波器 它允许网络忽略网络上的微小变化特性 利用附加动量的作用则有可能滑过局部极小值 该方法是在反向传播法的基础上在每一个权值的变化上加上一项正比于前次权值变化量的值 并根据反向传播法来产生新的权值变化 带有附加动量因子的权值调节公式为 其中k为训练次数 mc为动量因子 一般取0 95左右 附加动量法的实质是将最后一次权值变化的影响 通过一个动量因子来传递 当动量因子取值为零时 权值的变化仅是根据梯度下降法产生 当动量因子取值为1时 新的权值变化则是设置为最后一次权值的变化 而依梯度法产生的变化部分则被忽略掉了 在MATLAB工具箱中 带有动量因子的权值修正法是用函数learnbpm m来实现的 trainbpm m可以训练一层直至三层的带有附加动量因子的反向传播网络 下面是对单层网络使用函数trainbpm m的情形 W B epochs errors trainbpm W B F P T TP 6 6 2误差函数的改进 包穆 Baum 等人于1988年提出一种误差函数为 不会产生不能完全训练的麻痹现象 6 6 3自适应学习速率 通常调节学习速率的准则是 检查权值的修正值是否真正降低了误差函数 如果确实如此 则说明所选取的学习速率值小了 可以对其增加一个量 若不是这样 而产生了过调 那么就应该减小学习速率的值 下式给出了一种自适应学习速率的调整公式 MATLAB工具箱中带有自适应学习速率进行反向传播训练的函数为 trainbpa m 它可以训练直至三层网络 使用方法为 W B epochs TE trainbpa W B F P T TP 可以将动量法和自适应学习速率结合起来以利用两方面的优点 这个技术已编入了函数trainbpx m之中 这个函数的调用和其他函数一样 只是需要更多的初始参数而已 TP disp freqmax epocherror goallr1r inc1r decmom consterr ratio W B epochs error lr trainbpx W B F P T TP 4 7本章小结 1 反向传播法可以用来训练具有可微激活函数的多层前向网络以进行函数逼近 模式分类等工作 2 反向传播网络的结构不完全受所要解决的问题所限制 网络的输入神经元数目及输出层神经元的数目是由问题的要求所决定的 而输入和输出层之间的隐含层数以及每层的神经元数是由设计者来决定的 3 已证明 两层S型线性网络 如果S型层有足够的神经元 则能够训练出任意输入和输出之间的有理函数关系 4 反向传播法沿着误差表面的梯度下降 使网络误差最小 网络有可能陷入局部极小值 5 附加动量法使反向传播减少了网络在误差表面陷入低谷的可能性并有助于减少训练时间 6 太大的学习速率导致学习的不稳定 太小值又导致极长的训练时间 自适应学习速率通过在保证稳定训练的前提下 达到了合理的高速率 可以减少训练时间 7 80 90 的实际应用都是采用反向传播网络的 改进技术可以用来使反向传播法更加容易实现并需要更少的训练时间 4 8作业 用BP神经网络对一个简单的非线性神经元进行训练 输入矢量p 32 目标矢量t 0 40 8
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!