一、上溢和下溢
一种毁灭性的舍入误差是 下溢(underflow)。当接近零的数被四舍五入为零时发生下溢。许多函数在其参数为零而不是一个很小的正数时才会表现出质的不 同。例如,我们通常要避免被零除(一些软件环境将在这种情况下抛出异常,有些会返回一个非数字 (not-a-number, NaN) 的占位符,比如python和MATLAB中)或避免取零的对数(这通常被视为 −∞,进一步的算术运算会使其变成非数字)。
另一个极具破坏力的数值错误形式是 上溢(overflow)。当大量级的数被近似为 ∞ 或 −∞ 时发生上溢。进一步的运算通常会导致这些无限值变为非数字。
必须对上溢和下溢进行数值稳定的一个例子是 softmax 函数(softmax func-tion)。softmax在机器学习中常用在输出层。定义为:
上面这个例子其实也告诉我们,可