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