MATLAB下BP神经网络设计.pdf

上传人:飞****9 文档编号:134118734 上传时间:2020-06-02 格式:PDF 页数:16 大小:241.18KB
返回 下载 相关 举报
MATLAB下BP神经网络设计.pdf_第1页
第1页 / 共16页
MATLAB下BP神经网络设计.pdf_第2页
第2页 / 共16页
MATLAB下BP神经网络设计.pdf_第3页
第3页 / 共16页
MATLAB下BP神经网络设计.pdf_第4页
第4页 / 共16页
MATLAB下BP神经网络设计.pdf_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《MATLAB下BP神经网络设计.pdf》由会员分享,可在线阅读,更多相关《MATLAB下BP神经网络设计.pdf(16页珍藏版)》请在金锄头文库上搜索。

1、MATLABMATLAB 下下 BPBP 神经网络的神经网络的设计设计开发开发 BP 网络在神经网络工具箱中的仿真 本文利用 Matlab6 5 神经网络工具箱 以一组动态冲击实验数据为例建立网络模型 实验 数据共有 13 组 将其中对曲线形状有关键性影响的 10 组数据作为网络的训练数据 另外 3 组作为测试数据用以验证网络的预测性能 BP 网络的建立 在建立 BP 神经网络时 首先要根据应用的问题确定网络结构 即选择网络的层数和隐 层节点数 由于本例中实验数据较少 采用最基本的两层网络就可以很好地逼近未知函数了 隐层节点数的选择在神经网络的应用中一直是一个复杂的问题 隐层节点数过多 将导致

2、网 络的预测能力不够 并容易导致网络陷入局部极小值难以跳出 隐层节点数过少 网络训练 不出来 或不能识别以前没有的样本 且容错性差 在设计中 比较实际的做法是通过对不 同神经元数的网络进行训练 对比 找出网络效果最好时的隐层节点数 在本例中 经大量 的训练 对比 最终取中间隐层节点数为 10 另一方面 BP 隐层传递函数采用正切 Sigmoid 函数 tansig 可以逼近任意非线性函数 输出层神经元则采用线性函数 purelin 可以把输出 值释放到任意值 至此 一个 1 10 1 的神经网络模型建立完毕 BP 网络的训练 Matlab 神经网络工具箱为用户提供了三种可用于 BP 网络的训练

3、函数 它们是 trainbp trainbpx 和 trainlm 它们用法类似 采用不同的学习规则 trainlm 训练函数 使用 Levenberg Marquardt 算法 是三种规则中迭代次数最少 训练速度最快的一个 缺点是该算 法在每次迭代时的计算量比其他算法大 故需要大量的存储空间 对于参数很大的应用是不 实用的 考虑到待处理问题的参数较小 因此采用 trainlm 训练函数 目标误差设为 0 01 最 大训练步数设为 10 000 设定好参数之后开始训练网络 训练结果显示 网络在训练了 32 次 之后达到目标误差 0 01 训练停止 BP 网络的测试 由于初始值取随机值 每次训练

4、得到的结果都不相同 经多次训练得到最好的结果 并 记录下此时的权值和阈值 至此 可用固定的网络去进行其他非实验点的最大加速度 静应 力值的预测 为了检验该网络是否具有较好的预测能力 将 3 组测试数据代入网络中进行预 测 结果表明 预测数据和原始数据的平均相对误差为 3 2726 由此可以看出拟合结果是 相当精确的 至此 利用 BP 网络成功建立了厚度为 50mm 跌落高度为 40cm 的蜂窝纸板缓 冲特性模型 本文利用 BP 网络在非线性建模方面的特殊优势 以厚度为 50mm 跌落高度为 40cm 的 蜂窝纸板为例 建立神经网络模型 经测试表明 该模型能以较高的精度对非实验点数据进 行预测

5、但是 在建立模型的过程中也发现了一些问题 主要有两个方面 一是样本数过少 很难精确反映出待建模型的特性 而且容易导致网络在学习过程中难 以退出局部极小值 解决的办法是在实验部分增加实验点以增加训练样本数 二是 BP 网络本身存在的一些问题 主要表现在收敛速度很慢 有时在局部极小值收敛 不能找到全局极小值 针对这样的情况 可以考虑采用其他算法如 模拟退火 遗传算法等 以保证网络能收敛到全局极小值 1 1 调试方法调试方法 1 1 1 1 提供训练样本和权值 阈值的初始值提供训练样本和权值 阈值的初始值 BP 算法是有指导的训练 是靠调节各层的权值使网络学会训练样本所表达的规律 训练样本由输入输出

