梯度下降算法Gradient descent
梯度下降法的基本思想可以类比为一个下山的过程。
假设这样一个场景:一个人被困在山上,需要从山上下来(找到山的最低点,也就是山谷)。但此时山上的浓雾很大,导致可视度很低;因此,下山的路径就无法确定,必须利用自己周围的信息一步一步地找到下山的路。这个时候,便可利用梯度下降算法来帮助自己下山。怎么做呢,首先以他当前的所处的位置为基准,寻找这个位置最陡峭的地方,然后朝着下降方向走一步,然后又继续以当前位置为基准,再找最陡峭的地方,再走直到最后到达最低处;同理上山也是如此,只是这时候就变成梯度上升算法了
简易梯度下降法:
θ
j
:
=
θ
j
−
α
∂
∂
θ
j
J
(
θ
j
)
\ θ_j:=θ_j-α\frac{\partial}{\partialθ_j}J(θ_j)
θj:=θj−α∂θj∂J(θj)
适用与线性回归的梯度的梯度下降法公式(为实现同步更新θ0和θ1,运算顺序由上往下):
t
e
m
p
0
:
=
θ
0
−
α
∂
∂
θ
0
J
(
θ
0
,
θ
1
)
\ temp0:=θ_0-α\frac{\partial}{\partialθ_0}J(θ_0,θ_1)
temp0:=θ0−α∂θ0∂J(θ0,θ1)
t
e
m
p
1
:
=
θ
1
−
α
∂
∂
θ
1
J
(
θ
0
,
θ
1
)
\ temp1:=θ_1-α\frac{\partial}{\partialθ_1}J(θ_0,θ_1)
temp1:=θ1−α∂θ1∂J(θ0,θ1)
θ
0
:
=
t
e
m
p
0
\ θ_0:=temp0
θ0:=temp0
θ
1
:
=
t
e
m
p
1
\ θ_1:=temp1
θ1:=temp1
其中:
J
(
θ
0
,
θ
1
)
=
1
m
∑
i
=
1
m
(
h
θ
(
x
i
)
−
y
i
)
2
\ J(θ_0,θ_1)=\frac{1}{m}\sum_{i=1}^m(h_θ(x_i)-y_i)^2
J(θ0,θ1)=m1∑i=1m(hθ(xi)−yi)2,
h
θ
(
x
)
=
θ
0
+
θ
i
x
\ h_θ(x)=θ_0+θ_i x
hθ(x)=θ0+θix,α是下降速率(步长)
注:引用「Arrow and Bullet」部分原文