负梯度方向是函数值下降最快的方向
我想每一个接触接触机器学习或者深度学习的人都对这句话倒背如流,但是随着时间的推移,很多概念及其背后的数学原理变得模糊。也是因为面试过程中被问及“为什么负梯度方向是函数值下降最快的方向?”,所以才突然发现是时候需要巩固一下这些尘封在脑海深处的知识点了。
基础概念
什么是梯度?
首先回顾一下导数、方向导数、偏导数这几个概念:
导数(数)
导数(导函数值,微商),指的是对于
y
=
f
(
x
)
y=f(x)
y=f(x),当
x
x
x在某点
x
0
x_0
x0处产生增量
Δ
x
\Delta{x}
Δx时函数值的增量
Δ
y
\Delta{y}
Δy,若
Δ
x
\Delta{x}
Δx趋向于0时,
Δ
y
/
Δ
x
\Delta{y}/\Delta{x}
Δy/Δx存在,则
x
0
x_0
x0处导数
f
′
(
x
0
)
f'(x_0)
f′(x0)为:
f
′
(
x
0
)
=
lim
Δ
x
→
0
Δ
y
Δ
x
f'(x_0)=\lim_{\Delta{x}\to{0}}\frac{\Delta{y}}{\Delta{x}}
f′(x0)=Δx→0limΔxΔy
方向导数(数)
对于一个多元函数,如二元函数(函数为曲面),方向导数即沿着某个方向的导数值。
偏导数(数)
偏导数是方向倒数的特例,特指沿着各变量坐标轴方向的方向导数。
梯度(向量)
梯度就是多元函数
y
=
f
(
x
)
y=f(\pmb{x})
y=f(xxx)在点
P
(
x
0
,
x
1
,
.
.
.
)
P(x_0,x_1,...)
P(x0,x1,...)的各变量在其坐标轴方向上的偏导数组成的向量
g
r
a
d
f
=
∂
f
(
x
)
∂
x
=
[
∂
f
(
x
)
∂
x
0
,
∂
f
(
x
)
∂
x
1
,
.
.
.
]
T
gradf =\frac{\partial{f(\pmb{x})}}{\partial{\pmb{x}}} =[ \frac {\partial{f(\pmb{x})}} {\partial{x_0}}, \frac {\partial{f(\pmb{x})}} {\partial{x_1}}, ... ]^T
gradf=∂xxx∂f(xxx)=[∂x0∂f(xxx),∂x1∂f(xxx),...]T
梯度是一个向量,所以梯度是有大小和方向的
传说中的负梯度方向,也就是这个向量的负方向!
那么进入正题:
为什么负梯度方向,也就是这个向量的负方向,函数值下降最大呢???
这个问题(寻找函数值下降最快的方向)其实等价于,寻找方向导数最大的方向,而这个方向为什么就是负梯度方向???
这个我原来一直不理解就在于没有想到切平面这个概念。一维的是时候,导数对应斜率,可以用切线直观表达。而到了二维空间,我以为是由经过该点的无数条切线组成,但这些切线并非在同一个平面上。如果他们都在一个平面上也就组成了一个切平面,那么任意两个垂直方向的偏导组成的向量能够得到最大方向倒数的方向也就很容易推导了。
但,为什么是切平面呢?
曲面的切平面存在性证明