1、BP 神经网络原理1 基本 BP 算法的缺陷BP 算 法 因 其 简 单 、 易 行 、 计 算 量 小 、 并 行 性 强 等 优 点 , 目 前 是 神 经 网 络训 练 采 用 最 多 也 是 最 成 熟 的 训 练 算 法 之 一 。 其 算 法 的 实 质 是 求 解 误 差 函 数 的最 小 值 问 题 , 由 于 它 采 用 非 线 性 规 划 中 的 最 速 下 降 方 法 , 按 误 差 函 数 的 负 梯度 方 向 修 改 权 值 , 因 而 通 常 存 在 以 下 问 题 :(1) 学习效率低,收敛速度慢(2) 易陷入局部极小状态2 BP 算法的改进2.3.1 附 加 动
2、 量 法附 加 动 量 法 使 网 络 在 修 正 其 权 值 时 , 不 仅 考 虑 误 差 在 梯 度 上 的 作 用 , 而且 考 虑 在 误 差 曲 面 上 变 化 趋 势 的 影 响 。 在 没 有 附 加 动 量 的 作 用 下 , 网 络 可 能陷 入 浅 的 局 部 极 小 值 , 利 用 附 加 动 量 的 作 用 有 可 能 滑 过 这 些 极 小 值 。该 方 法 是 在 反 向 传 播 法 的 基 础 上 在 每 一 个 权 值 ( 或 阈 值 ) 的 变 化 上 加 上一 项 正 比 于 前 次 权 值 ( 或 阈 值 ) 变 化 量 的 值 , 并 根 据 反 向
3、传 播 法 来 产 生 新 的权 值 ( 或 阈 值 ) 变 化 。带 有 附 加 动 量 因 子 的 权 值 和 阈 值 调 节 公 式 为 :)()1() kwmcpckwijjiij (bbiii其 中 k 为 训 练 次 数 , mc 为 动 量 因 子 , 一 般 取 0.95 左 右 。附 加 动 量 法 的 实 质 是 将 最 后 一 次 权 值 ( 或 阈 值 ) 变 化 的 影 响 , 通 过 一 个动 量 因 子 来 传 递 。 当 动 量 因 子 取 值 为 零 时 , 权 值 ( 或 阈 值 ) 的 变 化 仅 是 根 据梯 度 下 降 法 产 生 ; 当 动 量 因
4、子 取 值 为 1 时 , 新 的 权 值 (或阈值)变 化 则 是设 置 为 最 后 一 次 权 值 (或阈值)的 变 化 , 而 依 梯 度 法 产 生 的 变 化 部 分 则 被 忽略 掉 了 。 以 此 方 式 , 当 增 加 了 动 量 项 后 , 促 使 权 值 的 调 节 向 着 误 差 曲 面 底 部的 平 均 方 向 变 化 , 当 网 络 权 值 进 入 误 差 曲 面 底 部 的 平 坦 区 时 , i 将 变 得很 小 , 于 是 ,从 而 防 止 了 的 出 现 , 有 助 于 使 网 络)()1(kwkijij0ijw从 误 差 曲 面 的 局 部 极 小 值 中
5、跳 出 。根 据 附 加 动 量 法 的 设 计 原 则 , 当 修 正 的 权 值 在 误 差 中 导 致 太 大 的 增 长 结果 时 , 新 的 权 值 应 被 取 消 而 不 被 采 用 , 并 使 动 量 作 用 停 止 下 来 , 以 使 网 络 不进 入 较 大 误 差 曲 面 ; 当 新 的 误 差 变 化 率 对 其 旧 值 超 过 一 个 事 先 设 定 的 最 大 误差 变 化 率 时 , 也 得 取 消 所 计 算 的 权 值 变 化 。 其 最 大 误 差 变 化 率 可 以 是 任 何 大于 或 等 于 1 的 值 。 典 型 的 取 值 取 1.04。 所 以 ,
6、 在 进 行 附 加 动 量 法 的 训 练 程序 设 计 时 , 必 须 加 进 条 件 判 断 以 正 确 使 用 其 权 值 修 正 公 式 。训 练 程 序 设 计 中 采 用 动 量 法 的 判 断 条 件 为 :, E( k) 为 第 k 步 误 差 平 方 和 。mc95.0其 它 )1().*kE2.3.2 自 适 应 学 习 速 率对 于 一 个 特 定 的 问 题 , 要 选 择 适 当 的 学 习 速 率 不 是 一 件 容 易 的 事 情 。 通常 是 凭 经 验 或 实 验 获 取 , 但 即 使 这 样 , 对 训 练 开 始 初 期 功 效 较 好 的 学 习 速
7、 率 ,不 见 得 对 后 来 的 训 练 合 适 。 为 了 解 决 这 个 问 题 , 人 们 自 然 想 到 在 训 练 过 程 中 ,自 动 调 节 学 习 速 率 。 通 常 调 节 学 习 速 率 的 准 则 是 : 检 查 权 值 是 否 真 正 降 低 了误 差 函 数 , 如 果 确 实 如 此 , 则 说 明 所 选 学 习 速 率 小 了 , 可 以 适 当 增 加 一 个 量 ;若 不 是 这 样 , 而 产 生 了 过 调 , 那 幺 就 应 该 减 少 学 习 速 率 的 值 。 下 式 给 出 了 一个 自 适 应 学 习 速 率 的 调 整 公 式 :, E(
8、k) 为 第 k 步 误 差 平 方)(7.051(k其 它 )(04.1)(kkE和 。初 始 学 习 速 率 (0)的 选 取 范 围 可 以 有 很 大 的 随 意 性 。2.3.3 动 量 -自 适 应 学 习 速 率 调 整 算 法当 采 用 前 述 的 动 量 法 时 , BP 算 法 可 以 找 到 全 局 最 优 解 , 而 当 采 用 自 适应 学 习 速 率 时 , BP 算 法 可 以 缩 短 训 练 时 间 , 采 用 这 两 种 方 法 也 可 以 用 来训 练 神 经 网 络 , 该 方 法 称 为 动 量 -自 适 应 学 习 速 率 调 整 算 法 。2.4 网
9、络的设计2.4.1 网 络 的 层 数理 论 上 已 证 明 : 具 有 偏 差 和 至 少 一 个 S 型 隐 含 层 加 上 一 个 线 性 输 出 层的 网 络 , 能 够 逼 近 任 何 有 理 数 。 增 加 层 数 可 以 更 进 一 步 的 降 低 误 差 , 提 高 精度 , 但 同 时 也 使 网 络 复 杂 化 , 从 而 增 加 了 网 络 权 值 的 训 练 时 间 。 而 误 差 精 度的 提 高 实 际 上 也 可 以 通 过 增 加 神 经 元 数 目 来 获 得 , 其 训 练 效 果 也 比 增 加 层 数更 容 易 观 察 和 调 整 。 所 以 一 般 情
10、 况 下 , 应 优 先 考 虑 增 加 隐 含 层 中 的 神 经 元 数 。2.4.2 隐 含 层 的 神 经 元 数网 络 训 练 精 度 的 提 高 , 可 以 通 过 采 用 一 个 隐 含 层 , 而 增 加 神 经 元 数 了 的方 法 来 获 得 。 这 在 结 构 实 现 上 , 要 比 增 加 隐 含 层 数 要 简 单 得 多 。 那 么 究 竟 选取 多 少 隐 含 层 节 点 才 合 适 ? 这 在 理 论 上 并 没 有 一 个 明 确 的 规 定 。 在 具 体 设 计时 , 比 较 实 际 的 做 法 是 通 过 对 不 同 神 经 元 数 进 行 训 练 对
11、比 , 然 后 适 当 地 加 上一 点 余 量 。2.4.3 初 始 权 值 的 选 取由 于 系 统 是 非 线 性 的 , 初 始 值 对 于 学 习 是 否 达 到 局 部 最 小 、 是 否 能 够 收敛 及 训 练 时 间 的 长 短 关 系 很 大 。 如 果 初 始 值 太 大 , 使 得 加 权 后 的 输 入 和n 落 在 了 S 型 激 活 函 数 的 饱 和 区 , 从 而 导 致 其 导 数 f(n)非 常 小 , 而 在 计算 权 值 修 正 公 式 中 , 因 为 , 当 f(n) 时 , 则 有 。 这 使 得)(f00, 从 而 使 得 调 节 过 程 几 乎
12、 停 顿 下 来 。 所 以 一 般 总 是 希 望 经 过 初 始 加0ijw权 后 的 每 个 神 经 元 的 输 出 值 都 接 近 于 零 , 这 样 可 以 保 证 每 个 神 经 元 的 权 值 都能 够 在 它 们 的 S 型 激 活 函 数 变 化 最 大 之 处 进 行 调 节 。 所 以 , 一 般 取 初 始 权值 在 ( -1, 1) 之 间 的 随 机 数 。2.4.4 学 习 速 率学 习 速 率 决 定 每 一 次 循 环 训 练 中 所 产 生 的 权 值 变 化 量 。 大 的 学 习 速 率 可能 导 致 系 统 的 不 稳 定 ; 但 小 的 学 习 速
13、率 导 致 较 长 的 训 练 时 间 , 可 能 收 敛 很 慢 ,不 过 能 保 证 网 络 的 误 差 值 不 跳 出 误 差 表 面 的 低 谷 而 最 终 趋 于 最 小 误 差 值 。 所以 在 一 般 情 况 下 , 倾 向 于 选 取 较 小 的 学 习 速 率 以 保 证 系 统 的 稳 定 性 。 学 习 速率 的 选 取 范 围 在 0.01-0.8 之 间 。3 BP 神经网络的应用现 给 出 一 药 品 商 店 一 年 当 中 12 个 月 的 药 品 销 售 量 ( 单 位 : 箱 ) 如 下 :2056 2395 2600 2298 1634 1600 1873
14、1487 1900 1500 2046 1556训 练 一 个 BP 网 络 , 用 当 前 的 所 有 数 据 预 测 下 一 个 月 的 药 品 销 售 量 。有 两 种 方 法 实 现 , 一 种 是 编 写 matlab 程 序 , 一 种 是 使 用 nntool 工 具箱 。3.1 matlab 程序实现我 们 用 前 三 个 月 的 销 售 量 预 测 下 一 个 月 的 销 售 量 , 也 就 是 用 1-3 月 的销 售 量 预 测 第 4 个 月 的 销 售 量 , 用 2-4 个 月 的 销 售 量 预 测 第 5 个 月 的 销 售量 , 如 此 循 环 下 去 , 直
15、 到 用 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;pmax=max(p)
16、;pmax1=max(pmax);pmin=min(p);pmin1=min(pmin);for i=1:9 %归一化处理p1(i,:)=(p(i,:)-pmin1)/(pmax1-pmin1);endt1=(t-pmin1)/(pmax1-pmin1);t1=t1;net=newff(0 1;0 1;0 1,7 1,tansig,logsig,trainlm); for i=1:9%net.trainFcn = traingdm;net.trainParam.epochs=15000;net.trainParam.goal=0.01;LP.lr=0.1;net=train(net,p1(i,:),t1(i);endy=sim(net,1500 2046 1556);y1=y*(pmax1-pmin1)+pmin1;如果神经网络的训练函数使用trainlm,则仿真步骤会很少,但需要较大的系统内存。经预测,来年一月的销售量(y1 )为1.4848e+003箱(每次运行后的结果可能不同)