注意:前方警告来袭:能认认真真看完这篇博客,读懂每一个公式,看懂每一个推导过程,那么就一定会对BP原理有一个根本性的认识,只有这样,作为一名程序猿,才能一个人在黑屋子里敲出对应功能的代码!!!

一、单层单连接

考虑以下两个单连接神经元:
BP算法原理解析
根据上图 可得如下公式推导:
n1=w1a0n2=w2a1
a1=f1(n1)a=a2=f2(n2)
E=E[(ta)2]=E(n1,n2)=E(w1,w2)
此处用E表示代价函数,物理意义为均方误差值,t表示训练样本所对应的目标值,a为最终的输出,Et为已知值,故其为a的函数,又有前可知an2 的函数,n2a1 的函数,a1n1 的函数,如果将w2 看着常数,则an1n2 的函数,所以E 同时也可以表示为n1n2 的函数,同理也可以表示为w1w2的函数。机器学习的目的就是通过调整参数w使E 最小,为使后面求导方便,同样可以将E 表示成如下:

E(ta)2

已知Ew1w2的函数,为使E取值最小,可通过梯度下降法对w1w2 更新,更新过程如下:
w1(k+1)=w1(k)αEw1w2(k+1)=w2(k)αEw2

其中α为梯度更新步长,也称为学习率,可由人为设定。
已知
E=E[(ta)2]=E(n1,n2)=E(w1,w2)

n1=w1a0n2=w2a1

根据求导链式法则可得:
Ew1=En1n1w1

Ew2=En2n2w2

其中
n1w1=(w1a0)w1=a0

n2w2=(w2a1)w2=a1


En1=s1

En2=s2

为敏感系数,后面会通过公式计算该系数,将以上公式合并可得如下公式:
Ew1=En1n1w1=s1a0

Ew2=En2n2w2=s2a1

带入更新公式可得:
w1(k+1)=w1(k)αs1a0w2(k+1)=w2(k)αs2a1

该更新公式中等式右边只有敏感系数s1s2未知,先计算s1s2的表达式,已知s1s2的定义式,可通过求导链式法则求出s1s2之间的关系。
s1=En1=En2n2n1=s2n2n1

其中
n2n1=(w2a1)n1=w2a1n1=w2f1(n1)n1=w2f˙1(n1)

所以s1s2 之间的关系为
s1=s2w2f˙1(n1)

现在s1 可以通过s2 表示了,也就是说到这一步只有s2 是未知数,下面计算s2 的表达式:由前面可知均方误差E的近似表达式为:
E(ta)2


En2=s2

将两者合并可得:
s2=En2=(ta)2n2=2(ta)an2=2(ta)f2(n2)n2=2(ta)f˙2(n2)

注意到此表达式中等式的右边含有(ta)为训练模型的偏差。
至此s1s2的计算表达式均已知。
BP算法原理解析
现在重新理一下整个更新过程:
BP算法原理解析

总结:BP更新过程可分为三步:

第一步:数据前向传播

BP算法原理解析

第二步:误差后向传播

BP算法原理解析

第三步:权重更新

BP算法原理解析

二、多层多连接

要读懂这一节,必须先要对第一节有足够的理解。
因本人没有艺术细胞,不会画图,前面那个图都是复制来的,又多层网络图不好画,网上又搜索不到对应的图,所以就不贴图了,各位读者还请自行脑补,就是在第一个图上面进行扩展。下面直接列写公式:

{a0=pam+1=fm+1(Wm+1am+bm+1)m=0,1,2,...,M1a=aM

代价函数(均方误差):
F^(x)=(t(k)a(k))T(t(k)a(k))

权重更新公式:
BP算法原理解析
这里需要注意下标i,jj表示前一层神经元节点下标,i表示后一层神经元节点下标。
根据偏导链式法则同理可推得如下公式:
BP算法原理解析
其中
BP算法原理解析
表示第m 层第i 个节点的输入。该式对wb求偏导分别为:
nimwi,jm=ajm1

nimbim=1

同理定义敏感因子:
sim=F^nim

结合前面两部分公式可得权重梯度:
BP算法原理解析
将其代入权重更新公式有:
BP算法原理解析
该表达式只是针对求解某一个权重和偏置。
下面以向量和矩阵的方式表示一层中权重和偏置的更新公式:
m层权重用矩阵表示如下:
Wm=[w1,1mw1,2mw1,Sm1mw2,1mw2,2mw2,Sm1mwSm,1mwSm,2mwSm,Sm1m]

m层敏感因子向量如下:
sm=F^nm=[F^n1mF^n2mF^nSmm]

m1层输出向量如下:
am1=[a1m1a2m1aSm1m1]

m层偏置向量如下:
bm1=[b1m1b2m1bSm1m1]

由此上述权重和偏置更新公式可统一由一下公式表示:
BP算法原理解析
现在我们需要推导如下关系式:
BP算法原理解析
已知
sm=F^nm=[nm+1nm]TF^nm+1=nm+1nmsm+1

注意,这里等式右边两个微分顺序不能乱,前一个为矩阵,后一个为向量,调换顺序后则无法进行数学运算。
BP算法原理解析
以上矩阵亦称Jacobian矩阵,其中每一个元素的表达式如下:
BP算法原理解析
由前面推导公式可得:
BP算法原理解析
其中
BP算法原理解析
将Jacobian矩阵矩阵代入sm表达式可得:
BP算法原理解析
进一步有:
BP算法原理解析
而最后一层siM可由均方误差求得:
BP算法原理解析
进一步可写为:
BP算法原理解析
向量和矩阵表示为:
BP算法原理解析
将以上过程总结为三步:

第一步:训练数据前向传播

BP算法原理解析

第二步:误差反向传播

BP算法原理解析

第三步:权重更新

BP算法原理解析
以上就是整个多层多连接网络BP算法数学原理。

三、实例运用

以下实例是通过BP神经网络算法拟合函数曲线,代码请戳这里

相关文章: