我是靠谱客的博主 幸福金毛,最近开发中收集的这篇文章主要介绍BP算法公式推导,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

W^l_{ji}表示第l-1层的第i个神经元到第l层的第j个神经元的连接权值,x^l_j表示第l层第j个神经元的输入,y^l_j表示第l层第j个神经元的输出,Theta^l_j表示l层第j个神经元的偏置,C表示代价函数,

则有:

x^l_j = sum _k w^l_{ji}y^{l-1}_i + Theta ^l_j

y^l_j = fleft ( x^l_j right )

其中,fleft ( cdot right )表示激活函数。训练多层网络的目的就是使代价函数C最小化.

定义代价函数为:

C= frac{1}{2}left | Y-y^L right |^2

可以看出,这个函数依赖于实际的目标值Yy^L可以看成权值和偏置的函数,通过不断的修改权值和偏置值来改变神经网络的输出值.

接下来更新权值和偏置:

首先定义误差delta,令delta ^l_j表示第l层第j个神经元上的误差(?),定义为

large delta ^l_j = delta x^l_j = frac{partial C}{partial x^l_j}

由链式求导法则可得输出层的误差方程为:

large delta ^l_j = delta x^l_j = frac{partial C}{partial y^l_j}{f left(x^l_jright)}'

因为当前层神经元的输出是上一层神经元输出的线性组合,由链式法则可通过下层神经元的误差来表示当前层的误差:

large delta ^l_j = delta x^l_j = frac{partial C}{partial x^l_j} = sum _i frac{partial C}{partial x^{l+1}_i} frac{partial x^{l+1}_i}{partial x^l_j} = sum _i frac{partial x^{l+1}_i}{partial x^l_j} delta x^{l+1}_i   # 建立了 前一层误差 和 后一层误差的关系

又因为: 建立了 large x^{l+1}_ilarge x^l_i的联系

large x^{l+1}_i = sum _j w^{l+1}_{ij} y^l_j + theta ^{l+1}_i = sum _j w^{l+1}_{ij} fleft(x^l_j right ) + theta ^{l+1}_i

large x^l_j求偏导,可得:

large frac{partial x^{l+1}_i}{partial x^l_j} = w^{l+1}_{ij} f'left(x^l_j right )

故有:   前一层误差 和 后一层误差的关系推导

large delta ^l_j = sum _i w^{l+1}_{ij} f'left(x^l_j right ) delta^{l+1}_i

权重和偏置更新公式:

large frac{partial C }{ partial w^l_{ji}} = frac{partial C}{partial x^l_j} frac{partial x^l_j}{partial w^l_{ji}} = delta ^l_j y^{l-1}_i

large frac {partial C}{partial theta ^l_j} = frac{partial C}{partial x^l_j}frac{partial x^l_j}{partial theta ^l_j} = delta^l_j

由梯度下降法可得到更新规则为:

large w^l_{ji} = w^l_{ji} - alpha frac{partial C}{partial w^l_{ji}} = w^l_{ji} - alpha delta^l_j y^{l-1}_i

large theta ^l_j = theta ^l_j - alphafrac{partial C}{partial theta^l_j} = theta^l_j - alpha delta ^l_j

BP反向传播的过程;

 

 

 

 

 

 

最后

以上就是幸福金毛为你收集整理的BP算法公式推导的全部内容,希望文章能够帮你解决BP算法公式推导所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部