BP 神经网络算法原理

本篇文章主要根据《神经网络与机器学习》和《人工神经网络原理》两本书,对 BP 神经网络的数学推导过程作了一个总结,为本身进入深度学习打下一个基础。web

1、 人工神经网络

1.人工神经网络简介

人工神经网络(ANN)是一种旨在模仿人脑结构及其功能的由多个很是简单的处理单元彼此按某种方式相互链接而造成的计算机系统,该系统靠其状态对外部输入信息的动态响应来处理信息 。
这里写图片描述
神经元由细胞及其发出的许多突起构成。细胞体内有细胞核,突触的做用是传递信息。做为引入输入信号的若干个突起称为“树突”,而做为输出端的突起只有一个称为“轴突” 。 算法

2.神经元M-P模型

所谓M-P模型,实际上是按照生物神经元的结构和工做原理构造出来的一个抽象和简化了的模型。网络

对于第 j 个神经元,接受多个其它神经元的输入信号 xi 。各突触强度以实系数 wij 表示,这是第 i 个神经元对第 j 个神经元做用的加权值。
这里写图片描述机器学习

神经元的“净输入”用 Ij 表示,其表达式是线性加权求和,即:
这里写图片描述
神经元 j 的输出 yj 是其当前状态的函数, M-P 模型的数学表达式为:
这里写图片描述
式中, θj 为阈值, sgn 是符号函数。当净输入超过阈值时, yj 取+1 输出,反之为-1输出 。若是考虑输出与输入的延时做用,表达式可修正为:
这里写图片描述svg

3.ANN的基本要素

  • 神经元激活函数
  • 网络的学习
  • 神经元之间的链接形式

(1)经常使用激活函数
这里写图片描述函数

(2)经常使用学习规则学习

  • Hebb规则
  • 偏差修正法学习算法 (如:BP算法)
  • 胜者为王(Winner-Take-All)学习规则

(3)神经元之间链接方式
<1>前缀网络
这里写图片描述atom

<2>反馈网络
这里写图片描述spa

> 注:BP 神经网络属于前缀网络设计

2、 BP 神经网络原理

BP(Back Propagation)神经网络的学习过程由信号的正向传播与偏差的反向传播两个过程组成。正向传播时,输入样本从输入层传入,经隐层逐层处理后,传向输出层。若输出层的实际输出与指望输出不符,则转向偏差的反向传播阶段。偏差的反向传播是将输出偏差以某种形式经过隐层向输入层逐层反传,并将偏差分摊给各层的全部单元,从而得到各层单元的偏差信号,此偏差信号即做为修正各单元权值的依据。BP网络由输入层﹑输出层和隐层组成, N1 为输入层, Nm 为输出层,其他为隐层。BP 神经网络的结构以下:
这里写图片描述

这里介绍三层神经网络的推导(一个输入层、一个隐层和一个输出层)

BP 神经网络反向传播算法的神经元示意图图一

这里写图片描述

上图描绘了神经元 j 被它左边的一层神经元产生的一组函数信号所馈给。 m 是做用于神经元 j 的全部输入不包括偏置的个数。突触权值 wj0(n) 等于神经元 j 的偏置 bj

1.前向传播过程推导

图一中,在神经元 j 的激活函数输入处产生的诱导局部域 vj(n) (即神经元 j 的输入)是:
这里写图片描述

