转载于:https://www.jianshu.com/p/3d96dbf3f764
http://blog.csdn.net/jiajunlee/article/details/50456921
BP算法基本原理
利用输出后的误差来估计输出层的直接前导层的误差,再用这个误差估计更前一层的误差,如此一层一层的反传下去,就获得了所有其他各层的误差估计。
一个三层BP网络

激活函数
- 必须处处可导(一般都使用S型函数)
使用S型激活函数时,BP网络输入与输出关系
输入:

输出:

输出的导数:

使用S型激活函数时,BP网络的输出及其导数图形:

根据S激活函数的图形:
- net在 -5~0 的时候导数的值为正,且导数的值逐渐增大,说明此时f(x)在逐渐变大 且 变大的速度越来越快
- net在 0~5 的时候导数的值为正,且导数的值逐渐减小,说明此时f(x)在逐渐变大 但是 变大的速度越来越慢
对神经网络进行训练,我们应该尽量将net的值尽量控制在收敛比较快的范围内。
BP网络的标准学习算法
学习的过程:
- 神经网络在外界输入样本的刺激下不断改变网络的连接权值,以使网络的输出不断地接近期望的输出。
学习的本质:
- 对各连接权值的动态调整
学习规则:
- 权值调整规则,即在学习过程中网络各神经元的连接权值变化所依据的一定的调整规则
BP网络的标准学习算法-算法思想
-
学习的类型: 有导师学习
-
核心思想: 将输出误差
以某种形式
通过隐层向输入层逐层反传(即,将误差分摊给各层的所有单元——各层单元的误差信号,以此来修正各单元权值)
个人理解 : ** 就如同之前的梯度下降函数每次更新Θ值一样,每次来一个样本,就更新Θ值,使得代价函数变得越来越小。这个类似,先给他们的权值赋个随机初值,然后计算到最后一层(输出层),若输出结果与实际值有误差(这个正常情况下是肯定有的),那么就进行误差的反向传播算法,来优化各层的Θ值(权重值)** -
学习的过程: 信号的正向传播——》误差的反向传播
BP网络的标准学习算法-学习过程
-
正向传播
输入样本-----输入层------各隐层--------输出层 -
判断是否转入反向传播阶段
若输入层的实际输出(h(x))与期望的输出(y)不符。 -
误差反传
误差以某种形式在各层表示-----修正各层单元的权值(w或者Θ) -
最终结果
网络输出的误差减少到了可以接受的程度(或 进行到预先设定的学习次数为止)
BP网络的标准学习算法
-
网络结构
输入层有n
个神经元,隐含层有p
个神经元,输出层有q
个神经元 -
变量定义
第一步,网络初始化
给各连接权值分别赋一个区间(-1,1)
内的随机数,设定误差函数e
,给定计算精度值ε
和最大学习次数M
。
第二步,随机选取第k个输入样本以及对应的期望输出

第三步,计算隐含层各神经元的输入和输出

第四步,利用网络期望输出和实际输出,计算误差函数对输出层的各神经元的偏导数

可以列出如下等式:
第五步,利用隐含层到输出层的连接权值、输出层的

和隐含层的输出计算误差函数对隐含层各神经元的偏导数

可以列出如下等式:
-
-
-
-
最下面那个方框是’=‘号
第六步,利用输出层各神经元的

和隐含层各神经元的输出来修正连接权值

第七步,利用隐含层各神经元的

和输入层各神经元的输入参数修正连接权值。


第八步,计算全局误差

第九步,判断网络误差是否满足要求,判断网络误差是否满足要求。当误差达到预设精度或学习次数大于设定的最大次数,则结束算法。否则,选取下一个学习样本及对应的期望输出,返回到第三步,进入下一轮学习。
BP算法直观解释
当误差对权值的偏导数大于零时,权值调整量为负,实际输出大于期望输出,权值向减少方向调整,使得实际输出与期望输出的差减少。

当误差对权值的偏导数小于零时,权值调整量为正,实际输出少于期望输出,权值向增大方向调整,使得实际输出与期望输出的差减少。

BP神经网络优缺点:
-
多层前向BP网络的优点:
- 网络实质上实现了一个从输入到输出的映射功能,而数学理论已证明它具有实现任何复杂非线性映射的功能。这使得它特别适合于求解内部机制复杂的问题;
- 网络能通过学习带正确答案的实例集自动提取“合理的”求解规则,即具有自学习能力;
- 网络具有一定的推广、概括能力。
-
多层前向BP网络的问题:
-
BP算法的学习速度很慢,其原因主要有:
- 由于BP算法本质上为梯度下降法,而它所要优化的目标函数又非常复杂,因此,必然会出现“锯齿形现象”,这使得BP算法低效;
- 存在麻痹现象,由于优化的目标函数很复杂,它必然会在神经元输出接近0或1的情况下,出现一些平坦区,在这些区域内,权值误差改变很小,使训练过程几乎停顿;
- 为了使网络执行BP算法,不能用传统的一维搜索法求每次迭代的步长,而必须把步长的更新规则预先赋予网络,这种方法将引起算法低效。
-
网络训练失败的可能性较大,其原因有:
- 从数学角度看,BP算法为一种局部搜索的优化方法,但它要解决的问题为求解复杂非线性函数的全局极值,因此,算法很有可能陷入局部极值,使训练失败;
- 网络的逼近、推广能力同学习样本的典型性密切相关,而从问题中选取典型样本实例组成训练集是一个很困难的问题。
- 难以解决应用问题的实例规模和网络规模间的矛盾。这涉及到网络容量的可能性与可行性的关系问题,即学习复杂性问题;
- 网络结构的选择尚无一种统一而完整的理论指导,一般只能由经验选定。为此,有人称神经网络的结构选择为一种艺术。而网络的结构直接影响网络的逼近能力及推广性质。因此,应用中如何选择合适的网络结构是一个重要的问题;
- 新加入的样本要影响已学习成功的网络,而且刻画每个输入样本的特征的数目也必须相同;
- 网络的预测能力(也称泛化能力、推广能力)与训练能力(也称逼近能力、学习能力)的矛盾。一般情况下,训练能力差时,预测能力也差,并且一定程度上,随训练能力地提高,预测能力也提高。但这种趋势有一个极限,当达到此极限时,随训练能力的提高,预测能力反而下降,即出现所谓“过拟合”现象。此时,网络学习了过多的样本细节,而不能反映样本内含的规律
-