问题:为什么沿着函数梯度的方向蹦,函数值一定会往增大的方向走或者走向收敛?
假设
设函数为
f
(
x
)
f(x)
f(x),
f
(
x
)
f(x)
f(x)的梯度为
f
′
(
x
)
f^{'}(x)
f′(x),函数上有一点为
x
0
x_0
x0,相应的函数值和梯度值为
f
(
x
0
)
、
f
′
(
x
0
)
f(x_0)、f^{'}(x_0)
f(x0)、f′(x0)。
分类讨论
f ′ ( x ) f^{'}(x) f′(x)无非三种状态:负数、0、正数。
- 当 f ′ ( x 0 ) < 0 f^{'}(x_0)<0 f′(x0)<0时, f ( x ) f(x) f(x)递减,所以 x 0 > x 0 + f ′ ( x 0 ) x_0>x_0+f^{'}(x_0) x0>x0+f′(x0),所以 f ( x 0 ) < f ( x 0 + f ′ ( x 0 ) ) f(x_0)<f(x_0+f^{'}(x_0)) f(x0)<f(x0+f′(x0));
- 当 f ′ ( x 0 ) = 0 f^{'}(x_0)=0 f′(x0)=0 时, x 0 = x 0 + f ′ ( x 0 ) x_0=x_0+f^{'}(x_0) x0=x0+f′(x0),所以会一直原地踏步,也就是所谓的收敛了;
- 当 f ′ ( x 0 ) > 0 f^{'}(x_0)>0 f′(x0)>0时, f ( x ) f(x) f(x)递增,所以 x 0 < x 0 + f ′ ( x 0 ) x_0<x_0+f^{'}(x_0) x0<x0+f′(x0),所以 f ( x 0 ) < f ( x 0 + f ′ ( x 0 ) ) f(x_0)<f(x_0+f^{'}(x_0)) f(x0)<f(x0+f′(x0));
应用
- 寻求 f ( x ) f(x) f(x)的极小值时,应向梯度的反方向寻找,即 x n + 1 = x n − α f ′ ( x n ) x_{n+1}=x_{n}-\alpha f^{'}(x_n) xn+1=xn−αf′(xn)。
- 寻求 f ( x ) f(x) f(x)的极大值时,应向梯度的方向寻找,即 x n + 1 = x n + α f ′ ( x n ) x_{n+1}=x_{n}+ \alpha f^{'}(x_n) xn+1=xn+αf′(xn)。
- 判断找到极值的条件即 f ′ ( x 0 ) = 0 f^{'}(x_0)=0 f′(x0)=0。
一般寻找的时候会设个步长 α \alpha α,也称学习率。就是每次迈的步子大小,步子迈大了,会来回震荡;迈小了,收敛速度会慢。