BP算法

版权声明:本文为CSDN博主「笨拙的石头」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_32241189/article/details/80305566

 

作为深度学习领域的破冰之作,BP神经网络重新燃起了人们对深度学习的热情.它解决了DNN中的隐层传递中的权重值的计算问题.那么,BP算法思想是什么?它又是如何实现的呢?这就是本节的研究内容.

一.BP算法的提出及其算法思想
    神经网络主要是由三个部分组成的,分别是:1) 网络架构 2) 激活函数  3) 找出最优权重值的参数学习算法.

    BP算法就是目前使用较为广泛的一种参数学习算法.

    BP(back propagation)神经网络是1986年由Rumelhart和McClelland为首的科学家提出的概念,是一种按照误差逆向传播算法训练的多层前馈神经网络。    

    既然我们无法直接得到隐层的权值,能否先通过输出层得到输出结果和期望输出的误差来间接调整隐层的权值呢?BP算法就是采用这样的思想设计出来的算法,它的基本思想:学习过程由信号的正向传播(求损失)与误差的反向传播(误差回传)两个过程组成。如图1所示为BP算法模型示意图.

                          

                                                                                   图1 BP算法模型示意图

二.BP算法
    2.1 BP算法的一般流程
    根据BP算法的基本思想,可以得到BP算法的一般过程:

    1) 正向传播FP(求损失).在这个过程中,我们根据输入的样本,给定的初始化权重值W和偏置项的值b, 计算最终输出值以及输出值与实际值之间的损失值.如果损失值不在给定的范围内则进行反向传播的过程; 否则停止W,b的更新.

    2) 反向传播BP(回传误差).将输出以某种形式通过隐层向输入层逐层反传,并将误差分摊给各层的所有单元,从而获得各层单元的误差信号,此误差信号即作为修正各单元权值的依据。

    由于BP算法是通过传递误差值δ进行更新求解权重值W和偏置项的值b, 所以BP算法也常常被叫做δ算法.

    下面我们将以三层感知器结构为例,来说明BP算法的一般计算方法(假设个隐层和输出层的激活函数为f).

                                                           

                                                                                    图2 三层感知器结构

    BP算法网络结构的示意图如图3所示.

                                

                                                                                图3 BP算法网络结构

    2.2 BP算法的各层误差计算
    各部分输入输出如图3所示, 下面进行各层误差计算.

    1) 输出层的误差(平方和误差,前面的1/2是为了后面的计算方便)

                                                                                                                                      (1)

    2) 展开至隐层的误差(,是前面的WY的输出值,带入可以得到下面的式子)

                                                                             (2)

    3) 输入层误差(和前面一样,将VX带入f(netj))

                                               (3)

    观察上式, 我们很容易看出只有(3)式和输入x有关.E有了,那么就很简单可以看出可以使用常用的随机梯度下降法(SGD)求解.也就是求解式子中的W和V,使得误差E最小.

    2.3 BP算法的示例
    已知如图4所示的网络结构.

                                         

                                                                                          图4 网络结构图

    设初始权重值w和偏置项b为:

    w=(0.1,0.15,0.2,0.25,0.3,0.35,0.4,0.45,0.5,0.55,0.6,0.65)

    b = (0.35,0.65)-->这里为了便于计算,假设从输入层到隐层之间, 隐层到输出层之间的偏置项b恒定.

    1) FP计算过程

    ① 从输入层到隐层(其实这里的b可以看成一个特征)

    h1 = w1*l1 +w2*l2 +b1*1 = 0.1*5+0.15*10+0.35*1 = 2.35

    h2 = w3*l1 +w4*l2 +b1*1 = 0.2*5+0.25*10+0.35*1 = 3.85

    h3 = w5*l1 +w6*l2 +b1*1 = 0.3*5+0.35*10+0.35*1 = 5.35

    则各个回归值经过激活函数变换后的值为:

    

    

    

    ② 隐层到输出层

    neto1 = outh1*w7 +outh2*w9 +outh3*w11+ b2*1= 2.35*0.4 + 3.85*0.5 +5.35 *0.6+0.65 = 2.10192   

    neto2 = outh1*w8 +outh2*w10 +outh3*w12 +b2*1= 2.35*0.45 + 3.85*0.55 +5.35 *0.65 +0.65= 2.24629 

    则经过激活函数变换得到:

    outo1 = 0.89109 (真实值0.01) ,  outo2 = 0.90433 (真实值0.99)

    此时的平方和误差为:

                

    与真实值不符,需要进行BP反馈计算.

    2) BP计算过程

    这里的BP计算我们分为两个部分.  ①隐层到输出层的参数W的更新   ②从输入层到隐层的参数W的更新.

    **在这里,我们主要讲述第一部分隐层到输出层的参数W的更新. 

                                                          

                                                                          图5 从隐层到输出层的网络结构图

    如图5所示为从隐层到输出层的网络结构图.

    首先,运用梯度下降法求解W7的值.

    目标函数:  ,由于此时求解W7,所以只与有关,则此时的损失函数为:

    可以看出, 为凸函数(开口向上), 有最小值且最小值在导数为0的点上.

    又有 neto1 = outh1*w7 +outh2*w9 +outh3*w11+ b2*1,  outo1 =  f(o1)

    则对W7求偏导数得到:

                                 (4)

    又有W的更新公式为:

                                                                                                                                                (5)

    这样将上式带入W的更新公式(5)就可以求得更新后的W值.

    最后,得到了W7的更新值为:

                 

    同理可以求得W9,W11,b2的更新值,这里就不在一一叙述了.

    ***对于从输入层到隐层的参数W的更新,其实和从隐层到输出层的几乎一样,唯一不同的就是链式求导过程中的Etotal和outo1,outo2都有关系.这里就不展开解释了.

参考文献

[1]https://www.cnblogs.com/jhding/p/5687549.html
————————————————
版权声明:本文为CSDN博主「笨拙的石头」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_32241189/article/details/80305566

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
BP算法,即反向传播算法(Back Propagation),是一种常用的神经网络训练算法。它是一种通过不断地调整权重来逐步改善网络性能的算法。 BP算法的基本思想是利用误差反向传播的方式来更新神经网络的权重。具体来说,首先将样本输入到神经网络中,通过前向传播计算得到神经网络的输出结果。然后,计算预测值与真实值之间的误差,并根据误差大小来调整网络权重。最后,将误差从输出层反向传播到隐藏层和输入层,再次通过反向传播来调整权重。通过不断迭代这个过程,可以逐步提高网络的性能。 BP算法的核心在于误差的反向传播,即通过偏导数链式法则来计算每个权重的误差贡献,并根据误差贡献的大小来调整权重。具体来说,对于每个权重,通过计算输出层误差对该权重的偏导数,再乘以相应的学习率,即可得到该权重的调整量。然后经过一定的学习率更新权重,并进入下一轮迭代。 BP算法的优点是可以训练多层的神经网络,具有较好的泛化能力。同时,BP算法在计算上相对高效,能够通过梯度下降迭代法来优化权重的更新。然而,BP算法也存在一些缺点。由于误差反向传播的过程中可能产生梯度消失或梯度爆炸的问题,导致网络训练困难或不稳定。另外,BP算法不保证能找到全局最优解,可能会陷入局部最优解。 总结来说,BP算法是一种通过不断地调整神经网络权重来提高网络性能的算法。它利用误差反向传播的方式来计算每个权重的调整量,并通过梯度下降迭代法来更新权重。尽管BP算法存在一些缺点,但它仍然是目前应用最广泛的神经网络训练算法之一。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值