(笔记—深度学习):Chapter4-数值计算

  机器学习中需要大量的数值运算,通常指的是迭代更新求解数学问题。常见的操作包括优化算法和线性方程组的求解。

1-溢出

  • 下溢:由于计算机进行数值计算时精度有限,下溢是在四舍五入为零时发生。例如:当零做除数时,会返回非数值( n o t   a   n u m b e r , N a N ),对零取对数则会得到
  • 上溢:当大数量级的数被近似为” + , ”时,进一步的运算容易导致返回( N a N
    对上溢和下溢需要进行数值稳定,例如 s o f t m a x 函数:
    s o f t m a x ( x i ) = e x p ( x i ) j = 1 n e x p ( x j )

  若 x i 是都是很小的负数, e x p ( x i ) 会发生下溢,分母会变为0,则最后的结果会是NaN。当 x i 是很大的正数, e x p ( x i ) h会发生上溢,同样会导致结果未定义。这两种情况都可以通过 s o f t m a x ( z ) , z i = x i m a x ( x i ) 来解决。 z i 的最大值为0,且相当于分子分母同时除以 e x p ( m a x ( x i ) ) ,并不会影响 s o f t m a x 的结果。
还有个小问题:在计算 l o g s o f t m a x ( x ) 时,如果先计算 s o f t m a x ( x ) ,载将其传给 l o g ( x ) ,分子的下溢就会导致 l o g ( 0 ) = 。因此需要以数值稳定方式同时计算 l o g s o f t m a x

l o g s o f m a x ( z i ) = z i l o g ( j n e x p ( z j ) )

2-病态条件

条件数用于表征当输入发生微小变化时,函数变化的快慢程度。
例如: f ( x ) = A 1 x , A R n × n 具有特征分解时,条件数为: m a x | λ i / λ j | ,条件数较大时,求逆对于输入误差特别敏感。
这是矩阵本身的特性,与计算机精度无关。

3- 基于梯度下降的优化

  优化是指通过改变 x 来最大化或最小化函数 f ( x ) .在深度学习中,通常都是用最小化函数拉进行优化,对于最大化任务则可以通过最小化 f ( x ) 来完成。 表示为:

x = a r g m i n f ( x ) .

f ( x ) 可以称之为 目标函数( o b j e c t   f u n c t i o n ),或者准则( c r i t i o n ), 在最小化任务中还可以称之为 损失函数( l o s s   f u n c t i o n )、代价函数( c o s t   f u n c t i o n )或误差函数( e r r o r   f u n c t i o n )
函数的导数: f ( x ) = 0 时, x 称为临界点( c r i t i c a l   p o i n t )或驻点( s t a t i o n a r y   p o i n t ),这些点有可能是局部极小点、局部极大点或者鞍点。
g
x = x ϵ x f ( x )

其中 ϵ 为学习率(learning rate),用于确定更新的步长大小。可以通过线搜索的方式选择合适的学习率,即根据几个备选 ϵ 最终所得到的目标函数的最小值,选择结果最小的那个。

Jacobian矩阵和Hessian 矩阵

猜你喜欢

转载自blog.csdn.net/qq_35588560/article/details/79037766