用牛顿法求解无约束极值问题

一、牛顿法vs.梯度下降

牛顿法和梯度下降都是优化算法,用于寻找函数的最小值(或最大值),但它们在原理、收敛速度和适用场景上有显著不同。以下是它们的核心区别:

1. 基本思想

(1)梯度下降(Gradient Descent)

  • 目标:找到函数 f ( x ) f(x) f(x) 的最小值。

  • 方法:沿负梯度方向(最陡下降方向)迭代更新参数:
    x k + 1 = x k − α ∇ f ( x k ) x_{k+1} = x_k - \alpha \nabla f(x_k) xk+1=xkαf(xk)

    • ∇ f ( x k ) \nabla f(x_k) f(xk) 是梯度(一阶导数)。
    • α \alpha α 是学习率(步长),需手动设定。
  • 特点:

    • 只使用一阶导数(梯度)。
    • 适用于大规模数据(计算量小)。
    • 收敛速度较慢(线性收敛)。

(2)牛顿法(Newton’s Method)

  • 目标:同样寻找 f ( x ) f(x) f(x) 的最小值,但利用二阶导数信息。

  • 方法:在当前位置用二次函数近似 f ( x ) f(x) f(x),并直接跳到极小点:
    x k + 1 = x k − H − 1 ( x k ) ∇ f ( x k ) x_{k+1} = x_k - H^{-1}(x_k) \nabla f(x_k) xk+1=xkH1(xk)f(xk)

    • H ( x k ) H(x_k) H(xk) 是 Hessian 矩阵(二阶导数矩阵)。
    • H − 1 ( x k ) H^{-1}(x_k) H1(xk) 是 Hessian 的逆矩阵。
  • 特点:

    • 使用二阶导数(Hessian 矩阵)。
    • 收敛速度更快(二次收敛)。
    • 计算成本高(需计算和存储 Hessian 矩阵及其逆)。

2. 关键区别

特性梯度下降(Gradient Descent)牛顿法(Newton’s Method)
导数信息一阶(梯度)二阶(Hessian 矩阵)
更新公式 x k + 1 = x k − α ∇ f ( x k ) x_{k+1} = x_k - \alpha \nabla f(x_k) xk+1=xkαf(xk) x k + 1 = x k − H − 1 ∇ f ( x k ) x_{k+1} = x_k - H^{-1} \nabla f(x_k) xk+1=xkH1f(xk)
收敛速度线性收敛(较慢)二次收敛(更快)
计算复杂度低(仅需梯度)高(需 Hessian 矩阵及其逆)
适用场景大规模优化(如深度学习)小规模、精确优化(如数值计算)
步长调整需手动设定学习率 α \alpha α自动计算最优步长(Hessian 调整)
鲁棒性对初始点不敏感对初始点敏感,可能发散

3. 直观对比

(1)梯度下降

  • 像“盲人下山”:只感知当前最陡的方向(梯度),一步步往下走。
  • 缺点:
    • 如果学习率 α \alpha α 太大,可能震荡甚至发散。
    • 如果 α \alpha α 太小,收敛极慢。

(2)牛顿法

  • 像“用地图下山”:不仅知道当前坡度(梯度),还知道曲率(Hessian),能预测最低点并直接跳过去。
  • 优点:
    • 收敛极快(通常 5-10 步就能接近最优解)。
  • 缺点:
    • 计算 Hessian 矩阵及其逆矩阵成本高( O ( n 3 ) O(n^3) O(n3) 复杂度)。
    • 如果 Hessian 矩阵不正定(非凸函数),可能发散。

4. 适用场景

算法适用情况不适用情况
梯度下降- 高维数据(如深度学习)
- 计算资源有限
- 需要高精度解
- 函数曲率变化剧烈
牛顿法- 低维、光滑函数
- 需要快速收敛
- 高维数据(Hessian 计算困难)
- 非凸优化(可能发散)

5. 改进算法

由于牛顿法计算成本高,后续发展了一些改进方法:

  • 拟牛顿法(Quasi-Newton Methods)(如 BFGS、L-BFGS):用近似 Hessian 矩阵,避免直接计算逆矩阵。
  • 共轭梯度法(Conjugate Gradient):结合梯度下降和牛顿法的思想,适用于大规模优化。

