一步一步推导反向传播

一步一步推导反向传播

假如我们由如下的网络(这里只给出最后两层 l l l l + 1 l+1 l+1)其中 l + 1 l+1 l+1是最后输出:
在这里插入图片描述
其中有如下定义:

a l + 1 = s i g m o i d ( z l + 1 ) … … ( 1 ) a^{l+1} = sigmoid(z^{l+1})……(1) al+1=sigmoid(zl+1)(1)
z l + 1 = w l ∗ a l … … … … ( 2 ) z^{l+1} = w^l*a^l… ………(2) zl+1=wlal(2)
注意这里的 w 、 a 、 z w、a、z waz都是矩阵或向量。其定义和吴恩达的一样,比如 a j l a^l_j ajl代表第 l 层 的 第 j 个 节 点 l层的第j个节点 lj


因为反向传播是要求最后的损失对前面所有的权重的导数,然后再更新权重,所以我们的关键在于求出损失的权重的求导,上面的图中最后的输出是 a l + 1 a^{l+1} al+1,所以我们对应的损失如下:

J ( θ ) = − [ y l o g a l + 1 + ( 1 − y ) l o g ( 1 − a l + 1 ) ] J(\theta) =-[yloga^{l+1}+(1-y)log(1-a^{l+1})] J(θ)=[ylogal+1+(1y)log(1al+1)] 我们将 J ( θ ) 写 作 C J(\theta)写作C J(θ)C

我们的目的是要求 ∂ C ∂ w l \frac{\partial C}{\partial w^l} wlC,我们可以通过链式运算:

首先由上面的损失公式,我们可以很直观的看出来 ∂ C ∂ a l + 1 = a l + 1 − y a l + 1 ( 1 − a l + 1 ) \frac{\partial C}{\partial a^{l+1}} =\frac{a^{l+1}-y}{a^{l+1}(1-a^{l+1})} al+1C=al+1(1al+1)al+1y ,注意这里省去了常数部分。

根据链式法则,我们可以得到 ∂ C ∂ z l + 1 = ∂ C ∂ a l + 1 ∂ a l + 1 ∂ z l + 1 \frac{\partial C}{\partial z^{l+1}} =\frac{\partial C}{\partial a^{l+1}}\frac{\partial a^{l+1}}{\partial z^{l+1}} zl+1C=al+1Czl+1al+1 ,然后再结合式1,因为 a l + 1 = s i g m o i d ( z l + 1 ) a^{l+1} = sigmoid(z^{l+1}) al+1=sigmoid(zl+1) ,并且 f ( x ) = s i g m o i d ( x ) 的 导 数 为 f ’ ( x ) = f ( x ) ( 1 − f ( x ) ) f(x) = sigmoid(x)的导数为f’(x) =f(x)(1-f(x)) f(x)=sigmoid(x)f(x)=f(x)(1f(x)),所以 ∂ a l + 1 ∂ z l + 1 = a l + 1 ( 1 − a l + 1 ) \frac{\partial a^{l+1}}{\partial z^{l+1}}=a^{l+1}(1-a^{l+1}) zl+1al+1=al+1(1al+1) ,最终我们得到如下:
∂ C ∂ z l + 1 = ∂ C ∂ a l + 1 ∂ a l + 1 ∂ z l + 1 = a l + 1 − y … … ( 3 ) \frac{\partial C}{\partial z^{l+1}} =\frac{\partial C}{\partial a^{l+1}}\frac{\partial a^{l+1}}{\partial z^{l+1}}=a^{l+1}-y …… (3) zl+1C=al+1Czl+1al+1=al+1y(3)
我们离权重只剩下一步之遥了,同样利用链式法则,我们可以得到 ∂ C ∂ w l = ∂ C ∂ z l + 1 ∂ z l + 1 ∂ w l \frac{\partial C}{\partial w^{l}} =\frac{\partial C}{\partial z^{l+1}}\frac{\partial z^{l+1}}{\partial w^{l}} wlC=zl+1Cwlzl+1 ,结合式子2,因为 z l + 1 = w l ∗ a l z^{l+1} = w^l*a^l zl+1=wlal,所以 ∂ z l + 1 ∂ w l = a l \frac{\partial z^{l+1}}{\partial w^{l}} =a^l wlzl+1=al到此为止,我们得到了损失对 w l w^l wl的导数:
∂ C ∂ w l = ∂ C ∂ z l + 1 ∂ z l + 1 ∂ w l = ∂ C ∂ z l + 1 a l = ( a l + 1 − y ) ∗ a l … … ( 4 ) \frac{\partial C}{\partial w^{l}} =\frac{\partial C}{\partial z^{l+1}}\frac{\partial z^{l+1}}{\partial w^{l}}=\frac{\partial C}{\partial z^{l+1}}a^l=(a^{l+1}-y)*a^l ……(4) wlC=zl+1Cwlzl+1=zl+1Cal=(al+1y)al(4)

