一、数值稳定性
- 在计算机中执行数学运算需要使用有限的比特位来表达实数,这会引入近似误差。 近似误差可以在多步数值运算中传递、积累,从而导致理论上成功的算法失败。因此数值算法设计时要考虑将累计误差最小化。
- 当从头开始实现一个数值算法时,需要考虑数值稳定性。当使用现有的数值计算库(如
tensorflow
)时,不需要考虑数值稳定性。 1.1 上溢出、下溢出 - 一种严重的误差是下溢出
underflow
:当接近零的数字四舍五入为零时,发生下溢出。 许多函数在参数为零和参数为一个非常小的正数时,行为是不同的。如:对数函数要求自变量大于零,除法中要求除数非零。 - 一种严重的误差是上溢出
overflow
:当数值非常大,超过了计算机的表示范围时,发生上溢出。 - 一个数值稳定性的例子是
softmax
函数。 设 ![一、数值稳定性 - 图1],则softmax
函数定义为:
当所有的 ![一、数值稳定性 - 图3] 。
考虑
考虑
为了解决
softmax
函数的数值稳定性问题,令 ![一、数值稳定性 - 图12] 个分量为:
当
当
当 ![一、数值稳定性 - 图22] 趋向于负无穷,因此存在数值稳定性问题。
通常需要设计专门的函数来计算
softmax
名字的来源是hardmax
。hardmax
把一个向量softmax
会在这些位置填充0.0~1.0
之间的值(如:某个概率值)。 1.2 ConditioningConditioning
刻画了一个函数的如下特性:当函数的输入发生了微小的变化时,函数的输出的变化有多大。 对于Conditioning
较大的函数,在数值计算中可能有问题。因为函数输入的舍入误差可能导致函数输出的较大变化。对于方阵 ![一、数值稳定性 - 图35] ,其条件数
condition number
为:
其中 ![一、数值稳定性 - 图37] 的特征值。
方阵的条件数就是最大的特征值除以最小的特征值。
- 当方阵的条件数很大时,矩阵的求逆将对误差特别敏感(即:
条件数是矩阵本身的特性,它会放大那些包含矩阵求逆运算过程中的误差。
文章列表
- AI算法工程师手册-一、基本知识
- AI算法工程师手册-一、数值稳定性
- AI算法工程师手册-一、概率与分布
- AI算法工程师手册-一、蒙特卡洛方法
- AI算法工程师手册-七、信息论
- AI算法工程师手册-三、MCMC 采样
- AI算法工程师手册-三、二阶导数与海森矩阵
- AI算法工程师手册-三、大数定律及中心极限定理
- AI算法工程师手册-三、矩阵运算
- AI算法工程师手册-二、向量操作
- AI算法工程师手册-二、期望和方差
- AI算法工程师手册-二、梯度下降法
- AI算法工程师手册-二、马尔可夫链
- AI算法工程师手册-五、常见概率分布
- AI算法工程师手册-五、拟牛顿法
- AI算法工程师手册-八、其它
- AI算法工程师手册-六、 约束优化
- AI算法工程师手册-六、先验分布与后验分布
- AI算法工程师手册-四、牛顿法
- AI算法工程师手册-四、特殊函数