牛顿法(Newton's Method)的原理与优化过程
题目描述
牛顿法是一种经典的二阶优化算法,用于寻找实数函数的零点或极值点。在机器学习中,它常用于最小化损失函数。与一阶梯度下降法不同,牛顿法利用函数的二阶导数(Hessian矩阵)信息,通过迭代逼近函数的最小值点。其核心思想是在当前点处用二次函数局部近似原函数,并求解该二次函数的极小值作为下一步迭代点。
解题过程
- 问题形式化
设目标函数 \(f: \mathbb{R}^d \to \mathbb{R}\) 是二阶连续可微的凸函数,需求解:
\[ \mathbf{x}^* = \arg\min_{\mathbf{x}} f(\mathbf{x}) \]
牛顿法通过构造二次泰勒展开来逼近 \(f(\mathbf{x})\)。
- 局部二次逼近
在当前点 \(\mathbf{x}_k\) 处,对 \(f(\mathbf{x})\) 进行二阶泰勒展开:
\[ f(\mathbf{x}) \approx f(\mathbf{x}_k) + \nabla f(\mathbf{x}_k)^\top (\mathbf{x} - \mathbf{x}_k) + \frac{1}{2} (\mathbf{x} - \mathbf{x}_k)^\top \mathbf{H}_k (\mathbf{x} - \mathbf{x}_k) \]
其中:
- \(\nabla f(\mathbf{x}_k)\) 是梯度向量(一阶导数)
- \(\mathbf{H}_k = \nabla^2 f(\mathbf{x}_k)\) 是Hessian矩阵(二阶导数)
- 求解二次函数极小值
对二次逼近函数求导并令导数为零:
\[ \nabla f(\mathbf{x}_k) + \mathbf{H}_k (\mathbf{x} - \mathbf{x}_k) = 0 \]
解得迭代更新公式:
\[ \mathbf{x}_{k+1} = \mathbf{x}_k - \mathbf{H}_k^{-1} \nabla f(\mathbf{x}_k) \]
这里 \(\mathbf{H}_k^{-1} \nabla f(\mathbf{x}_k)\) 称为牛顿步(Newton Step)。
-
算法步骤详解
- 步骤1:初始化起点 \(\mathbf{x}_0\) 和容差 \(\epsilon\)
- 步骤2:循环迭代直到 \(\|\nabla f(\mathbf{x}_k)\| < \epsilon\)
- 计算梯度 \(\nabla f(\mathbf{x}_k)\) 和Hessian矩阵 \(\mathbf{H}_k\)
- 解线性方程组 \(\mathbf{H}_k \mathbf{d}_k = -\nabla f(\mathbf{x}_k)\) 得到方向 \(\mathbf{d}_k\)
- 更新参数:\(\mathbf{x}_{k+1} = \mathbf{x}_k + \mathbf{d}_k\)
- 步骤3:输出最优解 \(\mathbf{x}^*\)
-
关键特性分析
- 收敛速度:在凸函数且初始点靠近最优解时,具有二次收敛速度(误差平方级减少)
- 计算复杂度:需计算并求逆Hessian矩阵,时间复杂度为 \(O(d^3)\),适用于中低维度问题
- 稳定性问题:若Hessian矩阵非正定,需采用修正策略(如正则化)
-
改进策略
- 阻尼牛顿法:引入步长 \(\alpha\),更新为 \(\mathbf{x}_{k+1} = \mathbf{x}_k - \alpha \mathbf{H}_k^{-1} \nabla f(\mathbf{x}_k)\)
- 拟牛顿法:用近似矩阵替代Hessian矩阵(如BFGS算法),避免直接计算二阶导数
总结
牛顿法通过二阶导数信息实现更精确的局部逼近,在满足凸性和正定条件时收敛极快,但需注意计算成本和数值稳定性。其在逻辑回归、神经网络训练等机器学习场景中有重要应用。