我们按如下方式设置了对数几率回归,
z=wTx+b,
z
=
w
T
x
+
b
,
a=y^=σ(z),
a
=
y
^
=
σ
(
z
)
,
L(a,y)=−(1−y)log(1−y^)−ylog(y^).
L
(
a
,
y
)
=
−
(
1
−
y
)
log
(
1
−
y
^
)
−
y
log
(
y
^
)
.
在对数几率回归中,我们想要做的是修改参数w和b,以减少L。我们已经描述了在单个训练示例中实际计算损失的四个传播步骤,现在让我们谈谈如何反向计算导数。
因为我们想做的是关于这种损失的计算导数,我们反向计算时要做的第一件事就是计算
∂L∂a=ya+1−y1−a
∂
L
∂
a
=
y
a
+
1
−
y
1
−
a
。
然后 ∂L∂z=∂L∂a∂a∂z=a(1−a)(ya+1−y1−a)=a−y ∂ L ∂ z = ∂ L ∂ a ∂ a ∂ z = a ( 1 − a ) ( y a + 1 − y 1 − a ) = a − y 。
最后计算关于w和b的微分
∂L∂w1=x1∂L∂z,
∂
L
∂
w
1
=
x
1
∂
L
∂
z
,
∂L∂w2=x2∂L∂z,
∂
L
∂
w
2
=
x
2
∂
L
∂
z
,
∂L∂b=∂L∂z.
∂
L
∂
b
=
∂
L
∂
z
.
因此对数几率回归梯度下降计算的方向是:
w1:=w1−α∂L∂w1,
w
1
:=
w
1
−
α
∂
L
∂
w
1
,
w2:=w2−α∂L∂w2,
w
2
:=
w
2
−
α
∂
L
∂
w
2
,
b:=b−α∂L∂b.
b
:=
b
−
α
∂
L
∂
b
.
其中 α α 是学习率。
上面是只有一个训练样本时的对数几率回归的梯度下降方向,
现在我们想要为m个训练样本的对数几率回归进行梯度下降操作。
整体的成本函数
J=1m∑mi=1L(a(i),y(i)),
J
=
1
m
∑
i
=
1
m
L
(
a
(
i
)
,
y
(
i
)
)
,
然后
∂J∂wi=1m∑∂L(a(i),y(i))∂wi。
∂
J
∂
w
i
=
1
m
∑
∂
L
(
a
(
i
)
,
y
(
i
)
)
∂
w
i
。
令
α
α
是学习率,然后梯度下降每次迭代的更新公式为:
w1:=w1−α∂J∂w1,
w
1
:=
w
1
−
α
∂
J
∂
w
1
,
w2:=w2−α∂J∂w2,
w
2
:=
w
2
−
α
∂
J
∂
w
2
,
b:=b−α∂J∂b.
b
:=
b
−
α
∂
J
∂
b
.