首页 > 代码库 > BP算法公式推导

BP算法公式推导

首先来了解基本的定义,

如,

技术分享

其中,N表示训练样本的数量,向量x(n)表示第n个样本在输入层输入数据,向量d(n)表示在输出层对应的期望的输出。

设神经元j位于网络的输出层,那么由该神经元输出产生的误差定义为:

技术分享

其中,技术分享表示期望的输出,技术分享表示实际的输出,技术分享表示神经元j输出产生的误差。

由神经元j产生的瞬时误差能量技术分享定义为:

 技术分享

那么整个网络所产生的总瞬时误差能量技术分享为:

技术分享

其中C表示网络输出层的神经元的集合。

在神经元j的激活函数处的诱导函数(诱导局部域)为:

技术分享

其中m是神经元j的输入数量,技术分享表示从神经元i到神经元j之间的突触权值,技术分享为神经元j的偏置,对应于技术分享技术分享表示连接到神经元j的神经元i的函数输出信号。

神经元j的函数信号,即输出技术分享为:

技术分享

其中,技术分享表示对应神经元j的激活函数。(简便起见,通常,网络中的所有神经元的激活函数均为同一个函数技术分享)。

在BP算法反向传播进行权值技术分享调整时引用一个修正值技术分享,它正比于偏导数技术分享,根据微分的链式规则可写为,

 技术分享 

对公式4取微分可得到:

 技术分享

(由于是针对某个神经元j求偏导,所以结果并非这技术分享种结果)

对公式2取微分可得到:

 技术分享

对公式6取微分可得到:

技术分享

对公式5取微分可得到:

  技术分享 

将公式8、9、10、11带入公式7得,

  技术分享

对于权值的修正技术分享根据delta法则定义为:

技术分享

其中技术分享为学习率参数,是一个常数,可指定;负号表示在权值空间中寻找一个使技术分享下降的权值改变的方向(即使网络总体误差能量减小)。

将公式12带入公式13得,

技术分享

其中技术分享为局域梯度,定义为:

技术分享

可见,神经元j的局域梯度技术分享等于该神经元的误差信号与其激活函数对诱导局部域的导数的乘积。

所以得到,

技术分享

其中技术分享可指定,在BP算法前向计算过程中技术分享可以得到,激活函数是已知的,通过计算可以得到技术分享,重点在于技术分享的计算。显然对于神经元j的位置需要进行分类讨论:

1.神经元j位于输出层,这是最简单的情形,此时,该神经元的期望输出技术分享和实际输出技术分享均为已知(实际输出在算法的前向计算中得出),

技术分享

从而神经元i到神经j的突触权值便可进行调整。

2.神经元j不位于输出层,而位于隐藏层。此时误差信号技术分享不能够再根据公式2得以确定,因为技术分享是不可知的。误差信号需要与与其直接相连接的神经元的误差信号来向后地柜决定。设连接到神经元j的位于输出层的神经元为k,便需重新定义技术分享

技术分享

重点放在技术分享的计算,

技术分享

对公式17对技术分享求微分得,

技术分享

(由于是对技术分享求偏导,而每一项技术分享都是技术分享的函数,所有含有技术分享)同样,使用链式规则得到,

技术分享

又因为

技术分享

所以,

技术分享

根据之前的解述,可以知道,

技术分享

其中m为神经元j所在网络层神经元数。对公式22求微分得,

技术分享

将公式21、23带入公式19可以得到,

技术分享

将公式24带入公式16得到,

技术分享

将公式25与公式14可以得到,

技术分享

这样便可以对神经元i到神经元j的权值进行调整。

综上所述,可以知道,对权值的调整核心即为,

技术分享


BP算法公式推导