首先来了解基本的定义,
如,
其中,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的权值进行调整。
综上所述,可以知道,对权值的调整核心即为,