bp神经网络原理

BP神经网络是一种按误差反向传播训练的多层前馈网络,其算法称为BP算法,它的基本思想是梯度下降法,利用梯度搜索技术,使网络的实际输出值和期望输出值的误差均方差为最小。bp神经网络具有非常强的非线性映射能力,理论上可以以任意精度逼近期望输出。主要用于模式识别、函数逼近、数据压缩、系统辨识等。

bp学习算法

误差反向传播算法,用于多层感知器学习算法。

bp学习过程描述
  • 工作信号正向传播
    输入信号经过输入层、隐藏层、输出层后的到输出。在传播过程中,网络参数不变,当输出与期望存在偏差时转入反向传播。
  • 误差信号反向传播
    当输出与期望存在偏差时,这个偏差信号从输出开始逐层向前(输入端),逐层传播过程中,根据误差信号调整各层参数,最终通过对权值不断的调整使输出接近期望。
算法原理

设多层神经网络中某一层L,有J个神经元;输出层为P,有J个神经元;

符号描述
w L w^{L} wL第L层神经元权值向量
w j L w_{j}^{L} wjL第L层第j个神经元权值
z j L z_{j}^{L} zjL第L层第j个神经元激励输入
y j L y_{j}^{L} yjL第L层第j个神经元激励输出
y j L − 1 y_{j}^{L-1} yjL1第L-1层第j个神经元激励输出
w P w^{P} wP输出层神经元权值向量
w j P w_{j}^{P} wjP输出层第j个神经元权值
z j P z_{j}^{P} zjP输出层第j个神经元激励输入
y j P y_{j}^{P} yjP输出层第j个神经元激励输出
y j P − 1 y_{j}^{P-1} yjP1输出层的上一层第j个神经元激励输出
d j d_{j} dj输出层第j个神经元期望

第L层第j个神经元激励输入:
z j L = ∑ j = 1 J w j L y j L − 1 z_{j}^{L} = \sum_{j=1}^{J} w_{j}^{L}y_{j}^{L-1} zjL=j=1JwjLyjL1
第L层第j个神经元激励输出为:
y j L = f ( z j L ) y_{j}^{L} = f(z_{j}^{L} ) yjL=f(zjL)
输出层P第j个神经元激励输入:
z j p = ∑ j = 1 J w j p y j p − 1 z_{j}^{p} = \sum_{j=1}^{J} w_{j}^{p}y_{j}^{p-1} zjp=j=1Jwjpyjp1
输出层第j个神经元激励输出为:
y j p = f ( z j p ) y_{j}^{p} = f(z_{j}^{p} ) yjp=f(zjp)
输出层第j个神经元误差:
e j = d j − y j p e_{j} = d_{j} - y_{j}^{p} ej=djyjp

设n为迭代次数,定义误差性能函数为:
e j ( n ) = 1 2 ( d j ( n ) − y j p ( n ) ) 2 e_{j}(n) = \frac{1}{2}(d_{j}(n) - y_{j}^{p}(n))^{2} ej(n)=21(dj(n)yjp(n))2
则输出总误差累积可表示为:
E ( n ) = ∑ j = 1 J e j ( n ) E(n) = \sum_{j=1}^{J} e_{j}(n) E(n)=j=1Jej(n)

bp算法中,误差反向传播是不断更新权值w的一个过程,意思是调整w参数可以使E(n)到达最小。为使误差快速减小,实际上是按照E(n)的梯度相反方向更新w的值,即:
Δ w = − η ∂ E ( n ) ∂ w ( n ) \Delta w = -\eta \frac{\partial E(n)}{\partial w(n)} Δw=ηw(n)E(n)
η为一个常数,称为学习速率,η的大小直接影响E(n)到达最小化时间。

设经过第n次迭代后,第L层神经元权值向量调整量为:

Δ w L ( n ) \Delta w^{L}(n) ΔwL(n)

则:
Δ w L ( n ) = − η ∂ E ( n ) ∂ w L ( n ) \Delta w^{L}(n) = -\eta \frac{\partial E(n)}{\partial w^{L}(n)} ΔwL(n)=ηwL(n)E(n)
Δ w L ( n ) = − η ∂ E ( n ) ∂ z L ( n ) ∂ z L ( n ) ∂ w L ( n ) \Delta w^{L}(n) = -\eta \frac{\partial E(n)}{\partial z^{L}(n)} \frac{\partial z^{L}(n)}{\partial w^{L}(n)} ΔwL(n)=ηzL(n)E(n)wL(n)zL(n)

