想要理解梯度下降,我们需要先认识梯度这一概念。首先回顾一下偏微分。对于函数
z = f ( x , y )
自变量取值
( x 0 , y 0 )
时,偏导数
f x ( x 0 , y 0 )
和
f y ( x 0 , y 0 )
表示
f
在
x
轴与
y
轴方向上的变化率。而
z = f ( x 0 , y 0 )
在其它方向
u =< u 1 , u 2 >
上的变化率则可通过计算
f
的方向导数
D u f ( x 0 , y 0 )
得到。方向导数公式如下:
D u f ( x 0 , y 0 ) = f x ( x 0 , y 0 ) u 1 + f y ( x 0 , y 0 ) u 2
其中,
u
是单位向量,即
∥ u ∥ = 1
。
z = f ( x 0 , y 0 )
在方向
u
上的变化率,即
f
在
x
轴方向上的变化率乘以
u 1
和
f
在
y
轴方向上的变化率乘以
u 2
的组合。上式可改写成向量的形式:
D u f ( x 0 , y 0 ) =< f x ( x 0 , y 0 ) , f y ( x 0 , y 0 ) > ⋅ < u 1 , u 2 >
由此,我们将得到梯度向量的定义。函数
z = f ( x , y )
在
( x 0 , y 0 )
处的梯度:
▽ f ( x 0 , y 0 ) =< f x ( x 0 , y 0 ) , f y ( x 0 , y 0 ) >
梯度有个重要的性质需要牢记,即梯度的方向始终指向函数
f
上升最快的方向,即
z
值增大最快的方向。
r o o f :
D u f ( x 0 , y 0 ) =< f x ( x 0 , y 0 ) , f y ( x 0 , y 0 ) > ⋅ < u 1 , u 2 >= ▽ f ( x 0 , y 0 ) ⋅ u = ∥ ▽ f ( x 0 , y 0 ) ∥ ∥ u ∥ cos ( θ )
当
u
指向与梯度方向相同时(
θ = 0 , cos ( θ ) = 1
),又因为
∥ u ∥ = 1
,方向导数取得最大值
∥ ▽ f ( x 0 , y 0 ) ∥
。此处,我们回忆一下一元微积分。当一个函数在
x
轴方向上某处的导数为正时,是否函数在该处递增呢?答案是肯定的,在多元微积分中,同样适用。因此,梯度的方向始终指向函数
f
上升最快的方向。
梯度下降则是利用梯度的反向去求函数的极小值。给定一个学习率
α
和初始的
θ
值,逐步更新目标函数
J ( θ )
中的自变量
θ
。每次更新得到一个较先前更小的函数值,逐渐逼近极小值。
θ
更新公式如下:
θ j := θ j − α ∂ J ( θ ) ∂ θ j
将上式写成向量形式,即:
θ = θ − α < J θ 1 , J θ 2 , … , J θ n >= θ − α ▽ J ( θ )
。