什么是梯度?梯度有什么用?
写此篇博客主要是从原理上理解一下梯度是什么,加深自己的理解,以及将来方便复习
首先我们先回顾一下数量积(内积或点积)及方向向量的内容,因为后续梯度的理解及定义和这两个知识点密切相关。
点积: 设向量
a
∈
R
n
b
∈
R
n
a\in R^n \quad b \in R^n
a∈Rnb∈Rn,则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=aTb=a1b1+a2b2+...+anbn
方向向量: 举一个二维向量的例子
a
∈
R
2
a \in R2
a∈R2
从图可以看出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
(x0,y0)∈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}
dtdz=dtf(x0+Δx,y0+Δy)−f(x0,y0),根据定义分析
注:如果一个函数
f
(
x
)
f(x)
f(x),它的微积分的奥秘是,无限运动接近。其误差变化量其实就是误差项的运动速度大于
Δ
x
\Delta x
Δx的变化量,如果
f
(
x
)
=
x
2
f(x)=x^2
f(x)=x2,其导数定义运算:
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→0limΔxx2+2Δxx+Δx2−x2=2x+Δ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
dy=2x∗Δx+Δx∗Δx,第一项的运动变化是随着
Δ
x
\Delta x
Δx以比例或者说是线性变化或者理解为相对不变,而第二项的值和
Δ
x
\Delta x
Δx是运动的,是随着
D
e
l
t
a
x
Delta x
Deltax变小而变得更小,随着
Δ
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)=x2y2,先计算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→0lim2xy2+Δxy2=2xy2
我们可以看到y项依然对影响着函数变化率,但相对于
D
e
l
t
a
x
Delta x
Deltax的运动项忽略掉。
同样对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→0lim2yx2+Δyx2=2yx2
所以以上二元偏导数,是把运动量
Δ
t
\Delta t
Δt分解到x方向及y方向,任一方向的偏导数也有可能收当前点的其他方向影响,但是相对于
D
e
l
t
a
x
Delta x
Deltax的运动项忽略掉,记作
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)=fx′(x,y)∗Δx+fy′(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} Δtf(x+Δx,y+Δy)−f(x,y)=Δtfx′(x,y)∗Δx+fy′(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 ft′(x,y)=fx′(x,y)cosα+fy′(x,y)cosβ
我们把方向导数做一个变形令向量
m
=
(
f
x
′
(
x
,
y
)
,
f
y
′
(
x
,
y
)
)
T
m=(f_x^{'}(x,y),f_y^{'}(x,y))^T
m=(fx′(x,y),fy′(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
ft′(x,y)=fx′(x,y)cosα+fy′(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=(fx′(x,y),fy′(x,y))T为此处的梯度。
梯度有什么用呢,我们应该经常听到一个名词,梯度下降。比如我们构建了一个误差函数,已知在某处,我们可以求出梯度,我们通过梯度找到推进的方向,依次迭代计算找到极值时就是我们找到的局部最小值。
以上例子用二元函数做例子,同样可以扩充到更高的次元。