ϕj 是激活函数,则出如今神经元 j 输出处的函数信号(即神经元 j 的输出 yj(n) 是:
这里写图片描述

2.偏差反向传播过程推导

在图一中, yj(n) dj(n) 分别是神经元 j 实际输出指望输出,则神经元 j 的输出所产生的偏差信号定义为:

这里写图片描述
其中, dj(n) 是指望响应向量 d(n) 的第 j 个元素。

为了使函数连续可导,这里最小化均方根差,定义神经元 j 瞬时偏差能量为:
这里写图片描述

将全部输出层神经元的偏差能量相加,获得整个网络的所有瞬时偏差能量
这里写图片描述
其中,集合C 包括输出层的全部神经元。

BP 算法经过反复修正权值使式(2-5) En 最小化,采用梯度降低法对突触权值 wji(n) 应用一个修正值 wji(n) 它正比于偏导数 δ E(n)/ δ wji(n) 。根据微分链式规则,把这个梯度表示为:
这里写图片描述
偏导数 δ E(n)/ δ wji(n) 表明一个敏感因子,决定突触权值 wji 在权值空间的搜索方向。

在式(2-5)两边对 ej(n) 取微分,获得:
这里写图片描述

在式(2-3)两边对 yj(n) 取微分,获得:
这里写图片描述

在式(2-2)两边对 vj(n) 取微分,获得:
这里写图片描述

最后在式(2-1)两边对 wji(n) 取微分,获得:
这里写图片描述

将式(2-7)——(2-10)带入式(2-6)得:

这里写图片描述

应用于 wji(n) 的修正 wji(n) 定义为:
这里写图片描述

其中, η 是偏差反向传播的学习率负号表示在权空间中梯度降低

将式(2-11)带入式(2-12)得:
这里写图片描述

其中, δj(n) 是根据delta法则定义的局部梯度
这里写图片描述
局部梯度指明了突触权值所须要的变化。

如今来考虑神经元 j 所处的层。

(1) 神经元 j 是输出层节点

当神经元 j 位于输出层时,给它提供了一个指望响应。根据式(2-3)偏差信号 ej(n)=dj(n)yj(n) 肯定,经过式(2-14)获得神经元 j 的局部梯度 δj(n) 为:
这里写图片描述

(2) 神经元 j 是隐层节点

当神经元 j 位于隐层时,没有对该输入神经元的指按期望响应。隐层的偏差信号要根据全部与隐层神经元直接相连的神经元的偏差信号向后递归决定。
考虑神经元 j 为隐层节点,隐层神经元的局部梯度 δj(n) 根据式(2-14)从新定义为:
这里写图片描述

来看图二:它表示输出层神经元 k 链接到隐层神经元 j 的信号流图。
这里写图片描述
在这里下标 j 表示隐层神经元,下标 k 表示输出层神经元

图二中,网络的所有瞬时偏差能量为:
这里写图片描述

在式(2-17)两边对函数信号 yj(n) 求偏导,获得:
这里写图片描述

在图二中:
这里写图片描述

所以,
这里写图片描述

图二中,对于输出层神经元 k ,其诱导局部域是:
这里写图片描述

求式(2-21)对 yj(n) 的微分获得:
这里写图片描述

将式(2-20)和(2-22)带入到式(2-18)获得:
这里写图片描述

将式(2-23)带入式(2-16)得隐层神经元 j 的局部梯度 δj(n) 为:
这里写图片描述

反向传播过程推导总结

所以,结合式(2-13)、(2-15)和(2-24),由神经元 i 链接到神经元 j 的突触权值的修正值 wji(n) 按照delta法则定义以下:

这里写图片描述

其中:

  • 神经元 j 是输出层节点时,局部梯度 δj(n) 等于倒数 ϕj(vj(n)) 和偏差信号 ej(n)=dj(n)yj(n) 的乘积,见式(2-15);
  • 神经元 j 是隐层节点时,局部梯度 δj(n) 等于倒数 ϕj(vj(n)) 和下一层(隐层或输出层)的 δk 与权值加权和的乘积,见式(2-24)。

3.标准BP神经网络设计原则

(1)激活函数
单极性S型函数和双曲正切S型函数
(2)学习率
0<η<1
(3)中止准则
网络的均方偏差足够小或者训练足够的次数等
(4)初始权值
以均值等于0的均匀分布随机挑选突触权值
(5)隐层结构
理论证实一个隐层就能映射全部连续函数 ;
隐层节点数= (+)+α,1<α<10

隐层节点数= ()

4.标准BP算法训练过程及流程图

(1)训练过程

  1. 初始化网络的突触权值和阈值矩阵;

  2. 训练样本的呈现;

  3. 前向传播计算;

  4. 偏差反向传播计算并更新权值;

  5. 迭代,用新的样本进行步骤3和4,直至知足中止准则。

(2)流程图
这里写图片描述

5.标准BP算法分析

因为标准 BP 算法采用的是梯度降低法,BP 算法的 E-w 曲线图以下:
这里写图片描述

所以标准 BP 算法具备如下缺陷

  1. 在偏差曲面上有些区域平坦,此时偏差对权值的变化不敏感,偏差降低缓慢,调整时间长,影响收敛速度。
  2. 存在多个极小点,梯度降低法容易陷入极小点而没法获得全局最优解。
  3. 学习率 η 越小,学习速度减慢,而 η 越大,虽然学习速度加快,却容易使权值的变化量不稳定,出现振荡。

6.标准BP算法改进方法

(1)增长动量项
一个既要加快学习速度又要保持稳定的方法是修改式(2-13),增长动量项,表示为:
这里写图片描述
这里 α 是动量常数,0≤ α <1。

动量项 αwji(n1) 反映了之前积累的调整经验,当偏差梯度出现局部极小时,虽然 wji(n) →0,但 wji(n1) ≠0,使其跳出局部极小区域,加快迭代收敛速度。

(2)其余改进方法

  • 可变学习速度的反向传播
  • 学习速率的自适应调节
  • 引入陡度因子——防止饱和
  • 共轭梯度法、拟牛顿法等