6、对 P k i t k j 组成 而 i i 1 2 n 是输入层神经元的序号 n 是输入层神经元数 j j 1 2 m 是输出层神经元的序号 m 是输出层神经元数 k k 1 2 q 是训练对的序号 显然 q 的大小决定了训练样本的规模 P k i的输入方法是 先就某固定的 k 值 输入 i 的所有取值下的输入样本 再改变 k 值 输入 i 的所有取值下的输入样本 直到 k q 输入 i 的所有取值下的输入样本为至 t k j的输 入方法与 P k i相同 需要注意的是 MATLAB 下的神经网络工具箱不必专门指出输入层神经元和输出层神经元 的多少 而是自动地从 P k i和 t k j中辨

7、认 即会默认输入层神经元数为 n 输出层神经元数为 m 所以 P k i和 t k j的给定就显得特别重要 Wih是输入层至隐层的权值 h h 1 2 s1 是隐层神经元的序号 s1 是隐层神 经元数 它需要在程序中给出确定的初始值 其输入方法是 就某固定的 i 值 输入 h 的所 有取值下的权值 Whj是隐层至输出层的权值 其输入方法是 就某固定的 h 值 输入 j 的所 有取值下的权值 bh和 bj分别是隐层 输出层神经元的阈值 它们需要在程序中给出确定的 初始值 1 1 2 2 有关函数说明有关函数说明 用软件模拟 BP 网络时 需要用到的函数有 initff trainbp simuf

8、f ploterr 等 下面分别说明 在设计 BP 网络时 只要已知输入向量 p 各层的神经元数 各层神经元的传递函数 就 可以利用函数 initff 对 BP 网络进行初始化 例如 1 个 2 层 不包括输入层 的 BP 网络 隐层有 8 个神经元 传递函数为 tansig 正切 S 型函数 输出层神经元数由目标向量 t 决定 传递函数为 purelin 纯线性函数 该 BP 网络的初始化语句为 w1 b1 w2 b2 initff p 8 tansig t purelin 用户在准备数据样本时 向量 p 应该包含所有输入值中的最大值和最小值 这样才能保 证得到最佳的初始值 神经网络工具箱函

9、数 trainbp trainbpx trainlm 用来对 BP 网络进行训练 它们的 用法是类似的 只是采用的学习规则有所不同 1 trainbp 利用标准 BP 学习规则训练前馈网络 使网络完成函数逼近 矢量分类和 模式识别 2 trainbpx 采用了动量法和学习率自适应调整的策略 从而提高了学习速度并增加 了算法的可靠性 3 trainlm 使用了 Levenberg Marquardt 优化方法 学习时间更短 但对于复杂的 问题 这种方法需要很大的存储空间 下面程序表明了 trainlm 的调用方法 df 5 训练过程显示频率 me 1000 最大训练步数 eg 0 01 误差指标

10、 tp df me eg w1 b1 w2 b2 ep tr trainlm w1 b1 tansig w2 b2 purelin p t tp 经过训练得到了新的权值矩阵 w1 w2 阈值矢量 b1 b2 网络的实际训练次数 ep 及网 络训练误差平方和行矢量 tr 前馈网络由一系列网络层组成 每一层都从前一层得到输入数据 simuff 函数可用于仿 真最多 3 层的前馈网络 a simuff q w1 b1 tansig w2 b2 purelin 上式 q 为输入数据 a 为预测结果 Ploterr e eg 用于绘制误差行矢量 e 随训练次数的变化图 同时以点线绘出误差指 标 eg 其

11、纵轴为对数刻度 总的训练次数小于 e 的长度 e 的第一个元素为网络训练前的误 差 1 1 3 3 网络结构的确定网络结构的确定 神经网络的结构设计是一个非常重要但却十分复杂的问题 网络的结构设计主要指对于 给定的任务 如何选择网络层数 因为网络的输入和输出层易于确定 所以这一问题实际上就是隐 层应该为几层 每层应选多少神经元 神经元的传递函数应如何选定 所有这些都是使用神经网络时必须加以解决的问题 但目前对此并没有一个确切的答案 MATLAB 下的神经网络工具箱也不例外 综合以往的研究成果 可以得到 BP 网络结构的一些结论 对于 3 层 1 个输入层 1 个隐层和 1 个输出层 的 BP

