牛顿迭代法(Newton's Method),亦称为牛顿-拉夫逊法(Newton-Raphson Method),是一种在实数域和复数域上近似求解方程的技巧,由17世纪的物理学家牛顿所提出。
此方法以物理学家艾萨克·牛顿(Isaac Newton)和数学家约瑟夫·拉夫逊(Joseph Raphson)的名字命名,其设计原理是一种求根算法。它的目标是找到函数 f(x) = 0 的解 x。在几何上,这可以理解为寻找函数图像与x轴的交点。
Newton-Raphson 算法不仅用于简单的计算,如预测在给定连续评估成绩后需要获得A的分数,还用于更复杂的场景,如使用Black-Scholes公式反向求解金融期权合约的隐含波动率。
虽然其公式看似简单,但理解其背后的工作原理需要深入探究。整体方法可以概括为以下步骤:
1. 对根的可能位置进行初步猜测。
2. 应用Newton-Raphson公式来获得更新的猜测值,该值将比前一个猜测更接近实际的根。
3. 重复第二步,直到新的猜测值足够接近真实值。
关于何时停止迭代的问题,通常有两种处理方法。一是当猜测值的变化量低于某个阈值时停止迭代;二是在达到一定数量的猜测后仍未达到阈值时放弃迭代。
从公式中我们可以观察到,每一次新的猜测都是基于前一次的猜测和某些特定计算进行调整得出的。通过具体的例子来可视化这个过程,可以更清晰地理解其工作原理。
以一个具体例子来说明,假设我们以 x=10 作为初始猜测(实际上根位于 x=4)。在 GIF 动画中,我们可以直观地看到 Newton-Raphson 算法的前几个猜测。
为了计算下一个猜测值,我们需要评估目标函数及其在初始猜测点处的导数。导数在这里表示的是该点处切线的斜率。这个切线在 GIF 动画中被标记为“Tangent 0”。你是否注意到下一个猜测值总是出现在前一个切线与 x 轴的交点上?这正是 Newton-Raphson 方法的独特之处。
实际上,f(x) / f'(x) 提供了我们当前猜测与切线与 x 轴交点之间的距离(仅在 x 方向上)。这个距离决定了每次更新的猜测值的大小,正如我们在 GIF 中所看到的那样,随着我们逐渐接近真实根,更新的幅度逐渐减小。
虽然上述例子中处理的是易于微分的函数,但在实际情况中可能并非如此简单。有一些技巧可以在不知道其解析解的情况下逼近导数。
细心观察的读者可能已经注意到,在上述示例中,Newton-Raphson 方法只能找到一个根。这是因为该方根据初始值的选择向某个值收敛。如果需要找到其他根,需要采用一些额外的方法。
值得注意的是牛顿迭代法并非没有缺点。它是一种迭代算法,每一步都需要求解目标函数的Hessian矩阵的逆矩阵,计算相对复杂。尽管它的收敛速度为二阶,对于正定二次函数可以在一步迭代内达到最优解,但它可能因初始点的选择不当导致不收敛或收敛速度变慢。Hessian矩阵必须可逆,否则算法将难以进行。
与梯度下降法相比,牛顿法在迭代求解中更注重二阶信息的使用。它不仅考虑了坡度是否够大,还会考虑走一步之后坡度是否会变得更大。这使牛顿法在收敛速度上具有优势。在高维情况下计算和存储Hessian矩阵都是问题。在小批量数据上,牛顿法对于二阶导数的估计可能受到噪声影响。当目标函数非凸时,牛顿法可能被鞍点或最大值点所吸引。
在深度网络等现代机器学习应用中,虽然梯度下降法在实际应用中常被使用,但其收敛性和解的精度仍有待深入研究和验证。特别是对于深层模型而言,过高的参数精度可能导致过拟合的风险增加。