总结

  • 梯度下降:简单、通用,适合大规模问题,但收敛慢。
  • 牛顿法:计算复杂,但收敛极快,适合小规模精确优化。
  • 实际应用:
    • 深度学习(参数多)→ 梯度下降或其变种(如 Adam)。
    • 数值优化(参数少)→ 牛顿法或拟牛顿法(如 BFGS)。

用牛顿法求解无约束极值问题

例题一

解: min ⁡ f ( X ) = x 1 2 + x 2 2 + x 3 2 , X ( 0 ) = ( 2 , − 2 , 1 ) T \min f(\mathbf{X}) = x_1^2 + x_2^2 + x_3^2, \mathbf{X}^{(0)} = (2, -2, 1)^T minf(X)=x12+x22+x32,X(0)=(2,2,1)T

∇ f ( X ) = ( 2 x 1 , 2 x 2 , 2 x 3 ) T , ∇ f ( X ( 0 ) ) = ( 4 , − 4 , 2 ) T \nabla f(\mathbf{X}) = (2x_1, 2x_2, 2x_3)^T, \nabla f(\mathbf{X}^{(0)}) = (4, -4, 2)^T f(X)=(2x1,2x2,2x3)T,f(X(0))=(4,4,2)T

因为 H ( X ( 0 ) ) = [ 2 0 0 0 2 0 0 0 2 ] H(\mathbf{X}^{(0)}) = \begin{bmatrix} 2 & 0 & 0 \\ 0 & 2 & 0 \\ 0 & 0 & 2 \end{bmatrix} H(X(0))= 200020002

所以 H ( X ( 0 ) ) − 1 = [ 1 2 0 0 0 1 2 0 0 0 1 2 ] H(\mathbf{X}^{(0)})^{-1} = \begin{bmatrix} \frac{1}{2} & 0 & 0 \\ 0 & \frac{1}{2} & 0 \\ 0 & 0 & \frac{1}{2} \end{bmatrix} H(X(0))1= 210002100021

X = X ( 0 ) − H ( X ( 0 ) ) − 1 ∇ f ( X ( 0 ) ) \mathbf{X} = \mathbf{X}^{(0)} - H(\mathbf{X}^{(0)})^{-1} \nabla f(\mathbf{X}^{(0)}) X=X(0)H(X(0))1f(X(0))

= [ 2 − 2 1 ] − [ 1 2 0 0 0 1 2 0 0 0 1 2 ] [ 4 − 4 2 ] = [ 0 0 0 ] = \begin{bmatrix} 2 \\ -2 \\ 1 \end{bmatrix} - \begin{bmatrix} \frac{1}{2} & 0 & 0 \\ 0 & \frac{1}{2} & 0 \\ 0 & 0 & \frac{1}{2} \end{bmatrix} \begin{bmatrix} 4 \\ -4 \\ 2 \end{bmatrix} = \begin{bmatrix} 0 \\ 0 \\ 0 \end{bmatrix} = 221 210002100021 442 = 000

目标函数的值为 f ( X ) = 0 2 + 0 2 + 0 2 = 0 f(\mathbf{X}) = 0^2 + 0^2 + 0^2 = 0 f(X)=02+02+02=0

验证结果:

  • 当前点 X 1 = ( 0 , 0 , 0 ) \mathbf{X}_1 = (0, 0, 0) X1=(0,0,0)

  • 计算梯度:
    ∇ f ( X 1 ) = [ 2 × 0 2 × 0 2 × 0 ] = [ 0 0 0 ] \nabla f(\mathbf{X}_1) = \begin{bmatrix} 2 \times 0 \\ 2 \times 0 \\ 2 \times 0 \end{bmatrix} \\ = \begin{bmatrix} 0 \\ 0 \\ 0 \end{bmatrix} f(X1)= 2×02×02×0 = 000
    梯度为零,说明 X 1 \mathbf{X}_1 X1 是极小值点。

  • 函数值:
    f ( X 1 ) = 0 2 + 0 2 + 0 2 = 0 f(\mathbf{X}_1) = 0^2 + 0^2 + 0^2 = 0 f(X1)=02+02+02=0
    这是全局最小值。

例题二

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值