欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

BP算法学习

程序员文章站 2022-07-05 08:46:55
...

一、什么是BP算法
BP算法是建立在BP神经网络(多层前馈网络)上的一种算法,它根据神经网络的路径进行一层一层的运算,这个运算包括信号的正向传播和误差的反向传播两部分。

BP算法学习
二、BP算法重要组成部分
BP神经网络包含层与节点,每相邻两层实现全连接。而BP算法包含输入值、输出值、预期值、权值、偏倚(充当阈值)。算法通过多次调整权值(神经元节点权系数)来实现在多组输入值情况下,输出值与预期值的逐渐拟合(即使两者间误差函数减小)。
误差函数

三、BP算法主要步骤

  1. 权系数修正公式如下:

BP算法学习

(1)输出层(Tk为输出层预期值、Ok为实际值、j表示层、k表示第k个节点、n为学习效率,其值介于0-0.1)

BP算法学习
BP算法学习
(2)隐藏层(p为层数、i为输入节点数、j为隐含节点数、k为输出节点数、δ为反传误差信号、I为输入值、O为输出值)
BP算法学习
*δ计算
*f’(Ik)计算

  1. 具体算法(后向传播)及图解
    输入:D——训练元组和与其相关联的目标值组成的数据集;
    n——学习率;network——多层前反馈网络
    输出:训练后的神经网络
1 //初始化network的所有权重和偏倚
2 while(···//不满足终止条件时){
3       for ···//D中的每个训练元组X{
4              //向前传播输入;
5              for ···//每个输入单元j{
6                         Oj=Ij;//输入单元的输出是它的实际输入值
7                      for ···//隐藏或输出层每个单元j{
8                             Ij=Σji wij*Oj+Θj;//关于前一层i,计算单元j的净输入
9                             Oj=1/1+e^(-Ij))}//计算单元j的输出
10                             //后向传播误差;
11                     for ···//输出层每个单元j
12                            Errj=Oj*1-Oj)*(Tj-Oj)//计算误差;
13                     for ···//由最后一个到第一个隐藏层,对于隐藏层每个单元j
14                            Errj=Oj*(1-Oj)*Σk Errk*wjk;//计算关于下一个较高层k的误差
15                    for ···//network中的每个权wij{
16                         Δwij=n*Errj*Oi;//权重增量
17                          wij=wij+Δwij;}//权重更新
18                   for ···//network中每个偏倚Θj{
19                         ΔΘj=n*Errj;//偏倚增量
20                         Θj=Θj+ΔΘj;}//偏倚更新
21                            }}

图解

BP算法学习
BP算法学习
BP算法学习
BP算法学习
BP算法学习
四、BP算法的不足

  1. 训练时间长——由于BP算法中具有多层、多节点的特点,并且一个样本中存在多组数据(即多个输入值),训练时具有较多循环,既有内循环又有外循环,从而导致调节权值时间较长。
  2. 学习率较为局限(介于0-0.1)——可通过学习率调节训练时间使时间缩短,但由于学习率过大、若权值较大时,**函数易达到饱和,使权值调整停滞,故学习率不能过大,也不能过小。
  3. 训练过程中,若使用新样本,旧样本的训练结果易被遗忘。
相关标签: 笔记 学习