一、直观理解
梯度方向与等高线的切线方向垂直
假设一函数为:
f
(
x
,
y
)
=
x
2
+
y
2
f(x,y)=x^2+y^2
f(x,y)=x2+y2,该函数的梯度为
[
2
x
,
2
y
]
[2x,2y]
[2x,2y];
选择其中一条等高线:
c
=
x
2
+
y
2
c=x^2+y^2
c=x2+y2 (
c
c
c为常数), 该等高线在任意一点的斜率为
−
x
c
−
x
2
\frac{-x}{\sqrt{c-x^2}}
c−x2−x,则切线方向为
[
x
,
−
c
−
y
2
y
]
[x,-\frac{c-y^2}{y}]
[x,−yc−y2];
可以验证
[
2
x
,
2
y
]
⋅
[
x
,
−
c
−
y
2
y
]
T
=
0
[2x,2y]\cdot[x,-\frac{c-y^2}{y}]^T=0
[2x,2y]⋅[x,−yc−y2]T=0,故得等高线的切线方向与梯度方向垂直。
二、方向导数
梯度是函数上升的方向,且在该方向上的方向导数最大
多元函数
f
(
x
,
y
)
f(x,y)
f(x,y)的方向导数代表了函数在
(
x
,
y
)
(x,y)
(x,y)点上,
l
⃗
\vec{l}
l 方向的瞬时变化率。
设函数
f
(
x
,
y
)
f(x,y)
f(x,y) 在点
(
x
,
y
)
(x,y)
(x,y)的某一邻域
U
0
U_0
U0内有定义,自点
(
x
,
y
)
(x,y)
(x,y)引射线
l
l
l,自
x
x
x轴的正向到射线
l
l
l的转角为
α
\alpha
α,则
f
(
x
,
y
)
f(x,y)
f(x,y)在点
(
x
,
y
)
(x,y)
(x,y)沿方向
l
l
l的方向导数为:
∂
f
∂
l
=
∂
f
∂
x
⋅
cos
α
+
∂
f
∂
y
⋅
sin
α
\frac{\partial f}{\partial l}=\frac{\partial f}{\partial x}\cdot\cos\alpha+\frac{\partial f}{\partial y}\cdot\sin\alpha
∂l∂f=∂x∂f⋅cosα+∂y∂f⋅sinα
我们知道梯度为:
g
r
a
d
=
[
∂
f
∂
x
,
∂
f
∂
y
]
grad=[\frac{\partial f}{\partial x},\frac{\partial f}{\partial y}]
grad=[∂x∂f,∂y∂f],所以方向导数可写为:
∂
f
∂
l
=
g
r
a
d
⋅
l
⃗
=
∣
g
r
a
d
∣
∣
l
⃗
∣
cos
θ
\frac{\partial f}{\partial l}=grad\cdot\vec l=|grad||\vec l|\cos\theta
∂l∂f=grad⋅l=∣grad∣∣l∣cosθ
θ
\theta
θ为梯度方向和
l
l
l方向的夹角,由上式可知,当夹角为
0
0
0时,即梯度方向,方向导数最大,函数上升最快;当夹角为
180
180
180时,梯度的反方向,方向导数为负,最小,函数下降地最快,这就是梯度下降法的本质。
三、从泰勒级数展开来看
对函数
f
(
x
,
y
)
f(x,y)
f(x,y)进行一阶泰勒展开:
f
(
x
+
δ
1
,
y
+
δ
2
)
≈
f
(
x
0
,
y
0
)
+
∇
f
(
x
0
,
y
0
)
⋅
(
δ
1
,
δ
2
)
T
f(x+\delta_1,y+\delta_2)\approx f(x_0,y_0)+\nabla f(x_0,y_0)\cdot(\delta_1,\delta_2)^T
f(x+δ1,y+δ2)≈f(x0,y0)+∇f(x0,y0)⋅(δ1,δ2)T
f
(
x
+
δ
1
,
y
+
δ
2
)
−
f
(
x
0
,
y
0
)
≈
∇
f
(
x
0
,
y
0
)
⋅
(
δ
1
,
δ
2
)
T
f(x+\delta_1,y+\delta_2)-f(x_0,y_0)\approx\nabla f(x_0,y_0)\cdot(\delta_1,\delta_2)^T
f(x+δ1,y+δ2)−f(x0,y0)≈∇f(x0,y0)⋅(δ1,δ2)T
由上可知,当
(
δ
1
,
δ
2
)
(\delta_1,\delta_2)
(δ1,δ2)与梯度方向一致时,函数增长速度最快。
四、牛顿法
在函数的某一点
(
x
0
,
y
0
)
(x_0,y_0)
(x0,y0)处用二次函数进行逼近,即二阶泰勒展开,如:
f
(
x
0
+
δ
1
,
y
+
δ
2
)
≈
f
(
x
0
,
y
0
)
+
f
′
(
x
0
,
y
0
)
⋅
(
δ
1
,
δ
2
)
T
+
f
′
′
(
x
0
,
y
0
)
2
⋅
(
δ
1
,
δ
2
)
T
f(x_0+\delta_1,y+\delta_2) \approx f(x_0,y_0)+f'(x_0,y_0)\cdot(\delta_1,\delta_2)^T+\frac{f''(x_0,y_0)}{2}\cdot(\delta_1,\delta_2)^T
f(x0+δ1,y+δ2)≈f(x0,y0)+f′(x0,y0)⋅(δ1,δ2)T+2f′′(x0,y0)⋅(δ1,δ2)T
找到二次函数最小值点:
(
x
1
,
y
1
)
=
(
x
0
,
y
0
)
−
f
′
(
x
0
,
y
0
)
f
′
′
(
x
0
,
y
0
)
(x_1,y_1)=(x_0,y_0)-\frac{f'(x_0,y_0)}{f''(x_0,y_0)}
(x1,y1)=(x0,y0)−f′′(x0,y0)f′(x0,y0)
然后,在
(
x
1
,
y
1
)
(x_1,y_1)
(x1,y1)处二阶泰勒展开,找到
(
x
2
,
y
2
)
(x_2,y_2)
(x2,y2),…,直到收敛。
五、梯度下降与牛顿法的区别
梯度下降:梯度下降是用一次函数来对目标函数进行逼近,需要设置学习率,学习率过小收敛速度慢,过大容易造成震荡不收敛;
牛顿法:牛顿法是用二次函数对目标函数的逼近,但是需要计算目标函数的二次偏导数,当参数较多时,计算和存储的开销都比较大。当目标函数非凸时,容易收敛到鞍点等其他极值为0的点。
参考:
[1]: https://baike.baidu.com/item/方向导数/8923917?fr=aladdin
[2]: https://www.jianshu.com/p/af3492b5e49c