常看到很多地方说梯度的反方向是函数下降最快的方向,为何?这里给出详
细的解释和理解过程。首先来说说梯度:
梯度的本意是一个向量(矢量),表示某一函数在该点处的方向导数沿着某个方向可以使方向导数取得最大值,即函数在该点处沿着某方向(梯度的方向)变化最快,梯度的模为方向导数的最大值。
沿某一方向变化,是用方向导数描述,变化最快,即方向导数取最大值。总结起来是说,梯度就是在函数某点的方向导数取得最大值的方向。
好,既然这样,还记得在 BP神经网络(一)–方向导数 推导的定理吗?
d f d x ∣ ( x 0 , y 0 ) = f x ( x 0 , y 0 ) cos α + f y ( x 0 , y 0 ) sin α \left. \frac{{\rm d}f}{{\rm d}x} \right|_{(x_0,y_0)} = f_x(x_0,y_0)\cos\alpha+f_y{(x_0,y_0)}\sin\alpha dxdf∣∣∣∣(x0,y0)=fx(x0,y0)cosα+fy(x0,y0)sinα
方向导数可以用上式表示,我们写成向量相乘的形式,取向量
A
=
(
f
x
(
x
0
,
y
0
)
,
f
y
(
x
0
,
y
0
)
)
A=(f_x(x_0,y_0),f_y(x_0,y_0))
A=(fx(x0,y0),fy(x0,y0)),取向量
B
=
(
cos
α
,
sin
α
)
B=(\cos\alpha,\sin\alpha)
B=(cosα,sinα),由向量内积的乘法定理有:
d
f
d
x
∣
(
x
0
,
y
0
)
=
A
⋅
B
\left. \frac{{\rm d}f}{{\rm d}x} \right|_{(x_0,y_0)} = A\cdot B
dxdf∣∣∣∣(x0,y0)=A⋅B
根据向量内积的定义有:
d
f
d
x
∣
(
x
0
,
y
0
)
=
A
⋅
B
=
∣
A
∣
⋅
∣
B
∣
cos
θ
\left. \frac{{\rm d}f}{{\rm d}x} \right|_{(x_0,y_0)} = A\cdot B = |A| \cdot |B|\cos\theta
dxdf∣∣∣∣(x0,y0)=A⋅B=∣A∣⋅∣B∣cosθ
其中,
θ
\theta
θ为A、B之间的夹角。可见,当夹角为0时方向导数取得最大值,即向量A与向量B方向相同时,才能取得最大值。由于向量A当取完点
(
x
0
,
y
0
)
(x_0,y_0)
(x0,y0)后就确定下来了,因为此时向量
A
=
(
f
x
(
x
0
,
y
0
)
,
f
y
(
x
0
,
y
0
)
)
A=(f_x(x_0,y_0),f_y(x_0,y_0))
A=(fx(x0,y0),fy(x0,y0))为一个常数。当在函数上固定了
(
x
0
,
y
0
)
(x_0,y_0)
(x0,y0)点,不断变化
α
\alpha
α的值寻找最大方向导数,当其与向量A同方向,方向导数取得最大,这时的方向就是梯度的方向(因为这是梯度的定义),也是向量A的方向,此时的方向就是梯度的方向,方向导数的最大值就是梯度的模。因此说梯度的方向就是函数变化(上升)最快的方向,那么其反方向自然是下降最快的方向了。