什么是梯度?梯度有什么用?
写此篇博客主要是从原理上理解一下梯度是什么,加深自己的理解,以及将来方便复习
首先我们先回顾一下数量积(内积或点积)及方向向量的内容,因为后续梯度的理解及定义和这两个知识点密切相关。
点积:
设向量
a
∈
R
n
b
∈
R
n
a\in R^n \quad b \in R^n
a
∈
R
n
b
∈
R
n
,则a和b的点积为,
a
⋅
b
=
a
T
b
=
a
1
b
1
+
a
2
b
2
+
.
.
.
+
a
n
b
n
a\cdot b=a^Tb=a_1b_1+a_2b_2+…+a_nb_n
a
⋅
b
=
a
T
b
=
a
1
b
1
+
a
2
b
2
+
…
+
a
n
b
n
方向向量:
举一个二维向量的例子
a
∈
R
2
a \in R2
a
∈
R
2
从图可以看出a的单位向量
e
=
(
c
o
s
α
,
c
o
s
β
)
T
e=(cos\alpha,cos\beta)^T
e
=
(
cos
α
,
cos
β
)
T
,我们称e为a的方向向量。
下面我们举一个三维函数的例子,设在定义域D,连续可导函数
f
(
x
,
y
)
f(x,y)
f
(
x
,
y
)
,令
z
=
f
(
x
,
y
)
z=f(x,y)
z
=
f
(
x
,
y
)
,用图示如下:
已知一点P
(
x
0
,
y
0
)
∈
D
(x_0,y_0)\in D
(
x
0
,
y
0
)
∈
D
,取一个方向变化向量
Δ
t
=
(
Δ
x
,
Δ
y
)
\Delta t=(\Delta x,\Delta y)
Δ
t
=
(
Δ
x
,
Δ
y
)
,假设
α
\alpha
α
为
Δ
t
\Delta t
Δ
t
和x轴的夹角,则
Δ
x
=
c
o
s
α
Δ
t
\Delta x=cos\alpha \Delta t
Δ
x
=
cos
α
Δ
t
,
Δ
x
=
c
o
s
β
Δ
t
\Delta x=cos\beta \Delta t
Δ
x
=
cos
β
Δ
t
。
所以在P点的任意方向的函数微分(或导数)
d
z
d
t
=
f
(
x
0
+
Δ
x
,
y
0
+
Δ
y
)
−
f
(
x
0
,
y
0
)
d
t
\frac{dz}{dt}=\frac{f(x_0+\Delta x,y_0+\Delta y)-f(x_0,y_0)}{dt}
d
t
d
z
=
d
t
f
(
x
0
+
Δ
x
,
y
0
+
Δ
y
)
−
f
(
x
0
,
y
0
)
,根据定义分析
注:如果一个函数
f
(
x
)
f(x)
f
(
x
)
,它的微积分的奥秘是,无限运动接近。其误差变化量其实就是误差项的运动速度大于
Δ
x
\Delta x
Δ
x
的变化量,如果
f
(
x
)
=
x
2
f(x)=x^2
f
(
x
)
=
x
2
,其导数定义运算:
lim
Δ
x
→
0
x
2
+
2
Δ
x
x
+
Δ
x
2
−
x
2
Δ
x
=
2
x
+
Δ
x
\lim_{\Delta x \to 0} \frac{x^2+2\Delta xx+\Delta x^2-x^2}{\Delta x}=2x+\Delta x
Δ
x
→
0
lim
Δ
x
x
2
+
2Δ
xx
+
Δ
x
2
−
x
2
=
2
x
+
Δ
x
其中为什么
Δ
x
\Delta x
Δ
x
可以忽略掉,思考一下,以为2x是某点固定变化量,而
Δ
x
\Delta x
Δ
x
是运动变化的,也就是说当
d
y
=
2
x
∗
Δ
x
+
Δ
x
∗
Δ
x
dy=2x*\Delta x+\Delta x*\Delta x
d
y
=
2
x
∗
Δ
x
+
Δ
x
∗
Δ
x
,第一项的运动变化是随着
Δ
x
\Delta x
Δ
x
以比例或者说是线性变化或者理解为相对不变,而第二项的值和
Δ
x
\Delta x
Δ
x
是运动的,是随着
D
e
l
t
a
x
Delta x
De
lt
a
x
变小而变得更小,随着
Δ
x
\Delta x
Δ
x
变大而变大的速度更快。所以误差项记作
o
(
Δ
x
)
o(\Delta x)
o
(
Δ
x
)
。
而偏导数的奥秘,举一个例子,二元函数
f
(
x
,
y
)
=
x
2
y
2
f(x,y)=x^2y^2
f
(
x
,
y
)
=
x
2
y
2
,先计算x的偏导数,
lim
Δ
x
→
0
2
x
y
2
+
Δ
x
y
2
=
2
x
y
2
\lim_{\Delta x \to 0} 2xy^2+\Delta xy^2=2xy^2
Δ
x
→
0
lim
2
x
y
2
+
Δ
x
y
2
=
2
x
y
2
我们可以看到y项依然对影响着函数变化率,但相对于
D
e
l
t
a
x
Delta x
De
lt
a
x
的运动项忽略掉。
同样对y求偏导数
lim
Δ
y
→
0
2
y
x
2
+
Δ
y
x
2
=
2
y
x
2
\lim_{\Delta y \to 0} 2yx^2+\Delta yx^2=2yx^2
Δ
y
→
0
lim
2
y
x
2
+
Δ
y
x
2
=
2
y
x
2
所以以上二元偏导数,是把运动量
Δ
t
\Delta t
Δ
t
分解到x方向及y方向,任一方向的偏导数也有可能收当前点的其他方向影响,但是相对于
D
e
l
t
a
x
Delta x
De
lt
a
x
的运动项忽略掉,记作
o
(
Δ
t
)
o(\Delta t)
o
(
Δ
t
)
。
根据以上性质我们可以理解,当
Δ
x
\Delta x
Δ
x
,
Δ
y
\Delta y
Δ
y
无限趋近于0时,
f
(
x
+
Δ
x
,
y
+
Δ
y
)
−
f
(
x
,
y
)
=
f
x
′
(
x
,
y
)
∗
Δ
x
+
f
y
′
(
x
,
y
)
∗
Δ
y
+
o
(
Δ
t
)
f(x+\Delta x,y+\Delta y)-f(x,y)=f_x^{‘}(x,y)*\Delta x+f_y^{‘}(x,y)*\Delta y+o(\Delta t)
f
(
x
+
Δ
x
,
y
+
Δ
y
)
−
f
(
x
,
y
)
=
f
x
′
(
x
,
y
)
∗
Δ
x
+
f
y
′
(
x
,
y
)
∗
Δ
y
+
o
(
Δ
t
)
,其中
o
(
Δ
t
)
o(\Delta t)
o
(
Δ
t
)
是误差函数,
计算的时候可以忽略。然后求方向上的导数
f
(
x
+
Δ
x
,
y
+
Δ
y
)
−
f
(
x
,
y
)
Δ
t
=
f
x
′
(
x
,
y
)
∗
Δ
x
+
f
y
′
(
x
,
y
)
∗
Δ
y
Δ
t
\frac{f(x+\Delta x,y+\Delta y)-f(x,y)}{\Delta t}=\frac{f_x^{‘}(x,y)*\Delta x+f_y^{‘}(x,y)*\Delta y}{\Delta t}
Δ
t
f
(
x
+
Δ
x
,
y
+
Δ
y
)
−
f
(
x
,
y
)
=
Δ
t
f
x
′
(
x
,
y
)
∗
Δ
x
+
f
y
′
(
x
,
y
)
∗
Δ
y
,
又因为
Δ
x
Δ
t
=
c
o
s
α
\frac{\Delta x}{\Delta t}=cos\alpha
Δ
t
Δ
x
=
cos
α
,
Δ
y
Δ
t
=
c
o
s
β
\frac{\Delta y}{\Delta t}=cos\beta
Δ
t
Δ
y
=
cos
β
,
所以在方向向量t上的导数
f
t
′
(
x
,
y
)
=
f
x
′
(
x
,
y
)
c
o
s
α
+
f
y
′
(
x
,
y
)
c
o
s
β
f_t^{‘}(x,y)=f_x^{‘}(x,y)cos\alpha+f_y^{‘}(x,y)cos\beta
f
t
′
(
x
,
y
)
=
f
x
′
(
x
,
y
)
cos
α
+
f
y
′
(
x
,
y
)
cos
β
我们把方向导数做一个变形令向量
m
=
(
f
x
′
(
x
,
y
)
,
f
y
′
(
x
,
y
)
)
T
m=(f_x^{‘}(x,y),f_y^{‘}(x,y))^T
m
=
(
f
x
′
(
x
,
y
)
,
f
y
′
(
x
,
y
)
)
T
,则
t
=
(
c
o
s
α
,
c
o
s
β
)
T
t=(cos\alpha,cos\beta)^T
t
=
(
cos
α
,
cos
β
)
T
,我们发现此处的t就是方向向量t,然后我们把方向向量t的导数换个形式
f
t
′
(
x
,
y
)
=
f
x
′
(
x
,
y
)
c
o
s
α
+
f
y
′
(
x
,
y
)
c
o
s
β
=
m
⋅
t
=
∣
m
∣
∣
t
∣
cos
θ
f_t^{‘}(x,y)=f_x^{‘}(x,y)cos\alpha+f_y^{‘}(x,y)cos\beta=m\cdot t=|m||t|\cos\theta
f
t
′
(
x
,
y
)
=
f
x
′
(
x
,
y
)
cos
α
+
f
y
′
(
x
,
y
)
cos
β
=
m
⋅
t
=
∣
m
∣∣
t
∣
cos
θ
θ
为
m
向量和
t
向量的夹角
\theta为m向量和t向量的夹角
θ
为
m
向量和
t
向量的夹角
,从上式中看出当
c
o
s
θ
cos\theta
cos
θ
值最大时,导数最大,也就是
θ
=
0
\theta=0
θ
=
0
时最大,
t向量和m向量重合时导数最大。我们函数在某点处的m向量
m
=
(
f
x
′
(
x
,
y
)
,
f
y
′
(
x
,
y
)
)
T
m=(f_x^{‘}(x,y),f_y^{‘}(x,y))^T
m
=
(
f
x
′
(
x
,
y
)
,
f
y
′
(
x
,
y
)
)
T
为此处的梯度。
梯度有什么用呢,我们应该经常听到一个名词,梯度下降。比如我们构建了一个误差函数,已知在某处,我们可以求出梯度,我们通过梯度找到推进的方向,依次迭代计算找到极值时就是我们找到的局部最小值。
以上例子用二元函数做例子,同样可以扩充到更高的次元。