机器学习中需要大量的数值运算,通常指的是迭代更新求解数学问题。常见的操作包括优化算法和线性方程组的求解。
1-溢出
- 下溢:由于计算机进行数值计算时精度有限,下溢是在四舍五入为零时发生。例如:当零做除数时,会返回非数值( ),对零取对数则会得到
- 上溢:当大数量级的数被近似为”
”时,进一步的运算容易导致返回(
)
对上溢和下溢需要进行数值稳定,例如 函数:
若
是都是很小的负数,
会发生下溢,分母会变为0,则最后的结果会是NaN。当
是很大的正数,
h会发生上溢,同样会导致结果未定义。这两种情况都可以通过
来解决。
的最大值为0,且相当于分子分母同时除以
,并不会影响
的结果。
还有个小问题:在计算
时,如果先计算
,载将其传给
,分子的下溢就会导致
。因此需要以数值稳定方式同时计算
:
2-病态条件
条件数用于表征当输入发生微小变化时,函数变化的快慢程度。
例如:
具有特征分解时,条件数为:
,条件数较大时,求逆对于输入误差特别敏感。
这是矩阵本身的特性,与计算机精度无关。
3- 基于梯度下降的优化
优化是指通过改变
来最大化或最小化函数
.在深度学习中,通常都是用最小化函数拉进行优化,对于最大化任务则可以通过最小化
来完成。 表示为:
可以称之为 目标函数( ),或者准则( ), 在最小化任务中还可以称之为 损失函数( )、代价函数( )或误差函数( )。
函数的导数: 时, 称为临界点( )或驻点( ),这些点有可能是局部极小点、局部极大点或者鞍点。
g
其中 为学习率(learning rate),用于确定更新的步长大小。可以通过线搜索的方式选择合适的学习率,即根据几个备选 最终所得到的目标函数的最小值,选择结果最小的那个。