#### 本节书摘来自华章出版社《深度学习导论及案例分析》一书中的第2章,第2.14节,作者李玉鑑 张婷,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
2.14通用反向传播算法
由于深度学习在本质上是人工神经网络的延续,是在克服反向传播算法对深层网络的训练困难过程中逐步发展和建立起来的,因此有必要先讨论反向传播算法,又称为BP算法。下面将给出任意前馈神经网络的通用BP算法,以帮助读者理解其他各种不同网络的具体BP算法。
不妨设前馈神经网络共包含N个节点{u1,u2,…,uN},只有从编号较小的神经元才能连接到编号较大的神经元,没有反馈连接。当网络共包含10个节点时,通用前馈神经网络的一种连接方式如图2.17所示。第n个节点对第l个输入样本的输出用xn,l表示,其中1≤n≤N且1≤l≤L。如果un是输入节点,那么它对第l个输入样本的输入为netn,l=xn,l;否则,相应的输入为netn,l=∑kwk→nxk,l且xn,l=fn(netn,l),其中非输入节点可以是隐含节点或输出节点,wk→n(k
n∈OUT,εwk→n=∑Tt=1εnetn,lnetn,lwk→n=∑Ll=1(xn,l-yn,l)f′n(netn,l)netn,lwk→n
=∑Ll=1δn,lnetn,lwk→n(2.124)
kOUT,εwj→k=∑Ll=1εnetk,lnetk,lwj→k=∑Ll=1∑k→nεnetn,lnetn,lnetk,lnetn,lwj→k
=∑Ll=1∑k→nwk→nδn,lf′k(netk,l)netk,lwj→k=∑Ll=1δk,lnetk,lwj→k(2.125)
因此,根据公式(2.124)和公式(2.125),在理论上可以设计一个前馈神经网络的通用BP算法,即算法2.4。
算法2.4通用BP算法的一次迭代过程
1.设置合适的学习率η>0,随机初始化wk→n≈0。
2.若l=1,…,L,则
如果n是输出节点,则计算其反传误差信号δn,l=(xn,l-yn,l)f′n(netn,l)。
否则递归计算其反传误差信号δk,l=∑k→nwk→nδn,lf′k(netk,l)。
3.计算Δwk→n=∑Ll=1δn,lxk,l,并更新wk→n=wk→n-ηΔwk→n。
注意,在算法2.4中,只给出了通用BP算法的一次迭代过程,在实际应用时,还需要选择合适的迭代次数,常常在进行多次、几十次、几百次,甚至成千上万次迭代之后,才能获得令人满意的学习训练效果。
如果把循环神经网络的结构按时间展开成虚拟的前馈网络结构,同时考虑权值和偏置在时间上共享的特点,那么也不难得到相应的时间展开BP算法(backpropagation through time,BPTT)。这在介绍循环神经网络时还将讨论更多的细节。