BP网络(反向传播详细介绍算法、推导,特点等)

1. 前馈神经网络--多层感知机神经网络MLP

  • 多层感知机网络(MLP)是一种特定类型的前馈神经网络(FFNN)

  • 多层前馈神经网络指的是每层神经元与下一层神经元全互连,神经元之间不存在同层连接,也不存在跨层连接,如图

  • MLP网络特性:可以实现任意复杂的非线性映射关系用于分类:

    两层网(一个隐层):可以实现空间内任意的凸区域的划分

    三层网(两个隐层):可以实现任意形状(连续或不连续)区域的划分

    使用反向传播算法---BP算法(Back Propagation Algorithm)以确定MLP网络中的权值及偏置

2. BP网络的引入

  • 感知器学习规则不能直接应用到多层感知器的参数学习上。

  • 感知器学习规则:阶跃函数。采用最小均方学习规则,不需要对变换函数求导,学习速度快,具有较高的精度。

  • 多层感知器模型中,如果神经元传递函数是阶跃函数,对各隐层节点来说,不存在期望输出,且无法对隐层权重通过梯度下降法求解,因此感知器学习规则对隐藏层权值不适用。

既然我们无法直接得到隐层的权值,能否先通过输出层得到输出结果和期望输出的误差来间接调整隐层的权值呢?

  • 提出由Sigmoid函数代替之前的阶跃函数作为激励函数来构造神经元。(放宽一下限制,输出是一个0到1的平滑范围)

3. BP网络的传递函数:Sigmoid

  • Sigmoid函数是单调递增的非线性函数,函数本身及其导数都是连续的,无限次可微。

  • Sigmoid函数通常写作如下形式: $ f(\alpha)= \frac {1} { 1 + e ^ {- \alpha } } \( 取值范围是(0,1),代替神经元阶跃函数可写作: \) y = f(x) = \frac {1} {1 + e ^ {- \sum _ {i=1} ^ {m} } w_{i} x_ {i} - w_{ 0 } } $

  • $ 导数: f'(x)=f(x)(1-f(x))$

4. BP 算法的基本思想

  • 信号的正向传播+误差的反向传播
  • 正向传播时,输入样本从输入层传入,经各隐层逐层处理后,传向输出层。若输出层的实际输出与期望的输出不符,则转入误差的反向传播阶段
  • 反向传播时,将输出以某种形式通过隐层向输入层逐层反传,并将误差分摊给各层的所有单元,从而获得各层单元的误差信号,此误差信号即作为修正各单元权值的依据

5. BP网络模型

5.1 简介

  • BP网络(Back-Propagation Network)是1986年被提出的,是一种按误差逆向传播算法训练的多层前馈网络,是目前应用最广泛的神经网络模型之一,用于函数逼近、模型识别分类、数据压缩和时间序列预测等。

  • BP网络又称为反向传播神经网络,它是一种有监督的学习算法,具有很强的自适应、自学习、非线性映射能力,能较好地解决数据少、信息贫、不确定性问题,且不受非线性模型的限制

  • 一个典型的BP网络应该包括三层:输入层、隐含层和输出层。各层之间全连接,同层之间无连接。隐含层可以有很多层,对于一般的神经网络而言,单层的隐含层已经足够了。上图是一个典型的BP神经网络结构图。

  • 标准的BP算法采用误差函数按梯度下降的方法学习,使网络的设计输出值和期望输出值之间的均方误差最小。BP神经网络的传输函数通常采用sigmoid函数,而输出层则采用线性传输函数

5.2 BP组成

5.2.1 输入层

输入层各神经元负责接收来自外界的输入信息,并传递给中间层各神经元,它的节点数为输入变量的个数。

5.2.2 输出层

出层向外界输出信息处理结果。它的节点个数为输出变量的个数。

