> 文档中心 > 机器学习8-误差逆传播算法BP的认识

机器学习8-误差逆传播算法BP的认识

文章目录

    • 1 BP算法的原理
    • 2 基本思想
    • 3 推导过程
    • 4 分类
    • 5 解决过拟合的方法

1 BP算法的原理

由于多层前馈网络的训练经常采用误差反向传播算法(error BackPropagation),人们也常把将多层前馈网络直接称为BP网络。
那么,什么是多层前馈神经网络呢?

  • 每层神经元与下一层神经元完全互连,神经元之间不存在同层连接,也不存在跨层连接,这样的神经网络结构通常称为"多层前馈神经网络(multi-layer
    feedforward neural networks)。如图5.6所示。
  • 其中输入层神经元接收外界输入,隐层与输出层神经元对信号进行加工,最终结果由输出层神经元输出:换言之,输入层神经元仅是接受输入,不进行函数处理,隐层与输出层包含功能神经元.因此,图
  • 5.6(a) 通常被称为"两层网络"。为避免歧义,称其为"单隐层网络"只需包含隐层,即可称为多层网络。神经网络的学习过程,就是根据训练数据来调整神经元之间的
  • “连接权” (connection weight) 以及每个功能神经元的阈值;换言之,神经网络"学"到的东西,蕴涵在连接权与阙值中。
  • “前馈”并不意味着网络中信号不能向后转,而是指神经元之间不存在同层连接也不存在跨层连接,即网络中无环或者回路。
    在这里插入图片描述

多层前馈网络有强大的表示能力:只需一个包含足够多神经元的隐层 , 多层前馈神经网络就能以任意精度逼近任意复杂度的连续函数。
但是,如何设置隐层神经元数是未决问题. 实际常用“试错法”。

  • BP算法由信号的正向传播和误差的反向传播两个过程组成。
  • 正向传播时,输入样本从输入层进入网络,经隐层逐层传递至输出层,如果输出层的实际输出与期望输出(导师信号)不同,则转至误差反向传播;如果输出层的实际输出与期望输出(导师信号)相同,结束学习算法。
  • 反向传播时,将输出误差(期望输出与实际输出之差)按原通路反传计算,通过隐层反向,直至输入层,在反传过程中将误差分摊给各层的各个单元,获得各层各单元的误差信号,并将其作为修正各单元权值的根据。这一计算过程使用梯度下降法完成,在不停地调整各层神经元的权值和阈值后,使误差信号减小到最低限度。
  • 权值和阈值不断调整的过程,就是网络的学习与训练过程,经过信号正向传播与误差反向传播,权值和阈值的调整反复进行,一直进行到预先设定的学习训练次数,或输出误差减小到允许的程度。

2 基本思想

  • BP算法的基本思想是,学习过程由信号的正向传播与误差的反向传播两个过程组成。正向传播时,输入样本从输入层传入,经各隐层逐层处理后,传向输出层。若输出层的实际输出与期望的输出(教师信号)不符,则转入误差的反向传播阶段。误差反传是将输出误差以某种形式通过隐层向输入层逐层反传,并将误差分摊给各层的所有单元,从而获得各层单元的误差信号,此误差信号即作为修正各单元权值的依据。这种信号正向传播与误差反向传播的各层权值调整过程,是周而复始地进行的。权值不断调整的过程,也就是网络的学习训练过程。此过程一直进行到网络输出的误差减少到可接受的程度,或进行到预先设定的学习次数为止。
  • BP算法作为多层网络的最杰出的代表,是迄今最成功的神经网络学习算法。不仅可用于多层前馈神经网络,还可用于其他类型的神经网络,例如递归神经网络等等。

3 推导过程

给定数据集D = {(x1,y1),(x2,y2),…,(xm,ym)},xi∈Rd,yi∈Rl.

  • 输入: d 维特征向量

  • 输出: l 个输出值

  • 隐层:假定使用 q 个隐层神经元

  • 假定功能单元均使用Sigmoid 函数
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述

BP算法基于梯度下降策略,以目标的负梯度方向对参数进行调整。下面我们来推导一下反向逆传播算法从隐层到输出层的关系过程。

总目标:要进行参数学习(梯度下降,迭代更新),就需要计算损失函数关于每个参数的偏导数

在这里插入图片描述
机器学习8-误差逆传播算法BP的认识
z(l)指的是第l层的输入值;
W(l)a(l-1)指的是第l-1层神经元的阈值与下一层的连接权的乘积;
b(l)指的是第l层的偏置。

计算偏导:
在这里插入图片描述
其中:
在这里插入图片描述
误差项,也反映了最终损失对第 L层神经元的敏感程度

机器学习8-误差逆传播算法BP的认识
机器学习8-误差逆传播算法BP的认识
我们以计算δ(l)为例,因为Im(l)与δ(l)的计算过程是类似的。
假定:
机器学习8-误差逆传播算法BP的认识

机器学习8-误差逆传播算法BP的认识
则有:
在这里插入图片描述
其中:
机器学习8-误差逆传播算法BP的认识
机器学习8-误差逆传播算法BP的认识
这样我们就得到了得到了δ(l+1)与δ(l)的关系.
计算出上面的偏导数后,上述公式可以写成:
机器学习8-误差逆传播算法BP的认识
在这里插入图片描述

呼应总目标:要进行参数学习(梯度下降,迭代更新),就需要计算损失函数关于每个参数的导数
在这里插入图片描述
前馈神经网络的训练过程可以分为以下三步:
1、前向计算每一层的状态和激活值,直到最后一层
2、反向计算每一层的参数的偏导数
3、更新参数

4 分类

BP算法可分为标准BP算法和累积BP算法。
标准BP算法:

  • 累积误差:
    机器学习8-误差逆传播算法BP的认识

  • 每次仅针对一个训练样例更新连接权和阈值,也就是说,算法的更新规则是基于单个的 Ek推导而得。

  • 每次更新只针对单个样例,参数更新得非常频繁,而且对不同样例进行更新的效果可能出现"抵消"现象.因此,为了达到同样的累积误差极小点 ,标准 BP 算法往往需进行更多次数的迭代.

累积BP算法:

  • 累积误差:
    机器学习8-误差逆传播算法BP的认识

  • 其优化目标是最小化整个训练集上的累计误差。

  • 直接针对累积误差最小化,它在读取整个训练集一遍后才对参数进行更新,其参数更新的频率低得多.

但在很多任务中,累积误差下降到一定程度之后,进 一步下降会非常缓慢,这时标准 BP 往往会更快获得较好的解,尤其是在训练集D非常大时更明显.

5 解决过拟合的方法

正是由于其强大的表示能力, BP 神经网络经常遭遇过拟合。其训练误差持续降低,但测试误差却可能上升。

解决办法

  • 早停 (early stopping)

    • 若训练误差连续 a 轮的变化小于 b, 则停止训练
    • 使用验证集:若训练误差降低、验证误差升高 , 则停止训练
  • 正则化 (regularization)

    • 在误差目标函数中增加一项描述网络复杂度,例如连接权与阈值的平方根。
    • 仍令Ek表示第k个训练样本上的误差,wi表示连接权和阈值
      - E表示误差标准函数
      机器学习8-误差逆传播算法BP的认识

增加连接权与阈值平方和这一项后,训练过程将会偏好比较小的连接权和阈值,会使网络输出更加“光滑”,从而对过拟合有所缓解。

其中λ∈(0,1)用于对经验误差与网络复杂度这两项分析中,常通过交叉验证法来估计。

参考教材:周志华-机器学习西瓜书
在这里插入图片描述