梯度
假设对于函数F(x),在其图象中有一点a,在a点的梯度是F(x)增长最快的方向,梯度本身是一种上升的趋势。
梯度下降
概念:对于F(x),在a点的梯度是F(x)增长最快的方向,那么它的相反方向则是该点下降最快的方向, 梯度下降算法是一种求局部最优解的方法。
原理:将函数比作一个山谷,如下图,我们站在山坡上的某处,往四周看,找出一个方向,使得沿着这个方向向下走一小步,能够下降的最快;刚开始走的步伐可能会大一些,随着越来越接近谷底,步伐也就越来越小,直到最终到达谷底C点。
注意:当变量之间大小相差很大时,应该先将他们做处理,使得他们的值在同一个范围,这样比较准确。
1)首先对 W (有时也被叫作 θ)赋值,这个值可以是随机的,也可以让 W 是一个全零的向量。
2)改变 W 的值,使得J(W)按梯度下降的方向进行减少。
描述一下梯度减少的过程,对逻辑回归函数
J
(
w
)
J(w)
J(w)求偏导:
δ
δ
w
J
(
w
)
=
−
δ
δ
w
1
M
∑
i
=
1
n
(
y
i
log
h
w
(
x
i
)
+
(
1
−
y
i
)
log
(
1
−
h
w
(
x
i
)
)
)
\frac{\delta}{\delta w}J(w)=-\frac{\delta}{\delta w}\frac{1}{M}\sum_{i=1}^n (y^i\log h_w(x^i)+(1-y^i)\log (1-h_w(x^i)))
δwδJ(w)=−δwδM1i=1∑n(yiloghw(xi)+(1−yi)log(1−hw(xi)))
下面分别对参数
θ
~\theta~
θ 和
b
~b~
b 更新的过程:
参数更新也就是
θ
~\theta~
θ 和
b
~b~
b 会向着梯度最小的方向进行减少。
θ
i
~\theta_i~
θi 表示更新之前的值,j减号"-"后面的部分表示按梯度方向减少的量,α是学习率(也叫步长,即每次下降的大小,可以自己设定,一般为0.0001、0.001、0.01、0.1……),也就是每次按照梯度减少的方向变化多少。
通过梯度下降我们最终可以收敛到这个全局最优值。