机器学习中的数值解

2025年6月24日 | 阅读 8 分钟

机器学习 (ML) 的根本在于应用数学模型从数据中获取洞察。这些数学模型和复杂方程很少能以解析解的形式得出,因此必须利用数值逼近。数值方法提供的近似解包括了优化、回归、分类、聚类和深度学习问题的解决方案,当精确解不必要、不切实际或仅仅不可能时。

为什么它很重要?

由于不可能得到封闭形式的解,数值解在开发基于更复杂的真实世界数据的机器学习模型方面起着至关重要的作用。对近似数值解的需求源于分析方法在处理非线性、有噪声和高维数据时的不足。优化问题很常见,因为您想要最大化或最小化一个损失函数,但对于简单的问题,解析解才是可能的。

当问题变得更复杂时,例如在深度神经网络和支持向量机中,分析要么计算成本高昂,要么不足。数值逼近方法有助于解决使用迭代解找到最优值的难题。

重要的数值方法

有各种类型的数值方法为优化、参数估计和处理大型数据集等任务提供了基础。以下是一些方法:

01. 梯度下降

梯度下降是机器学习中一种重要的数值优化方法。它通过沿着损失函数的负梯度方向更新模型参数来最小化损失函数,从而最小化预测误差,以找到近似最小值。许多机器学习模型,如神经网络、逻辑回归和线性回归,都依赖于优化,因此梯度下降很有用。梯度下降有三种类型。批量梯度下降在整个数据集上计算梯度(平均斜率),为大型数据集提供了一个稳定但计算量大的解决方案,因为它在每次迭代中使用整个数据集。

随机梯度下降 (SGD) 在逐个评估数据点的损失函数后应用更新,因此内存负担要小得多,计算速度也更快,但参数更新中会引入噪声。小批量梯度下降使用小批量数据上的更新来形成解决方案,从而在比 SGD 更新更稳定的同时,比批量梯度下降在整个数据集上的更新更快,从而形成一个折衷的解决方案。

02. 优化算法

优化算法对于解决复杂、非线性问题至关重要,尤其是在梯度下降不是合适方法时。优化方法提供了多种好处,包括允许模型更快地收敛,或者使优化问题得以解决,其中需要二阶信息来计算凸函数的最佳解。牛顿法可以利用二阶导数和海森矩阵来实现非常快速的收敛。

然而,对于较大的数据集,它的计算成本非常高。计算负担的一个解决方案是共轭梯度法,这是一种共轭方向上的线性系统高效迭代方法,可以减少计算时间。拟牛顿法是任何类似于牛顿法但用海森矩阵的近似值代替二阶信息的任何方法。常见的拟牛顿方法是 BFGS(Broyden-Fletcher-Goldfarb-Shanno)及其变体 L-BFGS(Limited Memory BFGS)。

拟牛顿方法比牛顿方法更具计算效率,是备受推崇的优化方法,BFGS/L-BFGS 可在逻辑回归或其他大规模优化问题中发挥良好作用。

03. 数值积分

对于概率性且具有明确概率分布的机器学习模型,例如在贝叶斯方法中,我们经常需要数值积分。我们处理的大多数概率模型都必须计算似然或后验分布,而这些计算没有封闭形式的解。在数值方法中,蒙特卡罗积分很受欢迎。蒙特卡罗积分使用随机采样来估计积分,这对于高维积分非常有效。

我们经常使用蒙特卡罗积分,尤其是在贝叶斯推理和马尔可夫链蒙特卡罗 (MCMC) 模拟中。存在经典的数值积分方法,如辛普森法则和梯形法则,您可能已经学习过它们用于连续函数。这些方法对于许多复杂的机器学习问题,尤其是涉及分布的问题,并非特别有用,因为这些技术需要比所采取样本更简单的结构。

04. 根查找方法