其中:
∂ z L ( n ) ∂ w L ( n ) = y L − 1 ( n ) \frac{\partial z^{L}(n)}{\partial w^{L}(n)} = y^{L-1}(n) wL(n)zL(n)=yL1(n) (等于第L层的输入,即第L-1层的激励输出)

所以:
Δ w L ( n ) = − η ∂ E ( n ) ∂ z L ( n ) y L − 1 ( n ) \Delta w^{L}(n) = -\eta \frac{\partial E(n)}{\partial z^{L}(n)} y^{L-1}(n) ΔwL(n)=ηzL(n)E(n)yL1(n)

令:
δ L ( n ) = ∂ E ( n ) ∂ z L ( n ) \delta^{L}(n) = \frac{\partial E(n)}{\partial z^{L}(n)} δL(n)=zL(n)E(n)(表示第L层的误差权值向量,与wL有相同的维度)

则设经过第n次迭代后,第L层神经元权值向量调整量可表示为:
Δ w L ( n ) = − η δ L ( n ) y L − 1 ( n ) \Delta w^{L}(n) = -\eta \delta^{L}(n) y^{L-1}(n) ΔwL(n)=ηδL(n)yL1(n)

这里要求出L层权值调整量只需求出δ(n)即可,其他为已知的。

假设第L+1层的权值误差向量为δ(L+1),根据之前推导则有:

δ L + 1 ( n ) = ∂ E ( n ) ∂ z L + 1 ( n ) \delta^{L+1} (n) = \frac{\partial E(n)}{\partial z^{L+1}(n)} δL+1(n)=zL+1(n)E(n)

则第L层权值向量可表示为:

δ L ( n ) = ∂ E ( n ) ∂ z L + 1 ( n ) ∂ z L + 1 ( n ) ∂ y L ( n ) ∂ y L ( n ) ∂ z L ( n ) \delta^{L}(n) = \frac{\partial E(n)}{\partial z^{L+1}(n)}\frac{\partial z^{L+1}(n)}{\partial y^{L}(n)} \frac{\partial y^{L}(n)}{\partial z^{L}(n)} δL(n)=zL+1(n)E(n)yL(n)zL+1(n)zL(n)yL(n)

δ L ( n ) = δ L + 1 ( n ) ∂ z L + 1 ( n ) ∂ y L ( n ) ∂ y L ( n ) ∂ z L ( n ) \delta^{L}(n) = \delta^{L+1} (n) \frac{\partial z^{L+1}(n)}{\partial y^{L}(n)} \frac{\partial y^{L}(n)}{\partial z^{L}(n)} δL(n)=δL+1(n)yL(n)zL+1(n)zL(n)yL(n)

因为
z j L = ∑ j = 1 J w j L y j L − 1 z_{j}^{L} = \sum_{j=1}^{J} w_{j}^{L}y_{j}^{L-1} zjL=j=1JwjLyjL1

所以
∂ z L + 1 ( n ) ∂ y L ( n ) = w L + 1 ( n ) \frac{\partial z^{L+1}(n)}{\partial y^{L}(n)} =w^{L+1}(n) yL(n)zL+1(n)=wL+1(n)

因为:

y j L = f ( z j L ) y_{j}^{L} = f(z_{j}^{L} ) yjL=f(zjL)

所以:
∂ y L ( n ) ∂ z L ( n ) = f ′ ( z L ( n ) ) \frac{\partial y^{L}(n)}{\partial z^{L}(n)} = f'(z^{L}(n)) zL(n)yL(n)=f(zL(n))

所以第L层权值误差向量可表示为:

δ L ( n ) = δ L + 1 ( n ) w L + 1 ( n ) f ′ ( z L ( n ) ) − − − − − ( 1 ) \delta^{L}(n) = \delta^{L+1} (n) w^{L+1}(n) f'(z^{L}(n)) -----(1) δL(n)=δL+1(n)wL+1(n)f(zL(n))(1)

