反向传播算法的公式推导

概念

反向传播(Back Propagation, BP)算法是使用梯度下降法相关的算法来优化一个神经网络时计算每一层梯度的方法,主要使用了多元函数的链式法则

已知多元函数 u=g(y1,y2,...,ym) u = g ( y 1 , y 2 , . . . , y m ) ,且 yi=fi(x) y i = f i ( x ) ,所有函数都可微,则

ux=i=1muyiyix ∂ u ∂ x = ∑ i = 1 m ∂ u ∂ y i ∂ y i ∂ x

公式推导

1、模型

不失一般性,我们考虑以下4层结构的神经网络(全连接):
这里写图片描述

2、符号说明

符号含义
nl n l 网络层数
yj y j 输出层第 j j 类标签
Sl l l 层神经元个数(不包括偏置)
g(x)激活函数
w(l)ij w i j ( l ) l l 层第j个单元与第 l+1 l + 1 层第 i i 个单元之间的链接参数
bi(l) l l 层的偏置与第l+1层第 i i 个单元之间的链接参数
zi(l) l l 层第i个单元的输入(加权和,包括偏置)
a(l)i a i ( l ) l l 层第i个单元的输出(激活函数的值)
δ(l)i δ i ( l ) l l 层第i个单元的输入的偏导(或称为灵敏度、残差)
J(θ) J ( θ ) 代价函数

3、符号定义

z(l)ia(l)iJ(θ)δ(l)i=b(l1)i+j=1Sl1w(l1)ija(l1)j=g(z(l)i)=12j=1Sl(yja(l)j)2=J(θ)z(l)i z i ( l ) = b i ( l − 1 ) + ∑ j = 1 S l − 1 w i j ( l − 1 ) a j ( l − 1 ) a i ( l ) = g ( z i ( l ) ) J ( θ ) = 1 2 ∑ j = 1 S l ( y j − a j ( l ) ) 2 δ i ( l ) = ∂ J ( θ ) ∂ z i ( l )

4、推导过程

δ(nl)iδ(l)iJ(θ)w(l)ijJ(θ)b(l)i=J(θ)z(nl)i=12z(nl)ij=1Snl(yja(nl)j)2=12z(nl)ij=1Snl(yjg(z(nl)j))2=12z(nl)i(yjg(z(nl)i))2=(yia(nl)i)g(z(nl)i)=J(θ)z(l)i=j=1Sl+1J(θ)z(l+1)jz(l+1)jz(l)i=j=1Sl+1δ(l+1)jz(l+1)jz(l)i=j=1Sl+1δ(l+1)jz(l)i(b(l)j+k=1Slw(l)jka(l)k)=j=1Sl+1δ(l+1)jz(l)i(b(l)j+k=1Slw(l)jkg(z(l)k))=j=1Sl+1δ(l+1)jz(l)i(w(l)jig(z(l)i))=j=1Sl+1δ(l+1)jw(l)jig(z(l)i)=g(z(l)i)j=1Sl+1δ(l+1)jw(l)ji=J(θ)z(l+1)iz(l+1)iw(l)ij=δ(l+1)iz(l+1)iw(l)ij=δ(l+1)iw(l)ij(b(l)i+k=1Slw(l)ika(l)k)=δ(l+1)ia(l)j=δ(l+1)ib(l)i(b(l)i+k=1Slw(l)ika(l)k)=δ(l+1)i δ i ( n l ) = ∂ J ( θ ) ∂ z i ( n l ) = 1 2 ∂ ∂ z i ( n l ) ∑ j = 1 S n l ( y j − a j ( n l ) ) 2 = 1 2 ∂ ∂ z i ( n l ) ∑ j = 1 S n l ( y j − g ( z j ( n l ) ) ) 2 = 1 2 ∂ ∂ z i ( n l ) ( y j − g ( z i ( n l ) ) ) 2 = − ( y i − a i ( n l ) ) g ′ ( z i ( n l ) ) δ i ( l ) = ∂ J ( θ ) ∂ z i ( l ) = ∑ j = 1 S l + 1 ∂ J ( θ ) ∂ z j ( l + 1 ) ∂ z j ( l + 1 ) ∂ z i ( l ) = ∑ j = 1 S l + 1 δ j ( l + 1 ) ∂ z j ( l + 1 ) ∂ z i ( l ) = ∑ j = 1 S l + 1 δ j ( l + 1 ) ∂ ∂ z i ( l ) ( b j ( l ) + ∑ k = 1 S l w j k ( l ) a k ( l ) ) = ∑ j = 1 S l + 1 δ j ( l + 1 ) ∂ ∂ z i ( l ) ( b j ( l ) + ∑ k = 1 S l w j k ( l ) g ( z k ( l ) ) ) = ∑ j = 1 S l + 1 δ j ( l + 1 ) ∂ ∂ z i ( l ) ( w j i ( l ) g ( z i ( l ) ) ) = ∑ j = 1 S l + 1 δ j ( l + 1 ) w j i ( l ) g ′ ( z i ( l ) ) = g ′ ( z i ( l ) ) ∑ j = 1 S l + 1 δ j ( l + 1 ) w j i ( l ) ∂ J ( θ ) ∂ w i j ( l ) = ∂ J ( θ ) ∂ z i ( l + 1 ) ∂ z i ( l + 1 ) ∂ w i j ( l ) = δ i ( l + 1 ) ∂ z i ( l + 1 ) ∂ w i j ( l ) = δ i ( l + 1 ) ∂ ∂ w i j ( l ) ( b i ( l ) + ∑ k = 1 S l w i k ( l ) a k ( l ) ) = δ i ( l + 1 ) a j ( l ) ∂ J ( θ ) ∂ b i ( l ) = δ i ( l + 1 ) ∂ ∂ b i ( l ) ( b i ( l ) + ∑ k = 1 S l w i k ( l ) a k ( l ) ) = δ i ( l + 1 )

向量形式的公式

δ(l)J(θ)W(l)J(θ)b(l)=(W(l))Tδ(l+1)g(z(l))=δ(l+1)(a(l))T=δ(l+1) δ ( l ) = ( W ( l ) ) T δ ( l + 1 ) ∘ g ′ ( z ( l ) ) ∂ J ( θ ) ∂ W ( l ) = δ ( l + 1 ) ( a ( l ) ) T ∂ J ( θ ) ∂ b ( l ) = δ ( l + 1 )

其中, 表示每个元素相乘,粗体的小写符号表示列向量,粗体的大写符号表示矩阵。

参考

([1] 中的公式推导有错误,本文已纠正)
[1] https://www.cnblogs.com/nowgood/p/backprop.html
[2] Bouvrie J. Notes on convolutional neural networks[J]. 2006.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值