




免费预览已结束,剩余8页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 13 BP 神经网络原理及应用神经网络原理及应用 1 人工神经网络简介人工神经网络简介 1 1 生物神经元模型生物神经元模型 神经系统的基本构造是神经元 神经细胞 它是处理人体内各部分之间相 互信息传递的基本单元 据神经生物学家研究的结果表明 人的大脑一般有 个神经元 每个神经元都由一个细胞体 一个连接其他神经元的轴突 1011 1010 和一些向外伸出的其它较短分支 树突组成 轴突的功能是将本神经元的输 出信号 兴奋 传递给别的神经元 其末端的许多神经末梢使得兴奋可以同时 送给多个神经元 树突的功能是接受来自其它神经元的兴奋 神经元细胞体将 接受到的所有信号进行简单地处理后由轴突输出 神经元的树突与另外的神经 元的神经末梢相连的部分称为突触 1 2 人工神经元模型人工神经元模型 神经网络是由许多相互连接的处理单元组成 这些处理单元通常线性排列成 组 称为层 每一个处理单元有许多输入量 而对每一个输入量都相应有一个 相关 联的权重 处理单元将输入量经过加权求和 并通过传递函数的作用得到输出 量 再传给下一层的神经元 目前人们提出的神经元模型已有很多 其中提出最早 且影 2 13 响最大的是 1943 年心理学家 McCulloch 和数学家 Pitts 在分析总结神经元基本 特性的基础上首先提出的 M P 模型 它是大多数神经网络模型的基础 1 1 1 n i jijij xwftY 式 1 1 中 j 为神经元单元的偏置 阈值 为连接权系数 对于激发状态 ji w 取正值 对于抑制状态 取负值 n 为输入信号数目 为神经元输出 ji w ji w j Y t 为时间 f 为输出变换函数 有时叫做激发或激励函数 往往采用 0 和 1 二值 函数或 形函数 1 3 人工神经网络的基本特性人工神经网络的基本特性 人工神经网络由神经元模型构成 这种由许多神经元组成的信息处理网络具有 并行分布结构 每个神经元具有单一输出 并且能够与其它神经元连接 存在 许多 多重 输出连接方法 每种连接方法对应一个连接权系数 严格地说 人工神经网络是一种具有下列特性的有向图 对于每个节点存在一个状态变量 xi 从节点 i 至节点 j 存在一个连接权系数 wji 对于每个节点 存在一个阈值 j 对于每个节点 定义一个变换函数 对于最一般的情况 jijij fx wij 此函数取形式 jjiij i fw x 1 4 人工神经网络的主要学习算法人工神经网络的主要学习算法 神经网络主要通过两种学习算法进行训练 即指导式 有师 学习算法和非指 导式 无师 学习算法 此外 还存在第三种学习算法 即强化学习算法 可 把它看做有师学习的一种特例 有师学习 有师学习算法能够根据期望的和实际的网络输出 对应于给定 输入 间的差来调整神经元间连接的强度或权 因此 有师学习需要有个老师或 导师来提供期望或目标输出信号 有师学习算法的例子包括 规则 广义 规则或反向传播算法以及 LVQ 算法等 3 13 无师学习 无师学习算法不需要知道期望输出 在训练过程中 只要向神 经网络提供输入模式 神经网络就能够自动地适应连接权 以便按相似特征把 输入模式分组聚集 无师学习算法的例子包括 Kohonen 算法和 Carpenter Grossberg 自适应共振理论 ART 等 强化学习 如前所述 强化学习是有师学习的特例 它不需要老师给出目 标输出 强化学习算法采用一个 评论员 来评价与给定输入相对应的神 2 BP 神经网络原理神经网络原理 2 1 基本基本 BP 算法公式推导算法公式推导 基本 BP 算法包括两个方面 信号的前向传播和误差的反向传播 即计算实际 输出时按从输入到输出的方向进行 而权值和阈值的修正从输出到输入的方向 进行 1 a1 ki w ij w L a k a q i 1 x j x M x 1 o k o L o 输 出 变 量 输 入 变 量 输入层 隐含层 输出层 图 2 1 BP 网络结构 Fig 2 1 Structure of BP network 图中 j x 表示输入层第 j 个节点的输入 j 1 M ij w 表示隐含层第 i 个节点到输入层第 j 个节点之间的权值 i 表示隐含层第 i 个节点的阈值 x 表示隐含层的激励函数 ki w 表示输出层第k个节点到隐含层第 i 个节点之间的权值 i 1 q k a 表示输出层第 k 个节点的阈值 k 1 L x 表示输出层的激励函数 4 13 k o 表示输出层第k个节点的输出 1 信号的前向传播过程 隐含层第 i 个节点的输入 neti 1 M iijji j netw x 3 1 隐含层第 i 个节点的输出 yi 1 M iiijji j ynetw x 3 2 输出层第 k 个节点的输入 netk 111 qqM kkiikkiijjik iij netw yaww xa 3 3 输出层第 k 个节点的输出 ok 111 qqM kkkiikkiijjik iij onetw yaww xa 3 4 2 误差的反向传播过程 误差的反向传播 即首先由输出层开始逐层计算各层神经元的输出误差 然后 根据误差梯度下降法来调节各层的权值和阈值 使修改后的网络的最终输出能 接近期望值 对于每一个样本 p 的二次型误差准则函数为 Ep 2 1 1 2 L pkk k ETo 3 5 系统对 P 个训练样本的总误差准则函数为 2 11 1 2 PL pp kk pk ETo 3 6 根据误差梯度下降法依次修正输出层权值的修正量 wki 输出层阈值的修正量 ak 隐含层权值的修正量 wij 隐含层阈值的修正量 i ki ki w E w k k E a a ij ij E w w i i E 3 7 输出层权值调整公式 ki k k k kki k kki ki w net net o o E w net net E w E w 3 8 输出层阈值调整公式 kkk k kkkkkk netonetEEE a anetaoneta 3 9 5 13 隐含层权值调整公式 iii ij ijiijiiij netynetEEE w wnetwynetw 3 10 隐含层阈值调整公式 iii i iiiiii netynetEEE netynet 3 11 又因为 11 PL pp kk pk k E To o 3 12 i ki k y w net 1 k k net a i j ij net x w 1 i i net 3 13 11 PL pp kkkki pk i E Tonetw y 3 14 i i i net net y 3 15 k k k o net net 3 16 所以最后得到以下公式 11 PL pp kikkki pk wTonety 3 17 11 PL pp kkkk pk aTonet 3 18 11 PL pp ijkkkkiij pk wTonetwnetx 3 19 11 PL pp ikkkkii pk Tonetwnet 3 20 6 13 结 束 参数初始化 最大训练次数 学习精度 隐节 点数 初始权值 阈值 初始学习速率等 批量输入学习样本并且对输 入和输出量进行归一化处理 计算各层的输入和输出值 计算输出层误差 E q E q 修正权值和阈值 Yes N Yes 开 始 图 2 2 BP 算法程序流程图 Fig 2 2 The flowchart of the BP algorithm program 2 2 基本基本 BP 算法的缺陷算法的缺陷 BP 算法因其简单 易行 计算量小 并行性强等优点 目前是神经网络 训练采用最多也是最成熟的训练算法之一 其算法的实质是求解误差函数的 最小值问题 由于它采用非线性规划中的最速下降方法 按误差函数的负梯 度方向修改权值 因而通常存在以下问题 1 学习效率低 收敛速度慢 2 易陷入局部极小状态 7 13 2 3 BP 算法的改进算法的改进 2 3 1 附附加加动动量量法法 附加动量法使网络在修正其权值时 不仅考虑误差在梯度上的作用 而 且考虑在误差曲面上变化趋势的影响 在没有附加动量的作用下 网络可能 陷入浅的局部极小值 利用附加动量的作用有可能滑过这些极小值 该方法是在反向传播法的基础上在每一个权值 或阈值 的变化上加上 一项正比于前次权值 或阈值 变化量的值 并根据反向传播法来产生新的 权值 或阈值 变化 带有附加动量因子的权值和阈值调节公式为 1 1 kwmcpmckw ijjiij 1 1 kbmcmckb iii 其中 k 为训练次数 mc 为动量因子 一般取 0 95 左右 附加动量法的实质是将最后一次权值 或阈值 变化的影响 通过一个 动量因子来传递 当动量因子取值为零时 权值 或阈值 的变化仅是根据 梯度下降法产生 当动量因子取值为1 时 新的权值 或阈值 变化则是 设置为最后一次权值 或阈值 的变化 而依梯度法产生的变化部分则被忽 略掉了 以此方式 当增加了动量项后 促使权值的调节向着误差曲面底部 的平均方向变化 当网络权值进入误差曲面底部的平坦区时 i将变得 很小 于是 从而防止了的出现 有助于使网络 1 kwkw ijij 0 ij w 从误差曲面的局部极小值中跳出 根据附加动量法的设计原则 当修正的权值在误差中导致太大的增长结 果时 新的权值应被取消而不被采用 并使动量作用停止下来 以使网络不 进入较大误差曲面 当新的误差变化率对其旧值超过一个事先设定的最大误 差变化率时 也得取消所计算的权值变化 其最大误差变化率可以是任何大 于或等于 1 的值 典型的取值取 1 04 所以 在进行附加动量法的训练程 序设计时 必须加进条件判断以正确使用其权值修正公式 训练程序设计中采用动量法的判断条件为 E k 为第 k 步误差平方和 mc mc95 0 0 其它 1 04 1 1 kEkE kEkE 2 3 2 自自适适应应学学习习速速率率 对于一个特定的问题 要选择适当的学习速率不是一件容易的事情 通 8 13 常是凭经验或实验获取 但即使这样 对训练开始初期功效较好的学习速率 不见得对后来的训练合适 为了解决这个问题 人们自然想到在训练过程中 自动调节学习速率 通常调节学习速率的准则是 检查权值是否真正降低了 误差函数 如果确实如此 则说明所选学习速率小了 可以适当增加一个量 若不是这样 而产生了过调 那幺就应该减少学习速率的值 下式给出了一 个自适应学习速率的调整公式 E k 为第 k 步误差平方 7 0 05 1 1 k k k k 其它 04 1 1 1 kEkE kEkE 和 初始学习速率 0 的选取范围可以有很大的随意性 2 3 3 动动量量 自自适适应应学学习习速速率率调调整整算算法法 当采用前述的动量法时 BP 算法可以找到全局最优解 而当采用自适 应学习速率时 BP 算法可以缩短训练时间 采用这两种方法也可以用来 训练神经网络 该方法称为动量 自适应学习速率调整算法 2 4 网络的设计网络的设计 2 4 1 网网络络的的层层数数 理论上已证明 具有偏差和至少一个 S 型隐含层加上一个线性输出层 的网络 能够逼近任何有理数 增加层数可以更进一步的降低误差 提高精 度 但同时也使网络复杂化 从而增加了网络权值的训练时间 而误差精 度的提高实际上也可以通过增加神经元数目来获得 其训练效果也比增加层 数更容易观察和调整 所以一般情况下 应优先考虑增加隐含层中的神经 元数 2 4 2 隐隐含含层层的的神神经经元元数数 网络训练精度的提高 可以通过采用一个隐含层 而增加神经元数了的 方法来获得 这在结构实现上 要比增加隐含层数要简单得多 那么究竟选 取多少隐含层节点才合适 这在理论上并没有一个明确的规定 在具体设计 时 比较实际的做法是通过对不同神经元数进行训练对比 然后适当地加上 一点余量 2 4 3 初初始始权权值值的的选选取取 由于系统是非线性的 初始值对于学习是否达到局部最小 是否能够收 敛及训练时间的长短关系很大 如果初始值太大 使得加权后的输入和 n 落在了 S 型激活函数的饱和区 从而导致其导数f n 非常小 而在计 9 13 算权值修正公式中 因为 当 f n 时 则有 这使得 nf 0 0 从而使得调节过程几乎停顿下来 所以一般总是希望经过初始加0 ij w 权后的每个神经元的输出值都接近于零 这样可以保证每个神经元的权值都 能够在它们的 S 型激活函数变化最大之处进行调节 所以 一般取初始权 值在 1 1 之间的随机数 2 4 4 学学习习速速率率 学习速率决定每一次循环训练中所产生的权值变化量 大的学习速率可 能导致系统的不稳定 但小的学习速率导致较长的训练时间 可能收敛很慢 不过能保证网络的误差值不跳出误差表面的低谷而最终趋于最小误差值 所 以在一般情况下 倾向于选取较小的学习速率以保证系统的稳定性 学习速 率的选取范围在 0 01 0 8 之间 3 BP 神经网络的应用神经网络的应用 现给出一药品商店一年当中12 个月的药品销售量 单位 箱 如下 2056 2395 2600 2298 1634 1600 1873 1487 1900 1500 2046 1556 训练一个 BP 网络 用当前的所有数据预测下一个月的药品销售量 有两种方法实现 一种是编写matlab 程序 一种是 使用 nntool 工具 箱 3 1 matlab 程序实现程序实现 我们用前三个月的销售量预测下一个月的销售量 也就是用1 3 月的 销售量预测第 4 个月的销售量 用 2 4 个月的销售量预测第 5 个月的销售 量 如此循环下去 直到用9 11 月预测 12 月份的销售量 这样训练 BP 神经网络后 就可以用 10 12 月的数据预测来年一月的销售量 实现程序如下 p 2056 2395 2600 2395 2600 2298 2600 2298 1634 2298 1634 1600 1634 1600 1873 1600 1873 1478 1873 1478 1900 1478 1900 1500 1900 1500 2046 t 2298 1634 1600 1873 1487 1900 1500 2046 1556 10 13 pmax max p pmax1 max pmax pmin min p pmin1 min pmin for i 1 9 归一化处理 p1 i p i pmin1 pmax1 pmin1 end t1 t pmin1 pmax1 pmin1 t1 t1 net newff 0 1 0 1 0 1 7 1 tansig logsig traingd for i 1 9 net trainParam epochs 15000 net trainParam goal 0 01 LP lr 0 1 net train net p1 i t1 i end y sim net 1500 2046 1556 y1 y pmax1 pmin1 pmin1 如果神经网络的训练函数使用trainlm 则仿真步骤会很少 但需要较大的系 统内存 经预测 来年一月的销售量 y1 为1 4848e 003箱 每次运行后的结果可 能不同 3 2 nntool 神经网络工具箱的使用神经网络工具箱的使用 1 在 matlab 7 4 命令窗口键入 nntool 命令打开神经网络工具箱 如图 2 点击 Import 按钮两次 分别把输入向量和目标输出加入到对应的窗口 Inputs 和 Targets 中 有两种可供选择的加入对象 点击 Import 后可以看 见 一种是把当前工作区中的某个矩阵加入 另一种是通过 mat 文件读入 11 13 3 点击 New Network 按钮 填入各参数 以最常用的带一个隐层的 3 层神经 网络为例说明 下面没有列出的参数表示使用默认值就可以了 例如 Network Type 为默认的 BP 神经网络 i Input Range 这个通过点击 Get From Input 下拉框选择你加入的输入向量便 可自动完成 当然也可以自己手动添加 ii Training Function 最好使用 TRAINSCG 即共轭梯度法 其好处是 当训练不收敛时 它会自动停止训练 而且耗时较其他算法 TRAINLM TRAINGD 少 也就是收敛很快 如果收敛的话 而且 Train Parameters 输入不多 也不用太多的技巧调整 一般指定迭代次数 结果显示 频率和目标误差就可以了 详见下文 iii Layer 1 Number of Neurons 隐层的神经元个数 这是需要经验慢慢 尝试并调整的 大致上由输入向量的维数 样本的数量和输出层 Layer2 的 神经元个数决定 一般来说 神经元越多 输出的数值与目标值越接近 但所 花费的训练时间也越长 反之 神经元越少 输出值与目标值相差越大 但训 练时间会相应地减少 这是由于神经元越多其算法越复杂造成的 所以需要自 己慢慢尝试 找到一个合适的中间点 比如输入是 3 行 5000 列的 0 9 的随机整 数矩阵 在一开始选择 1000 个神经元 虽然精度比较高 但是花费的训练时间 较长 而且这样神经网络的结构与算法都非常复杂 不容易在实际应用中实现 尝试改为 100 个 再调整为 50 个 如果发现在 50 个以下时精度较差 则可最 后定为 50 个神经元 等等 iv Layer 1 Transfer Function 一般用 TANSIG 当然也可以 LOGSIG 即表示隐层输出是 1 1 之间的实数 与 LOGSIG 相比范围更大 v Layer 2 Number of Neurons 输出层的神经元个数 需要与输出的矩阵
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论