BP算法
2018-03-05 15:04
155 查看
一,定义误差逆传播算法(backpropagation BP算法)是迄今最成功的的神经网络算法。显示任务中使用神经网络时,大多是在使用BP算法进行训练。不仅适用于多层前馈神经网络,还可以用于其他类型的神经网络,训练递归。二,模型Ø 网络模型如下图的单隐层神经网络,输出层有d个神经元,一个q个神经元组成的隐层,L个神经元组成的1个输出层,其中,隐层和输出层神经元都使用Sigmoid函数。
![](http://img.blog.csdn.net/20180305150209364?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZnJlZTM1Ng==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
Ø 训练数据训练集D={(x1,y1),(x2,y2),,,(xm,ym)},输入示例由d个属性描述,输出l维实值向量。三,BP算法3.1,标准BP算法BP算法的基本思想是,学习过程由信号的正向传播与误差的反向传播两个过程组成。 1)正向传播:输入样本->输入层->各隐层(处理)->输出层 注1:若输出层实际输出与期望输出(教师信号)不符,则转入2)(误差反向传播过程) 2)误差反向传播:输出误差(某种形式)->隐层(逐层)->输入层 。其主要目的是通过将输出误差反传,将误差分摊给各层所有单元,从而获得各层单元的误差信号,进而修正各单元的权值(其过程,是一个权值调整的过程)。注2:权值调整的过程,也就是网络的学习训练过程(学习也就是这么的由来,权值调整)。
l 前向传播
![](http://img.blog.csdn.net/20180305150224995?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZnJlZTM1Ng==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
l 误差函数
![](http://img.blog.csdn.net/20180305150233950?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZnJlZTM1Ng==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
l 后向传播
BP算法基于梯度下降策略,以目标的负梯度方向对参数进行调整。
![](http://img.blog.csdn.net/20180305150241394?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZnJlZTM1Ng==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
注意,BP算法的目标是最小化训练集D上的累积误差:
,
![](http://img.blog.csdn.net/20180305150249667?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZnJlZTM1Ng==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
3.2,累积误差逆传递算法BP上面算法的更新规则是基于单个的EK推导而得,类似的推导出基于累积误差最小化的更新规则,即就是累积误差逆传递算法。与标准的BP算法每次更新只针对单个样例,参数更新的非常频繁,往往需进行更多次迭代。但是累积BP算法直接针对累积误差最小化,它在读取整个训练集D一遍后才对参数进行更新,其参数更新频率低,但是在很多任务中,累积误差下降到一定程度后,进一步下降变得很缓慢。这时标准BP会更好,尤其D非常大时。四,bp算法实现步骤
1)初始化
2)输入训练样本对,计算各层输出
3)计算网络输出误差
4)计算各层误差信号 5)调整各层权值 6)检查网络总误差是否达到精度要求。满足,则训练结束;不满足,则返回步骤2) 四,bp算法局限和解决方法1)BP神经网络经常遭遇过拟合。解决方法如下:l 早停;l 加入正则化惩罚项;
![](http://img.blog.csdn.net/20180305150302379?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZnJlZTM1Ng==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
说明: 1. 神经网络的目的是从大量的数据中寻求特征,以对新的数据进行预测。也就是说,我们在训练神经网络的时候,应该尽量调整网络参数,使得网络在输入数据下的输出值与实际样本值尽可能接近,而为满足这样条件的最直观的手段是使两者的距离最小。也就是上面代价函数的表示形式。
2. 上面代价函数的最右边一项我们称为正则化,它是为了防止网络过拟合。2)BP算法易形成局部极小(属贪婪算法,局部最优)而得不到全局最优。以目标的负梯度方向对参数进行调整,在局部最小点处,梯度为零,此时可能求不到全局极小点。解决方法如下:l 多组不同参数值初始化多个神经网络,按照标准方法训练后,取其中误差最小解作为最终参数。l 模拟退火,在每一步都以一定概率接受比当前解更差的结果。l 随机梯度下降,使得计算梯度时加入随机因素,在局部最小点处,梯度仍可能不为零。3)训练次数多使得学习效率低下,收敛速度慢(需做大量运算); 4)隐节点的选取缺乏理论支持; 5)训练时学习新样本有遗忘旧样本趋势。注3:改进算法—增加动量项、自适应调整学习速率(这个似乎不错)及引入陡度因子。五,一个实例理解BP
![](http://img.blog.csdn.net/20180305150314961?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZnJlZTM1Ng==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
![](http://img.blog.csdn.net/20180305150325880?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZnJlZTM1Ng==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
![](http://img.blog.csdn.net/20180305150338817?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZnJlZTM1Ng==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
通过带*的权重值重新计算误差,发现误差为0.18,比老误差0.19小,则继续迭代,得神经元的计算结果更加逼近目标值0.5。六,bp主要应用
回归预测(可以进行拟合,数据处理分析,事物预测,控制等)、 分类识别(进行类型划分,模式识别等)。七,BP算法资料参考
http://blog.csdn.net/appleml/article/details/48623303
Ø 训练数据训练集D={(x1,y1),(x2,y2),,,(xm,ym)},输入示例由d个属性描述,输出l维实值向量。三,BP算法3.1,标准BP算法BP算法的基本思想是,学习过程由信号的正向传播与误差的反向传播两个过程组成。 1)正向传播:输入样本->输入层->各隐层(处理)->输出层 注1:若输出层实际输出与期望输出(教师信号)不符,则转入2)(误差反向传播过程) 2)误差反向传播:输出误差(某种形式)->隐层(逐层)->输入层 。其主要目的是通过将输出误差反传,将误差分摊给各层所有单元,从而获得各层单元的误差信号,进而修正各单元的权值(其过程,是一个权值调整的过程)。注2:权值调整的过程,也就是网络的学习训练过程(学习也就是这么的由来,权值调整)。
l 前向传播
l 误差函数
l 后向传播
BP算法基于梯度下降策略,以目标的负梯度方向对参数进行调整。
注意,BP算法的目标是最小化训练集D上的累积误差:
,
3.2,累积误差逆传递算法BP上面算法的更新规则是基于单个的EK推导而得,类似的推导出基于累积误差最小化的更新规则,即就是累积误差逆传递算法。与标准的BP算法每次更新只针对单个样例,参数更新的非常频繁,往往需进行更多次迭代。但是累积BP算法直接针对累积误差最小化,它在读取整个训练集D一遍后才对参数进行更新,其参数更新频率低,但是在很多任务中,累积误差下降到一定程度后,进一步下降变得很缓慢。这时标准BP会更好,尤其D非常大时。四,bp算法实现步骤
1)初始化
2)输入训练样本对,计算各层输出
3)计算网络输出误差
4)计算各层误差信号 5)调整各层权值 6)检查网络总误差是否达到精度要求。满足,则训练结束;不满足,则返回步骤2) 四,bp算法局限和解决方法1)BP神经网络经常遭遇过拟合。解决方法如下:l 早停;l 加入正则化惩罚项;
说明: 1. 神经网络的目的是从大量的数据中寻求特征,以对新的数据进行预测。也就是说,我们在训练神经网络的时候,应该尽量调整网络参数,使得网络在输入数据下的输出值与实际样本值尽可能接近,而为满足这样条件的最直观的手段是使两者的距离最小。也就是上面代价函数的表示形式。
2. 上面代价函数的最右边一项我们称为正则化,它是为了防止网络过拟合。2)BP算法易形成局部极小(属贪婪算法,局部最优)而得不到全局最优。以目标的负梯度方向对参数进行调整,在局部最小点处,梯度为零,此时可能求不到全局极小点。解决方法如下:l 多组不同参数值初始化多个神经网络,按照标准方法训练后,取其中误差最小解作为最终参数。l 模拟退火,在每一步都以一定概率接受比当前解更差的结果。l 随机梯度下降,使得计算梯度时加入随机因素,在局部最小点处,梯度仍可能不为零。3)训练次数多使得学习效率低下,收敛速度慢(需做大量运算); 4)隐节点的选取缺乏理论支持; 5)训练时学习新样本有遗忘旧样本趋势。注3:改进算法—增加动量项、自适应调整学习速率(这个似乎不错)及引入陡度因子。五,一个实例理解BP
通过带*的权重值重新计算误差,发现误差为0.18,比老误差0.19小,则继续迭代,得神经元的计算结果更加逼近目标值0.5。六,bp主要应用
回归预测(可以进行拟合,数据处理分析,事物预测,控制等)、 分类识别(进行类型划分,模式识别等)。七,BP算法资料参考
http://blog.csdn.net/appleml/article/details/48623303
相关文章推荐
- BP算法
- 深度学习BP算法的推导(附加RNN,LSTM的推导说明)
- BP算法权重求导
- DL学习笔记1—BP算法的matlab代码学习
- 深度学习BP算法的推导附加RNN-LSTM的推导
- CNN卷积神经网络---反向传播(1,全链接bp算法)
- 反向传播BP算法
- 【深度学习:CNN】如何高效的通过BP算法来训练CNN
- 机器学习总结(七):基本神经网络、BP算法、常用激活函数对比
- BP算法(C语言)实现神经网络(双层感知机)
- BP算法(误差反向传播(Error Back Propagation, BP)算法)
- 神经网络——BP算法
- 神经网络——反向传播BP算法应用案例
- Deep learning:二十八(使用BP算法思想求解Sparse coding中矩阵范数导数)
- 卷积神经网络(二):卷积神经网络CNN的BP算法
- BP算法与公式推导
- BP算法推导:2014EMNLP文章
- BP算法推导
- BP算法改进
- 模式识别(Pattern Recognition)学习笔记(二十)--BP算法