通过计算图求梯度下降中各偏导的推导
在 Neural Networks and Deep Learning 课程的 Logistic Regression Gradient Descent 一节以逻辑回归为例,介绍了使用计算图(Computation Graph)求梯度下降中各偏导的方法,但没有给出具体的推导过程。
例子中模型为:
z=wTx+b
预测为:
ˆy=a=σ(z)
其中 σ(z) 为 Sigmoid 函数:
σ(z)=11+e−z
损失函数为:
L(a,y)=−(ylog(a)+(1–y)log(1–a))
假设只有两个特征 x1、x2,则:
wT=[w1 w2]
运算图如图1所示:
反向计算各偏导的过程如下:
- 首先求得 ∂L∂a 如下:
∂L∂a=–ya+1–y1–a
- 然后可以由链式法则求得 ∂L∂z 如下:
∂L∂z=∂L∂a⋅dadz
其中,a=σ(z) 是 Sigmoid 函数,有:
dσ(z)dz=σ(z)(1–σ(z))
将式 (6)、(8) 带入式 (7),得:
∂L∂z=(−ya+1–y1–a)⋅a(1–a) =−y(1–a)+a(1–y) =−y+a
- 最后求得 ∂L∂w1、∂L∂w2 和 ∂L∂b 如下:
∂L∂w1=∂L∂z⋅∂z∂w1=∂L∂z⋅x1
∂L∂w2=∂L∂z⋅∂z∂w2=∂L∂z⋅x2
∂L∂b=∂L∂z⋅∂z∂b=∂L∂z
这里 ∂L∂z 不再展开。实际应用中,在由式 (9) 求得 ∂L∂z 的值之后,就可以直接带入式 (10)、(11)、(12) 进行计算。