BP神经网络算法的改进及在Matlab中的实现

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

!! 引言 是目前比较流行的神经网络学习算法 # 是能实 现映射 变换的 前 B C 算法 " B E I J K & * E E F M * NE + * & M F O P$ % % L L 馈型网络中最常用的一类网络 # 是一种典型的误差修正方法 % 但标准 B 易 形成局 部 C 算法存 在一 些缺陷 & 极小而得不到整体最优 # 迭代次数多 # 收 敛 速 度 慢% 前 人 已 提 出 了 不 少 改 进 方 法# 本文基于 ) * +提 出 的 L ’ 批处理 ( 思想 # 以及加入动量项提高训练速度的方法 # 给出了带动量 的批 处理梯 度下降 算法 # 并用 D E F + E G 神经网络工具箱进行了设计分析及仿真 % "!B C 算法的改进 >" >!B C 算法收敛速度慢的原因 " $ > B C 算法中网络参数每次调节的幅度 均 以 一 个 与 网 络 误 差 函 数 或 其 对 权 值 导 数 大 小 成 正 比 的 固 在误差曲面较平坦处 # 由于这一偏导数值较小 # 因而权值参数的调节幅度也较 小 # 以 定因子! 进行 % 这样 # 致于需要经过多次调整才能将误差函数曲面降低 ) 而 在 误差曲 面较 高曲率 处 # 偏 导 数 较 大# 权值参数调节 的幅度也较大 # 以致在误差函数最小点附近发生过冲 现象 # 使权 值调节 路径 变 为 锯 齿 形 # 难以收敛到最小 点# 导致 B 算法收敛速度慢 % C " $ 但由于网络 误差 函数矩 阵的严 重 # B C 算法中权值参数的调节是沿误差函数梯度下降方向进行的 # 使这一梯度最速下降方向偏离面向误差曲面的最小点方向 # 从而急剧加长了权值参数到最小点的 病态性 # *+ 搜索路径 # 自然大大增加了 B 这也造成了 B C 算法的学习时间 # C 算法收敛速度慢 # % >" #! 带动量的批处理梯度下降算法 针对 B 作者提出了带动量的批处理梯 度下 降的思 想 # 即每 一个输 入样 本对 C 算法收敛速度慢的缺点 # 网络并不立即产生作用 # 而是等到全部输入样本到齐 # 将全部误差求和累加 # 再集中修改权值一次 # 即根据
* +飞思科技产品研法中心编 " 北京 ! 电子工业出版社 " > D E F + E G R" = 辅助神经网络分析与设计 * D+ " # ’ ’ A" >" * +焦李成 "神经网络计算 * 西安电子科技大学出版社 " # D+ "西安 ! > Q Q A" Q" * +于敏学 "李敏生 "神经网络模型的结构和算法的分离 * + $ % ! A , "北京理工大学学报 " # ’ ’ >" # > = = @ H!= Q ’" * +李广琼 "蒋加伏 "关于对 B + 自然科学版 % " $ % ! ( C 神经网络算法改进的研究 * , "常德师范学院学报 $ # ’ ’ A" > = # A >!A A"
# ’ ’ A?> >?’ A! " 收稿日期 &
万方数据 作者简介 & 陈桦 " # 男# 上海市人 # 教授 # 研究方向 & , > Q R #? $ : $ S : $D# : 3 :T
陕西科技大学学报 第# 0( #卷 R0 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
第#期 陈桦等 ! ,( B C 神经网络算法的改进及在 D E F + E G 中的实现 H, %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 执行代码后 " 在命令行中将实时显示网络的训练状态 " 如下所示 ! # # # / $ 6 0< SD" 7 * I O’ A ’ ’"D 3 7A" R Q > A > U K ’ =" < & E ^ M U N F (" = ( H # Q !8 % U K > ’ !> # # / $ 6 0< SD" 7 * I O= ’ A ’ ’"D 3 7’" ’ ’ = A # > @ @ > U K ’ =" < & E ^ M U N F !8 % # # > A # # # > U K > ’ !’" # # / $ 6 0< SD" 7 * I O> ’ ’ A ’ ’"D 3 7R" A ( @ R @ U K ’ = > U K ’ =" < & E ^ M U N F !8 % # ’ ( ’ Q H ( Q > U K > ’ !’" # # / $ 6 0< SD" 7 * I O> > ( A ’ ’"D 3 7Q" ’ R # A = U K ’ R > U K ’ =" < & E ^ M U N F !8 % # ’ ’ Q ’ @ H = R > U K > ’ !’" / $ 6 0< SD" C U & W * & P E N I UL * E +P U F " !8 对网络进行仿真测试 " % # !E Y[ M P$ N U F Y !E !!!# % ’ ’ # R ?>" ’ ’ ( (’" Q Q R Q’" Q Q Q # ! ?>"
!" #!!!!!!!!!!!!!!! !!!! 陕西科技大学学报 !!!!!!!!!!!!!!!!!!$ & " # ’ ’ ( % -./ 0$ 123 4$$0 5 6.0 6 ) 7 / 3 6 8 923 : 6 7 0 : 7;8 7 :401 < 9!!!!! ! ) * + " # # !!!!!!, ( =!
,
$# ) ## ,# ! * & " ># & " +! & &" #$%
&"’
Baidu Nhomakorabea
%&
"修正权值 # 比传统的算法增加了动量项 # 加权调节公式为 ’ ( !! ! ! " ! " " " ’ > $ ’ ’(> ’ ( " % (! (# "$% "$% % & & &! &! ! ""! $ ""! " $% ’(> ’ ’ (# " "$% $ # "$% * % %( &! &! &! $% $ & > # & !" # !# " # # ! * % # .* % #" # # # % 则 !! 若& 为输出节点 # >.* $ * .* * & " ! &" &! &" 若 为隐节点 # 则 !! & >.* $ & "* &! &" $ & # #$%
表> " #" A! 执行结果的对比 ! 表 >! 两种算法执行结果的对比
算!法 输入矢量 目标函数 隐层节点数 输出节点数 传递函数 目标误差 学习因子 动量系数 标准 B C 算法迭代次数 带动量的批处理梯度下降算法 结!果 ( 0" & ’=’= .> .>##’ ( ’" & .> .>>> A > ) . # $ % 1$ )%" > >(U ’2 ’ ’ ’ ’ > ’2 ’ = ’2 Q # > # R (
#
总误差 ! "
#!
#
修正权值 # 以提高收敛速度 % 在调整权值时加入动量项 # 降低网 络对于 误差曲 面局 部细
! 节的敏感性 # 有效抑制网络限于局部极小 # 此时 # $"! $ $ # 加入的 $% ’(> ’ (# " "$% # 为 动量系数 # &" &" $% $ & 动量项相当于阻尼项 # 以减小学习过程的振荡趋势 # 从而改善收敛性 % 下面介绍其算法 & " $初始化权值和阀值 ) > " $给定输入 ) 和目标输出*) # " $计算实际输出 *& A
图 >! 二层网络模型示意图 命令为 ’ ! + , # + , # # . # " * N U F YN U V W W ?>#* ’= A# > Z F E N [ M Z Z \ & U + M N Z ] F & E M N ^ Z L % L 这个命令建立了网络对象并且初始化了网络权重和偏置 # 它的输入是两个元素的向量 # 第 > 层有 A 个 神经元 # 第 # 层有 > 个神经元 ( 第 > 层的转移函数是 F # 输出层的转移函数是+ ( 输入向 量 E N K [ M P * M ^ M N U E & L 的第 > 个元素的范围是 ?> 到 ## 输入向量的第 # 个 元 素的 范围是 ’ 到 =# 训练 函 数 是 F ( & E M N ^ 接下来就 L 可以进行训练了 ( #" #! 网络训练 带动量的批处理梯度下降法用训练函数 F # 则性能函数低于 & E M N ^ P 触发 ( 如果训练次数超过 U * I O [ L % # 梯度值低于 # 或者训练时间超过 训练就会结束 ( 程序代码如下 ’ * E + P M N & E ^ F M P U L L
! + , # + , # # . # " * /生成一个前馈 B U F YN U V W W ?>#* ’= A# > Z F E N [ M Z Z \ & U + M N Z Z F & E M N ^ P Z C 网络 !N !!/ L % L /每隔 [ U F " F & E M N C E & E P" [ O * VY= ’* O * V 次显示一次 !N !!!!!/ / /设置学习速度 U F " F & E M N C E & E P" + & Y’" ’ =* !N / /设置动量系数 U F " F & E M N C E & E P" P I Y’" Q* !N / /训练单位时间 U F " F & E M N C E & E P" U * I O [ YA ’ ’* !N % / /目标误差 U F " F & E M N C E & E P" * E + Y> U K =* !N L , * / /指定输入值 Y+ ?> ?>##* ’=’= !% , * / /目标值 F Y+ ?> ?>>> ! 万方数据 ! # # " * / /训练网络 U F Y F & E M N N U F F !N %
摘!要! 分析了 B 研 究 了 一 种 提 高 其 收 敛 速 度 的 方 法" 即 C 神经网络算法 收 敛 速 度 慢 的 原 因 " 将动量法和批处理方法结合起 来 对 B 算 法 进 行 改 进 " 提 高 学 习 速 度 " 并 给 出 了 算 法 思 想 " 用 C 仿 真 测 试 结 果 证 明 该 方 法 是 可 行" D E F + E G 神经网络工具箱对神经网络 进 行 了 初 始 化 和 训 练 " 具有实用性 # 关键词 ! 动量法 $ 批处理方法 B C 神经网络 $ D E F + E G 神经网络工具箱 $ 中图分类号 ! 8 C > @ A!!! 文献标识码 ! $
新改进算法的结果与目标值很接近 " 经过 ( 次迭代 " 网络误差就达到 E F + E G 进行测试的结果表明 " !! 用 D 了要求 " 而标准的 B 算法需要迭代 次 " 因此作者改进的算法训练过程非常快 ) C # > # R $! 结束语 通过实验证明 " 用此算法对网络进行训练非常快 " 迭代次数减少 " 提高了收敛速度 " 但每一种算法都不 是完美的 " 此算法中# 的选取只能通过实验来确定 ) 另外 " 为了从整体上限制学习率过大以避免计算 溢出 " * #+ 可做如下修改! "!’ $ # % " 为常数 " 为学习周期数 " 以避免学习率过大而出现振荡 ) >(3 4 3 4 参 考 文 献
#
"若达到误差精度或循环次数要求 # 则输出结果 # 否则回到 ! " ( = # !! ! #! 用 D E F + E G 神经网络工具箱进行设计与分析 #" >! 网络构建和初始化 在D 仿真 # 第一步是建立网络对象 ( 函数 N E F + E G 中对改进的 B C 算法进行测试 ) U V W W建立一个可训练 的前馈网络 # 这需要 ( 个输入参数 ’ 第 > 个参数是一个 / X #的矩阵以定义 / 个输入向量的最小值和最大 值* 第 # 个参数是一个表示每层神经元个数的数组 * 第 A 个参数是包含每层用到的转移函数名称的细胞数 组* 最后 > 个参数是用到的训练函数的名称 ( 创建一个二层网络 # 其网络模型如图 > 所示 (
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% " " # > ’ ’ ’?= @ > > # ’ ’ ( ’ #?’ ’ ( =?’ A ! 文章编号 !
B C 神经网络算法的改进及在 D E F + E G 中的实现
陈桦 ! 程云艳
" 陕西科技大学计算机与信息工程学院 # 陕西 咸阳 !H $ > # ’ @ >
相关文档
最新文档