BP算法

一,定义

误差逆传播算法(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:权值调整的过程,也就是网络的学习训练过程(学习也就是这么的由来,权值调整)。 

前向传播

 

误差函数

 

后向传播

BP算法基于梯度下降策略,以目标的负梯度方向对参数进行调整。

 

注意,BP算法的目标是最小化训练集D上的累积误差:

,

3.2,累积误差逆传递算法BP

上面算法的更新规则是基于单个的EK推导而得,类似的推导出基于累积误差最小化的更新规则,即就是累积误差逆传递算法。

与标准的BP算法每次更新只针对单个样例,参数更新的非常频繁,往往需进行更多次迭代。但是累积BP算法直接针对累积误差最小化,它在读取整个训练集D一遍后才对参数进行更新,其参数更新频率低,但是在很多任务中,累积误差下降到一定程度后,进一步下降变得很缓慢。这时标准BP会更好,尤其D非常大时。

四,bp算法实现步骤

1)初始化 

2)输入训练样本对,计算各层输出 

3)计算网络输出误差 

4)计算各层误差信号 

5)调整各层权值 

6)检查网络总误差是否达到精度要求满足,则训练结束;不满足,则返回步骤2 

四,bp算法局限和解决方法

1)BP神经网络经常遭遇过拟合。解决方法如下:

早停;

加入正则化惩罚项;

 

说明: 1. 神经网络的目的是从大量的数据中寻求特征,以对新的数据进行预测。也就是说,我们在训练神经网络的时候,应该尽量调整网络参数,使得网络在输入数据下的输出值与实际样本值尽可能接近,而为满足这样条件的最直观的手段是使两者的距离最小。也就是上面代价函数的表示形式。
    2. 上面代价函数的最右边一项我们称为正则化,它是为了防止网络过拟合。

2)BP算法易形成局部极小(属贪婪算法,局部最优)而得不到全局最优。以目标的负梯度方向对参数进行调整,在局部最小点处,梯度为零,此时可能求不到全局极小点。解决方法如下:

多组不同参数值初始化多个神经网络,按照标准方法训练后,取其中误差最小解作为最终参数。

模拟退火,在每一步都以一定概率接受比当前解更差的结果。

随机梯度下降,使得计算梯度时加入随机因素,在局部最小点处,梯度仍可能不为零。

3)训练次数多使得学习效率低下,收敛速度慢(需做大量运算); 

4)隐节点的选取缺乏理论支持; 

5)训练时学习新样本有遗忘旧样本趋势。注3:改进算法增加动量项、自适应调整学习速率(这个似乎不错)及引入陡度因子

五,一个实例理解BP

 


通过带*的权重值重新计算误差,发现误差为0.18,比老误差0.19小,则继续迭代,得神经元的计算结果更加逼近目标值0.5

六,bp主要应用 

回归预测(可以进行拟合,数据处理分析,事物预测,控制等)、 分类识别(进行类型划分,模式识别等)

七,BP算法资料参考

http://blog.youkuaiyun.com/appleml/article/details/48623303

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值