您的位置:首页 > 其它

BP算法

2018-03-05 15:04 155 查看
一,定义误差逆传播算法(backpropagation BP算法)是迄今最成功的的神经网络算法。显示任务中使用神经网络时,大多是在使用BP算法进行训练。不仅适用于多层前馈神经网络,还可以用于其他类型的神经网络,训练递归。二,模型Ø 网络模型如下图的单隐层神经网络,输出层有d个神经元,一个q个神经元组成的隐层,L个神经元组成的1个输出层,其中,隐层和输出层神经元都使用Sigmoid函数。 

Ø 训练数据训练集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
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息