12、网络 只要其隐层的神经元数 可选 就可以任意精度逼近任何连续函数 Kolmogorov 定理 随着所逼近函数的波动性增加 隐层的神经元数也应适当增加 随着学习样本数的增加 隐层神经元数也应增加 增加隐层数目可以减少各隐层的神经元数 减少陷入局部极小的机会 随着网络复杂程度和学习样本数的增加 其收敛速度变慢 所以网络的规模不应随意 增大 另外 作者的实践经验是 对于给定的问题 如果不得不增大网络规模时 宁愿采用较 多隐层和较少神经元数的神经网络 而不应采用较少隐层和较多神经元数的神经网络 因为 这样可以相对减少网络的训练时间 2 2 图形结果的输出图形结果的输出 图形结果的输出是软件模拟神经网络

13、的重要步骤 根据作者使用 MATLAB 下神经网络工具 箱的情况 除了将图形显示在计算机屏幕上 图形结果的输出还有其它几种方式 1 打印输出 工具箱在生成图形结果时 例如利用上述 Ploterr e eg 函数 也同时生成该图形 对应的窗口 这时可以利用窗口中的 file 菜单下的 Page Position 功能调整图形的大小和在 打印纸上的位置 Paper Position Left Bottom Width Height 如图 2 所示 再利用 Print 功能将图形从指定的打印机上输出 图 2 设置被打印图形 2 建立图形文件输出 利用窗口中的 file 菜单下的 Save As 命令

14、可以建立图形文件 该文件与一般的 MATLAB 文件等价 可以实现编辑 调试和运行重显图形 当然也可以打印输出 另外 有时可能在 1 个 MATLAB 程序中需要输出不止 1 个图形 这时可以利用 MATLAB 的 pause 命令实现运行程 序的暂停 再利用 Save As 命令建立不同文件名的图形文件即可 3 带窗口输出 为了满足某种目的 例如演示和教学 有时需要输出图形的同时 输出窗口 利用Windows 的剪切板可在 MATLAB 与其它应用程序之间交换信息 要将 MATLAB 的图形 带窗口 移到其 它应用程序 首先按 Alt PrintScreen 键 将图形 带窗口 复制到剪切板

15、 然后激活其它 应用程序 选择 Edit 中的 Paste 就可在应用程序中得到 MATLAB 的图形 带窗口 4 输出到 WORD 等应用程序 这是较为常见的输出方式 同样也是利用 Windows 的剪切板功能 但它不是按 Alt PrintScreen 键 而是用图形窗口中 Window 菜单下的 Copy Figure 功能 首先单击图形窗口 中 Window 菜单下的 Copy Figure 然后激活其它应用程序 选择 Edit 中的 Paste 就可在应 用程序中得到 MATLAB 的图形 不带窗口 1 1 MATLABMATLAB 下神经网络工具箱的开发和应用下神经网络工具箱的开发

16、和应用 刘晔夏建生MICROCOMPUTERMICROCOMPUTER 0 5 3 1 tansig purelin traingd 这个命令建立了网络对象并且初始化了网络权重和偏置 因此网络就可以进行训练了 我们可能要多次重新初始化权重或者进行自定义的初始化 下面就是初始化的详细步骤 在训练前馈网络之前 权重和偏置必须被初始化 初始化权重和偏置的工作用命令 init 来实现 这个函数接收网络对象并初始化权重和偏置后返回网络对象 下面就是网络如何初 始化的 net init net 我们可以通过设定网络参数 net initFcn 和 net layer i initFcn 这一技巧来初始化一个给定 的网络 net initFcn 用来决定整个网络的初始化函数 前馈网络的缺省值为 initlay 它允许 每一层用单独的初始化函数 设定了 net initFcn 那么参数 net layer i initFcn 也要设定用来 决定每一层的初始化函数 对前馈网络来说 有两种不同的初始化方式经常被用到 initwb 和 initnw initwb 函数根 据每一层自己的初始化参数 net i

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 管理论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号