内容正文:
第6章 数值计算与最优化
计算的稳定性
数据的稳定性
性能的稳定性
病态条件数
梯度下降算法
优化算法的选择
计算的稳定性
数据的稳定性
性能的稳定性
病态条件数
梯度下降算法
优化算法的选择
理解计算的稳定性和数据的稳定性
理解模型性能的稳定性在深度学习中的意义
理解病态条件数的概念
掌握优化算法的方法
理解
理解
理解
掌握
学 习 目 标
LEARNING OBJECTIVES
初心至善 匠心育人
数值计算与最优化理论广泛应用于机器学习、工程设计、生产管理等领域。最优化理论与机器学习的联系十分紧密,机器学习中的模型训练可以看作最优化的过程,通过寻找最优参数,让模型的误差损失函数最小,寻找最优参数的方法被称为最优化方法。本章将分析深度学习领域常用的最优化方法及其原理,并深入学习数值计算与最优化的相关知识。
初心至善 匠心育人
6.1
计算的稳定性
初心至善 匠心育人
6.1 计算的稳定性
计算的稳定性是指模型运算性能的鲁棒性( Robustness )。大部分机器学习或者深度学习的最终的目标都可以归为极值优化问题或者求解线性方程组的问题。这两类问题,目前基本上都是基于离散数学和计算机的反复迭代更新来解决的。然而,对数字计算机来说实数无法在有限内存下精确表示,因此在计算机上进行涉及实数的精确计算是十分困难的。在计算机上实现连续数学的根本困难在于:需要通过有限数量的位模式来表示无限多的实数,这意味着,在计算机中表示实数时,会不可避免地引入近似误差,随着凑整误差的不断累积,最终会引起系统报错或者模型失效。本节将介绍机器学习中几种常见的计算稳定性风险。
初心至善 匠心育人
6.1.1 上溢和下溢
如果在设计算法时仅仅考虑理论上的可行性而忽略计算机计算时舍入误差的累积,算法最终很可能会在实践中失效。这是因为,计算机无法精确地表示实数造成的舍入误差,很容易引发溢出。溢出是指数据的值超出了数据类型本身的范围限制,即内容超过了容器的极限。溢出可以分为两类:上溢和下溢。
上溢( Overflow )是指大量级的数值被计算机近似为+∞或-∞的情形,这种情况下进一步的运算通常导致这些无限值变为非数字。
下溢( Underflow )是指接近0的浮点数值被计算机四舍五入为0时发生的溢出。例如,通常要避免被零除或避免取零的对数。
初心至善 匠心育人
6.1.1 上溢和下溢
由于在机器学习中经常会用到概率,而概率的区间通常在0和1之间,这使得机器学习更容易遇到下溢问题。许多函数在其参数为零而不是一个很小的正数时才会表现出质的不同。例如,通常要避免被零除或避免取零的对数(通常被视为-∞ )一些软件环境将在这种情况下抛出异常,有些会返回一个非数字(not-a-number)的占位符。
为了更直观地解释上溢与下溢,在这里通过两个简单的示例帮助大家进一步理解。
在构建神经网络时多个概率相乘的情况非常普遍,设, ,因此有:
初心至善 匠心育人
6.1.1 上溢和下溢
从上述示例可以看出,P的概率是一个极小的结果,而这仅仅是10个较小的概率相乘的结果,在大型网络中概率间的相互作用远远大于上述示例。在这种情况下计算机将无法分辨 0 和一个极小数之间的区别而造成下溢,最终导致模型直接失效。
上溢则经常发生于多个较大数的相乘中,目前主流的计算机是 64 位的,因此数值的上限并不高,较大数值间的相乘很容易出现超过计算机的上限的情况。参考如下示例:
进一步的运算通常导致这类数值由于舍入误差而近似成无限值的数字,进而变为非数字,导致模型失效。
初心至善 匠心育人
6.1.1 上溢和下溢
在实践中大家可能会遇到与如下类似的情形。
在求一个点到一条线的距离时,如果该点距离直线过近,舍入误差可能会使结果变成距离为0。一种简单可行的解决办法为,定义一个min函数,在函数中引入一个常数,在此假设该常数为10-5 ;当距离的值过小时,取min函数中的常数值作为距离的结果,即限定了点到直线的距离的最小值为10-5,这样便可以避免由舍入误差造成的下溢。
在实际应用中,还有很多其他的方法可以解决溢出问题,有兴趣的读者可以自行了解,此处不再赘述。
上溢和下溢都是由于计算机的数据容量有限造成的,并不是的算法本身的系统问题造成的。
初心至善 匠心育人
6.1.2 平滑与 0
在机器学习中,对计算的稳定性产生重大影响的事件除了下溢和上溢以外,还有许多其他情况,,例如在朴素贝叶斯(NaiveBayes)算法中可能会遇到某个事件发生的概率为0的情况,在连乘等式中,这会造成无论怎样最终结果都为0的情况,使得运算失去意义。朴素贝叶斯公式如下所示:
判别一个样本点属于事件的概率 为其各项特征属于事件的概率的乘积,假设此时下列任何一项等式的值为0时,整个乘式的值便为0:
这种情况下