DNN反向传播推导简介
如果对DNN前向传播,梯度下降不熟悉,建议先了解一下。
这里假设DNN的损失函数如:
J(W,b,x,y)=12||aL−y||22
J
(
W
,
b
,
x
,
y
)
=
1
2
|
|
a
L
−
y
|
|
2
2
其中输出层为第L层,输出结果
aL=σ(zL)=σ(WLaL−1+bL)
a
L
=
σ
(
z
L
)
=
σ
(
W
L
a
L
−
1
+
b
L
)
,这样损失函数变为:
求解W,b的梯度为:
注意到,求解W,b梯度时有公共部分 ∂J(W,b,x,y)∂zL ∂ J ( W , b , x , y ) ∂ z L ,因此可以先把这一部分算出来,既损失函数对 zL z L 的导数记为:
现在我们终于把输出层的梯度算出来了,那么如何计算上一层 L−1 L − 1 层的梯度,上上层 L−2 L − 2 层的梯度呢?这里我们需要一步步的递推,注意到对于第 l l 层的未激活输出,它的梯度可以表示为:
如果可以算出来第 l l 层,则该层的 Wl,bl W l , b l 很容易计算,因为根据前向传播有:
所以求得 Wl,bl W l , b l 梯度如下:
所以问题的关键就是求 δl δ l ,我们用数学归纳法,第 L L 层的上面我们已经求出,假设第 l+1 l + 1 层的 δl+1 δ l + 1 已经求出来了,那么如何求第 l l 层的呢?注意这里:
可见,用归纳法递推 δl+1 δ l + 1 和 δl δ l 的关键在于如何求解 δl+1δl δ l + 1 δ l
zl+1 z l + 1 和 zl z l 的关系很容易找出:
可以得出:
上式的Hadamard乘积表达的意义是 权值矩阵的每一个列向量都点乘 σ′(zl) σ ′ ( z l )
将上式带入上面
δl
δ
l
和
δl+1
δ
l
+
1
的关系我们得出:
得到了 δl δ l 的递推关系,只要求出某一层的 δl δ l ,求解 Wl,bl W l , b l 对应的梯度就很简单了。