5.2.3 隐含层

  • 在BP神经网络中,输入层和输出层的节点个数都是确定的,而隐含层节点个数不确定,隐层神经元数目过多,会加大网络计算量并容易产生过度拟合问题;神经元数目过少,则会影响网络性能,达不到预期效果。那么应该设置为多少才合适呢?

    网络中隐层神经元的数目与实际问题的复杂程度、输入和输出层的神经元数及对期望误差的设定有着直接的关系。目前,对于隐层的神经元数目的确定没有明确的公式,只有一些基于经验的公式,神经元的个数最终需要根据经验和多次试验确定。如下
    $ h = \sqrt{m + n} + a $

    其中h为隐含层节点数目,n为输入层节点数目,m为输出层节点数目,a为1~10之间的调节常数。

  • 有关研究表明,一个隐含层的神经网络,只要隐节点足够多,就可以以任意精度逼近一个非线性函数。因此,通常采用含有一个隐层的三层多输入单输出的BP神经网络建立预测模型。

5.3 BP网络学习过程(损失函数优化问题)

  • 采用梯下降算法通过调整各层权值求目标函数最小化
  • 由于采用Sigmoid函数作为神经元传递函数,不管网络结构多么复杂,总可以通过计算梯度来考察各个参数。这就是多层感知器反向传播算法的基本思想

5.3.1 工作信号正向传递子过程(信号的正向传播)

输入信号从输入层经过各个隐含层向输出层传播,在输出层得到实际的响应值,若实际值与期望值误差较大,就会转入误差反向传播阶段。

现在设节点和节点之间的权值为,节点的阀值为,每个节点的输出值为,而每个节点的输出值是根据上层所有节点的输出值、当前节点与上一层所有节点的权值和当前节点的阀值还有激活函来实现的。具体计算方法如下:
$ $

其中为激活函数,一般选取S型函数或者线性函数。

正向传递的过程比较简单,按照上述公式计算即可。在BP神经网络中,输入层节点没有阀值。

5.3.2 误差信号反向传递子过程(误差的反向传播)

  • 按照梯度下降的方法从输出层经过各个隐含层并逐层不断地调整各神经元的连接权值和阈值,反复迭代,直到网络输出的误差减少到可以接受的程度,或者进行到预先设定的学习次数。

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

5.4 BP算法改进

  • 虽然BP神经网络具有高度非线性和较强的泛化能力,但也存在收敛速度慢、迭代步数多、易陷入局部极小和全局搜索能力差、隐节点的选取缺乏理论指导、训练时学习新样本有遗忘旧样本的趋势等缺点。可以采用增加动量项、自适应调节学习率、引入陡度因子等方法进行改进。

5.5 BP算法推导

  • 规定\(y是预测值,\hat{y}是实际值\)
  • C是单个预测值和真实值相关的损失函数,L是总损失函数,即C的线性相加

5.5.1 Forward Pass

  • z对w的偏微分数值看w之前接的值是什么

5.5.2 Backward Pass

  • z在Forward Pass 就已经计算好




5.5.3 西瓜书推导




  • 如果类似地推导出基于累积误差最小化的更新规则,就得到了累积误差逆传播(accumulated error backpropagation)算法.

  • 累积 BP 算法与标准 BP 算法都很常用.一般来说,标准 BP 算法每次更新只针对单个样例,参数更新得非常频繁,而且对不同样例进行更新的效果可能出现“抵消”现象.因此,为了达到同样的累积误差极小点,标准 BP 算法往往需进行更多次数的迭代.累积 BP 算法直接针对累积误差最小化,它在读取整个训练集D一遍后才对参数进行更新其参数更新的频率低得多.但在很多任务中,累积误差下降到一定程度之后,进一步下降会非常缓慢,这时标准 BP往往会更快获得较好的解,尤其是在训练集 D 非常大时更明显

  • 标准BP算法和累计BP算法的区别类似于随机梯度下降(SGD)与标准梯度下降之间的区别

5.5 BP网络特点

  • 非线性映射能力:神经网络能以任意精度逼近任何非线性连续函数
  • 自学习和自适应能力
  • 多变量系统:神经网络的输入和输出变量的数目是任意的
  • 数据融合的能力:可以利用工程技术(数值运算)和人工智能技术(符号处理)

6. BP网络应用实例:蚊子分类

posted @ 2024-11-05 23:29  awei040519  阅读(2022)  评论(1)    收藏  举报