为什么说,沿着梯度相反的方向函数值下降最快
我们假设损失函数是 f ( x ) f(x) f(x), x x x就是神经网络的参数,我们的目的是最小化损失函数,也就是不断让 f ( x ) f(x) f(x)减小。
那么根据高等数学中的泰勒公式,我们知道函数
f
(
x
)
f(x)
f(x)的一阶泰勒公式如下
f
(
x
+
Δ
x
)
=
f
(
x
)
+
f
′
(
x
)
Δ
x
+
o
(
Δ
x
)
f(x+\Delta x)=f(x)+f'(x)\Delta x+o(\Delta x)
f(x+Δx)=f(x)+f′(x)Δx+o(Δx)
其中 f ′ ( x ) f'(x) f′(x)我们都知道是导数,在神经网络中,它就是梯度,因为 x x x是很多的参数,所以 x x x和 f ′ ( x ) f'(x) f′(x)都是向量。
我们的目的是让函数值减小,所以
f
(
x
+
Δ
x
)
f(x+\Delta x)
f(x+Δx)要小于
f
(
x
)
f(x)
f(x)。
那么根据上式我们知道,想要
f
(
x
+
Δ
x
)
<
f
(
x
)
f(x+\Delta x)<f(x)
f(x+Δx)<f(x)只能有
f
′
(
x
)
Δ
x
f'(x)\Delta x
f′(x)Δx小于0。
而 f ′ ( x ) Δ x f'(x)\Delta x f′(x)Δx是两个向量在做内积相乘,我们又知道两个向量的内积公式如下:
f ′ ( x ) Δ x = ∥ f ′ ( x ) ∥ ∥ Δ x ∥ cos θ f'(x)\Delta x=\left\|f'(x)\right\|\left\| \Delta x\right\|\cos\theta f′(x)Δx=∥f′(x)∥∥Δx∥cosθ
显然 f ′ ( x ) Δ x f'(x)\Delta x f′(x)Δx的取值范围是 [ − ∥ f ′ ( x ) ∥ 2 , ∥ f ′ ( x ) ∥ 2 ] [-\left\|f'(x)\right\|^2,\left\|f'(x)\right\|^2] [−∥f′(x)∥2,∥f′(x)∥2]。(注意我这里说的不严谨,因为 Δ x \Delta x Δx的取值是任意的,我们姑且认为它不会大于 f ′ ( x ) f'(x) f′(x))
也就是说当
Δ
x
=
f
′
(
x
)
\Delta x=f'(x)
Δx=f′(x)时,与梯度同方向,此时
cos
θ
=
1
\cos\theta=1
cosθ=1所以
f
′
(
x
)
Δ
x
=
∥
f
′
(
x
)
∥
2
f'(x)\Delta x=\left\|f'(x)\right\|^2
f′(x)Δx=∥f′(x)∥2
那么我们也就知道了当
Δ
x
=
−
f
′
(
x
)
\Delta x=-f'(x)
Δx=−f′(x),与梯度相反方向的时候(因为都是向量,所以这个负号表示的就是反方向。),此时
cos
θ
=
−
1
\cos\theta=-1
cosθ=−1,所以
f
′
(
x
)
Δ
x
=
−
∥
f
′
(
x
)
∥
2
f'(x)\Delta x=-\left\|f'(x)\right\|^2
f′(x)Δx=−∥f′(x)∥2
那么显然
f
(
x
+
Δ
x
)
=
f
(
x
)
−
∥
f
′
(
x
)
∥
2
f(x+\Delta x)=f(x)-\left\|f'(x)\right\|^2
f(x+Δx)=f(x)−∥f′(x)∥2函数值下降的最多。
f
(
x
+
Δ
x
)
=
f
(
x
)
+
∥
f
′
(
x
)
∥
2
f(x+\Delta x)=f(x)+\left\|f'(x)\right\|^2
f(x+Δx)=f(x)+∥f′(x)∥2函数值上升的最多。
所以说沿着梯度的方向,函数值变化最快。
需要注意是,我们要引入步长,也就是 Δ x = − α f ′ ( x ) \Delta x=-\alpha f'(x) Δx=−αf′(x),也就是学习率,因为不能让函数值一下子变化太大。