第L层的权值调整量为:
Δ w L ( n ) = − η δ L ( n ) y L − 1 ( n ) − − − − − ( 2 ) \Delta w^{L}(n) = -\eta \delta^{L}(n) y^{L-1}(n) -----(2) ΔwL(n)=ηδL(n)yL1(n)(2)

由1、2式可知第L层的调整量与第L+1层的误差向量有关,所以只要求出最后一层(输出层)的误差向量即可推导出任意一层的误差向量,即得出任意一层的权值调整量。

设输出层第j个神经元误差向量为:
δ p ( n ) = ∂ E ( n ) ∂ z p ( n ) \delta^{p} (n) = \frac{\partial E(n)}{\partial z^{p}(n)} δp(n)=zp(n)E(n)
因为 e j ( n ) = 1 2 ( d j ( n ) − y j p ( n ) ) 2 e_{j}(n) = \frac{1}{2}(d_{j}(n) - y_{j}^{p}(n))^{2} ej(n)=21(dj(n)yjp(n))2

所以
δ p ( n ) = 1 2 ∂ ∑ j = 1 J ( d j ( n ) − y j p ( n ) ) 2 ∂ z p ( n ) \delta^{p} (n) = \frac{ \frac{1}{2} \partial \sum_{j=1}^{J} (d_{j}(n) - y_{j}^{p}(n))^{2} }{\partial z^{p}(n)} δp(n)=zp(n)21j=1J(dj(n)yjp(n))2

δ p ( n ) = 1 2 ∂ ∑ j = 1 J ( d j ( n ) − y j p ( n ) ) 2 ∂ y p ( n ) ∂ y p ( n ) ∂ z p ( n ) \delta^{p} (n) = \frac{ \frac{1}{2} \partial \sum_{j=1}^{J} (d_{j}(n) - y_{j}^{p}(n))^{2} }{\partial y^{p}(n)} \frac{ \partial y^{p}(n) }{\partial z^{p}(n)} δp(n)=yp(n)21j=1J(dj(n)yjp(n))2zp(n)yp(n)
δ p ( n ) = − ( d ( n ) − y p ( n ) ) ∂ y p ( n ) ∂ z p ( n ) \delta^{p} (n) = -(d(n) - y^{p}(n)) \frac{ \partial y^{p}(n) }{\partial z^{p}(n)} δp(n)=(d(n)yp(n))zp(n)yp(n)
因为: y j p = f ( z j p ) y_{j}^{p} = f(z_{j}^{p} ) yjp=f(zjp)
则输出层误差向量为:
δ p ( n ) = ( y p ( n ) − d ( n ) ) f ′ ( z p ( n ) ) \delta^{p} (n) = (y^{p}(n) - d(n) ) f'(z^{p}(n)) δp(n)=(yp(n)d(n))f(zp(n))

总结(重要公式)
  • 输出层权值误差向量
    δ p ( n ) = ( y p ( n ) − d ( n ) ) f ′ ( z p ( n ) ) \delta^{p} (n) = (y^{p}(n) - d(n) ) f'(z^{p}(n)) δp(n)=(yp(n)d(n))f(zp(n))

    δ p = ( y p − d ) • f ′ ( z p ) \delta^{p} = (y^{p} - d ) • f'(z^{p}) δp=(ypd)f(zp)

  • 第L层权值误差向量

δ L ( n ) = δ L + 1 ( n ) w L + 1 ( n ) f ′ ( z L ( n ) ) \delta^{L}(n) = \delta^{L+1} (n) w^{L+1}(n) f'(z^{L}(n)) δL(n)=δL+1(n)wL+1(n)f(zL(n))

δ L = ( ( w L + 1 ) T δ L + 1 ) • f ′ ( z L ( n ) ) \delta^{L} = ( (w^{L+1})^{T} \delta^{L+1} ) • f'(z^{L}(n)) δL=((wL+1)TδL+1)f(zL(n))

  • 第L层的权值调整量
    Δ w L ( n ) = − η δ L ( n ) y L − 1 ( n ) \Delta w^{L}(n) = -\eta \delta^{L}(n) y^{L-1}(n) ΔwL(n)=ηδL(n)yL1(n)

    Δ w L = − η ( δ L ( y L − 1 ) T ) \Delta w^{L} = -\eta (\delta^{L}( y^{L-1})^{T}) ΔwL=η(δL(yL1)T)
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值