梯度与梯度上升|下降法

这是一个我一直没有弄透彻的概念,特地整理总结一下,希望在这个过程中思路得以拓展。

在引入梯度的概念之前,先介绍一下以下几个概念:导数,偏导数,方向导数。

1. 导数

导数的定义如下:
f ′ ( x 0 ) = l i m Δ x → 0 f ( x 0 + Δ x ) − f ( x 0 ) Δ x f'(x_0)=lim_{\Delta x \to 0}\frac{f(x_0+\Delta x)-f(x_0)}{\Delta x} f(x0)=limΔx0Δxf(x0+Δx)f(x0)
表示的是函数 f ( x ) f(x) f(x)在某一点 x 0 x_0 x0沿着 x x x轴正方向的变化率/变化趋势。当 f ′ ( x 0 ) f'(x_0) f(x0)>0时,说明 f ( x ) f(x) f(x)的函数值在 x 0 x_0 x0点沿x轴正方向是趋于增加的,反之,则是趋于减少的。

2.偏导数

偏导数与导数类似,是指一个多变量的函数,关于其中一个变量的导数,而其他变量保持不变。

三变量函数 f ( x , y , z ) f(x,y,z) f(x,y,z)的偏导数的定义如下:
∂ f ( x 0 , y 0 , z 0 ) ∂ y = l i m Δ y → 0 f ( x 0 , y 0 + Δ y , z 0 ) − f ( x 0 , y 0 , z 0 ) Δ y \frac{\partial f(x_0,y_0,z_0)}{\partial y}=lim_{\Delta y \to 0}\frac{f(x_0,y_0+\Delta y,z_0)-f(x_0,y_0,z_0)}{\Delta y} yf(x0,y0,z0)=limΔy0Δyf(x0,y0+Δy,z0)f(x0,y0,z0)

表示的是三变量函数 f ( x , y , z ) f(x,y,z) f(x,y,z)在点 ( x 0 , y 0 , z 0 ) (x_0,y_0,z_0) (x0,y0,z0)处沿y轴正方向的变化率/变化趋势。

3.方向导数

导数和偏导数计算的都是沿某坐标轴正方向的变化率/变化趋势,方向导数计算的是沿某特定方向上的变化率/变化趋势。

三变量函数 f ( x , y , z ) f(x,y,z) f(x,y,z)的方向导数的定义如下:
∂ f ( x 0 , y 0 , z 0 ) ∂ v = l i m t → 0 f ( x 0 + t v 1 , y 0 + t v 2 , z 0 + t v 3 ) − f ( x 0 , y 0 , z 0 ) t = f x ′ ( x 0 , y 0 , z 0 ) v 1 + f y ′ ( x 0 , y 0 , z 0 ) v 2 + f z ′ ( x 0 , y 0 , z 0 ) v 3 \begin{aligned} \frac{\partial f(x_0,y_0,z_0)}{\partial v}&=lim_{t \to 0}\frac{f(x_0+tv_1,y_0+tv_2,z_0+tv_3)-f(x_0,y_0,z_0)}{t}\\ &=f'_x(x_0,y_0,z_0)v_1+ f'_y(x_0,y_0,z_0)v_2+f'_z(x_0,y_0,z_0)v_3 \end{aligned} vf(x0,y0,z0)=limt0tf(x0+tv1,y0+tv2,z0+tv3)f(x0,y0,z0)=fx(x0,y0,z0)v1+fy(x0,y0,z0)v2+fz(x0,y0,z0)v3

表示的是三变量函数 f ( x , y , z ) f(x,y,z) f(x,y,z)在点 ( x 0 , y 0 , z 0 ) (x_0,y_0,z_0) (x0,y0,z0)处沿 v = ( v 1 , v 2 , v 3 ) v=(v_1,v_2,v_3) v=(v1,v2,v3)方向的变化率/变化趋势。

4.梯度

梯度的方向就是函数在某点增长最快的方向,梯度的模为方向导数的最大值,梯度是偏导数的集合。

三变量函数 f ( x , y , z ) f(x,y,z) f(x,y,z)的梯度的定义如下:

如果函数 f ( x , y , z ) f(x,y,z) f(x,y,z)在点 ( x 0 , y 0 , z 0 ) (x_0,y_0,z_0) (x0,y0,z0)处存在偏导数 f x ′ ( x 0 , y 0 , z 0 ) f'_x(x_0,y_0,z_0) fx(x0,y0,z0), f y ′ ( x 0 , y 0 , z 0 ) f'_y(x_0,y_0,z_0) fy(x0,y0,z0) f z ′ ( x 0 , y 0 , z 0 ) f'_z(x_0,y_0,z_0) fz(x0,y0,z0),则称向量   { f x ′ ( x 0 , y 0 , z 0 ) , f y ′ ( x 0 , y 0 , z 0 ) , f z ′ ( x 0 , y 0 , z 0 ) } \ \{f'_x(x_0,y_0,z_0), f'_y(x_0,y_0,z_0),f'_z(x_0,y_0,z_0)\}  { fx(x0,y0,z0),fy(x0,y0,z0),fz(x0,y0,z0)} 为函数 f ( x , y , z ) f(x,y,z) f(x,y,z)在点 ( x 0 , y 0 , z 0 ) (x_0,y_0,z_0) (x0,y0,z0)处的梯度,记作:

∇ f ∣ ( x 0 , y 0 , z 0 )   或   g r a d f ∣ ( x 0 , y 0 , z 0 ) \nabla f|(x_0,y_0,z_0) \ 或\ gradf|(x_0,y_0,z_0) f(x0,y0,z0)  gradf(x0,y0,z0)

梯度的大小 | ∇ f | = f x ′ ( x 0 , y 0 , z 0 ) 2 + f y ′ ( x 0 , y 0 , z 0 ) 2 + f z ′ ( x 0 , y 0 , z 0 ) 2 |\nabla f|=\sqrt{f'_x(x_0,y_0,z_0)^2+ f'_y(x_0,y_0,z_0)^2+f'_z(x_0,y_0,z_0)^2} f=fx(x0,y0,z0)2+fy(x0,y0,z0)2+fz(x0,y0,z0)2 =方向导数的最大值

梯度的方向:函数变化率(即方向导数)最大的方向。

5.梯度下降/上升法

函数沿着梯度是上升最快的方向,那么沿着梯度的反方向就是下降最快的方向。

梯度下降法从函数 f f f的局部极小值的初始估计 x 0 x_0 x0出发,重复计算:
x n + 1 = x n − r ∇ f ( x n ) , n ≥ 0 x_{n+1}=x_n-r \nabla f(x_n),n\geq 0 xn+1=xnrf(xn)n0 其中 r > 0 r>0 r>0且是一个极小值。顺利的话最终序列会收敛到局部最小值。

梯度上升法则是重复计算:
x n + 1 = x n + r ∇ f ( x n ) , n ≥ 0 x_{n+1}=x_n+r \nabla f(x_n),n\geq 0 xn+1=xn+rf(xn)n0
顺利的话最终序列会收敛到局部最大值。

猜你喜欢

转载自blog.csdn.net/weixin_46148223/article/details/108817978