根查找方法对于在回归和分类模型中查找模型参数很重要,其中求解方程是实现模型性能的核心。二分法代表了一种简单的区间套方法,它通过反复二分区间来定位根。虽然易于实现,但收敛速度很慢。因此,它最适合于精度比速度更重要的根查找场景。

牛顿-拉夫逊方法收敛速度要快得多,因为它考虑了函数的导数;然而,该方法对初始猜测非常敏感,不良的初始猜测可能导致该方法发散到不太优的结果。割线法在牛顿-拉夫逊法的基础上进行了改进,增加了不需要二阶导数的优点;与二分法相比,它的计算成本较低,同时仍能获得比二分法更快的速度。

现在我们将进行优化算法以查找数值解。首先,一条简单的曲线有助于可视化。作为说明,可以考虑函数( (x - 2)^2 )的图,将其视为损失函数的直观示例。该图描绘了梯度下降算法逐步逼近函数最小值的过程。

代码

输出

Numerical Solutions in Machine Learning

让我们想象选择曲线上的一点,其中 ( x = -10 ) 是我们的起点。假设我们的学习率为 ( a = 0.1 ) 且 ( epsilon = 0.01 )。梯度等于零的点称为驻点。在这两个点上,函数都没有提供有关函数行为的信息,因此一旦算法到达驻点,我们就可以停止迭代过程。每次迭代中值与更新值之间的差最终会小于 epsilon,表示收敛并达到最终值。

代码

输出

Numerical Solutions in Machine Learning

让我们想象选择曲线上的一点,其中 ( x = -10 ) 是我们的起点。假设我们的学习率为 ( a = 0.1 ) 且 ( epsilon = 0.01 )。梯度等于零的点称为驻点。在这两个点上,函数都没有提供有关函数行为的信息,因此一旦算法到达驻点,我们就可以停止迭代过程。每次迭代中值与更新值之间的差最终会小于 epsilon,表示收敛并达到最终值。

代码

输出

Numerical Solutions in Machine Learning

在每次迭代过程中,算法都会修改参数值并缓慢收敛到底部。函数的绝对最大值和最小值分别称为全局最大值和全局最小值。其他驻点称为局部最大值点和局部最小值点。梯度下降的目标是达到全局最小值,但也有可能该过程会落入局部最小值。

函数可以有多个全局最小值和最大值,称为极值。此外,0 梯度并不总是保证存在极值,因为还有鞍点,它们的梯度为 0 或接近 0,但不是最优值。这一系列事件会使优化问题更加困难,许多研究人员已经研究了改进优化问题的方法。

“小批量梯度下降”这个术语指的是,在每次迭代中,我们随机选择一个数据子集,而不是使用单个数据点。小批量梯度下降的工作方式是,我们计算每个子集的梯度,然后算法沿着梯度的相反方向更新参数。这种相对于每次迭代的随机过程降低了每次迭代的计算成本,但可能产生有噪声的梯度估计,从而导致在最小值附近出现振荡。

为了说明随机梯度下降 (SGD) 和小批量 SGD 之间的区别,可以考虑在绘制它们各自的梯度路径图,同时给定随机样本数据。下图指示了 SGD 和小批量 SGD 在收敛到最小值时的行为,绘制了两个子图。在子图中,可以显示损失函数的等高线,这些等高线可以解释为 2D 图上绘制的 3D 曲面的常见表示。

代码

输出

Numerical Solutions in Machine Learning

数值方法是机器学习的支柱,尽管存在必须解决的挑战,这些挑战与计算时间和资源、数值稳定性和算法收敛性有关。在高维数据集和非线性模型在更复杂的设置中,这些挑战会加剧,并需要开发先进的优化技术、随机方法和数值线性代数。

未来的研究方向将侧重于提高收敛速度、最小化计算成本和提高收敛率的研究;以及开发混合分析方法以提高性能。分布式计算和量子计算都有可能从根本上改变找到数值解的方式和速度,并为海量数据集提供强大的处理能力。