看到这里,可能心里想,这如果要好几百层怎么推呀,其实我们可以发现当我们求第 l l l层的时候,我们会用到 l + 1 l+1 l+1层的数据,所以如果能找到规律就好了,那么我们再向下推一层看看,同理,根据链式法则,我们可以得到 ∂ C ∂ z l = ∂ C ∂ z l + 1 ∂ z l + 1 ∂ z l \frac{\partial C}{\partial z^{l}}=\frac{\partial C}{\partial z^{l+1}}\frac{\partial z^{l+1}}{\partial z^{l}} zlC=zl+1Czlzl+1 ,而 z l + 1 = w l a l = w l s i g m o i d ( z l ) z^{l+1}=w^la^l=w^lsigmoid(z^l) zl+1=wlal=wlsigmoid(zl),所以 ∂ z l + 1 ∂ z l = ( w l ) T a l ( 1 − a l ) \frac{\partial z^{l+1}}{\partial z^{l}}=(w^l)^Ta^l(1-a^l) zlzl+1=(wl)Tal(1al),所以我们得到如下:
∂ C ∂ z l = ∂ C ∂ z l + 1 ( w l ) T a l ( 1 − a l ) … … ( 5 ) \frac{\partial C}{\partial z^{l}}=\frac{\partial C}{\partial z^{l+1}}(w^l)^Ta^l(1-a^l)……(5) zlC=zl+1C(wl)Tal(1al)5

看看我们发现了什么,我们发现第 l l l层对 z z z的导数和第 l + 1 l+1 l+1层对 z z z的关系了,所以我们可以设 ∂ C ∂ z l = δ l \frac{\partial C}{\partial z^{l}} =\delta^l zlC=δl,所以我们有:
δ l = δ l + 1 ( w l ) T a l ( 1 − a l ) … … ( 6 ) \delta^l = \delta^{l+1}(w^l)^Ta^l(1-a^l)……(6) δl=δl+1(wl)Tal(1al)6
再根据链式法则得到对权重的导数为:
∂ C ∂ w l − 1 = ∂ C ∂ z l ∂ z l ∂ w l − 1 = δ l a l − 1 … … ( 7 ) \frac{\partial C}{\partial w^{l-1}} =\frac{\partial C}{\partial z^{l}} \frac{\partial z^l}{\partial w^{l-1}} =\delta^la^{l-1}……(7) wl1C=zlCwl1zl=δlal17
其中( z l = w l − 1 a l − 1 z^l=w^{l-1}a^{l-1} zl=wl1al1

按照(7)这种写法,我们也可以将(4)改下如下:
∂ C ∂ w l = ∂ C ∂ z l + 1 ∂ z l + 1 ∂ w l = δ l + 1 a l … … ( 4 _ 1 ) \frac{\partial C}{\partial w^{l}} =\frac{\partial C}{\partial z^{l+1}}\frac{\partial z^{l+1}}{\partial w^{l}}= \delta^{l+1}a^l ……(4\_1) wlC=zl+1Cwlzl+1=δl+1al(4_1)
所以我们就得到了我们的损失对于任意 l l l层的权重的导数,也就是式子4_1,发现里面只存在一个 δ \delta δ是未知的,而结合式子6,我们就能递推求出所有层的 δ \delta δ

比如我们最后一层是 L L L层,根据 δ l \delta^l δl的定义得到 δ L = ∂ C ∂ z L \delta^L=\frac{\partial C}{\partial z^{L}} δL=zLC,因为最后一层,所以结合损失,计算得到 δ L = ∂ C ∂ z L = a L − y \delta^L=\frac{\partial C}{\partial z^{L}}=a^L-y δL=zLC=aLy,可以参考式子3的计算。当计算得到第 L 层 的 δ L层的\delta Lδ,那么 L − 1 , L − 2... L-1,L-2... L1,L2...就可以递推得到,进而带入4_1,就能得到对所有层权重的导数,进而更新权重。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值