声明:仅用于自学。部分内容来自于网络,如有问题,请联系删除。
英文原文的官方网站,仅供参考:https://www.deeplearningbook.org/
第四章:数值计算
4.2 病态条件
条件数是指函数相对于其输入的微小变化而变化的快慢程度。 当输入受到轻微扰动时快速变化的函数可能会对科学计算产生问题,因为输入中的舍入误差会导致输出发生较大变化。
考虑函数
f
(
x
)
=
A
−
1
x
f(x)= A^{-1}x
f(x)=A−1x。 当
A
∈
R
n
×
n
A∈\mathbb{R}^{n×n}
A∈Rn×n具有特征值分解时,其条件数为:
m
a
x
i
,
j
∣
λ
i
λ
j
∣
max_{i,j}|\frac{\lambda_i}{\lambda_j}|
maxi,j∣λjλi∣ (4.2)
这是最大和最小特征值的大小之比。 当此数字很大时,矩阵求逆对输入中的误差特别敏感。
这种敏感度是矩阵本身的固有特性,而不是矩阵求逆过程中舍入误差的结果。 即使当我们乘以完全正确的矩阵逆时,病态条件的矩阵会放大预先存在的误差。 在实践上,该错误将与求逆过程本身的数值误差进一步复合。
4.3 基于梯度的优化方法
大多数深度学习算法都涉及某种优化。 优化是指通过改变x来最小化或最大化某些函数
f
(
x
)
f(x)
f(x)的任务。 我们通常用最小化
f
(
x
)
f(x)
f(x)来表达大多数最优化问题。最大化可以经由最小化
f
(
x
)
f(x)
f(x)的最小化算法
−
f
(
x
)
-f(x)
−f(x)来实现。
我们要最小化或最大化的函数称为目标函数(objective function)或判断事务的标准(criterion)。 当我们最小化它时,我们也可以称其为代价函数(cost function),损失函数(loss function)或误差函数(error function)。 尽管某些机器学习著作赋予其中一些术语特殊含义,但在书中,我们可以交替使用这些术语。
我们通常用上标∗表示使函数最小化或最大化的值x。 例如,我们可以说
x
∗
=
a
r
g
m
i
n
f
(
x
)
x ^∗ = arg min f(x)
x∗=argminf(x)。
我们假设读者已经熟悉微积分,但是在这里简要介绍了微积分概念与优化的联系。
假设我们有一个函数
y
=
f
(
x
)
y = f(x)
y=f(x),其中两个x和y均为实数,该函数的导数(derivative)表示为
f
′
(
x
)
f'(x)
f′(x)或
d
y
d
x
\frac{dy}{dx}
dxdy。 导数
f
′
(
x
)
f'(x)
f′(x)在点x处给出斜率
f
(
x
)
f(x)
f(x)。 换句话说,它表明了如何缩放输入中的小变化以获得输出中的相应变化:
f
(
x
+
ϵ
)
≈
f
(
x
)
+
ϵ
f
’
(
x
)
f(x +\epsilon )≈f(x)+\epsilon f’(x)
f(x+ϵ)≈f(x)+ϵf’(x)。
因此,导数可用于最小化函数,因为它告诉我们如何更改x以来略微的改善y。 例如,我们知道足够小的
ϵ
\epsilon
ϵ来说,
f
(
x
−
ϵ
s
i
g
n
(
f
′
(
x
)
)
)
f(x-\epsilon sign(f'(x)))
f(x−ϵsign(f′(x)))比
f
(
x
)
f(x)
f(x)小。 因此,我们可以将 x 通过往导数的反方向移动一小步长来减少
f
(
x
)
f(x)
f(x)。此技术称为梯度下降(gradient descent)(柯西,1847)。 有关此技术的示例,请参见图4.1。
图4.1:梯度下降。 梯度下降算法如何使用函数的导数的图示,即将函数沿着下坡方向直到最小。