[工程优化]牛顿法的缺陷及拟牛顿法(Newton‘s method):DFP\BFGS\L-BFGS【附python代码实现】

本文详细介绍了拟牛顿法,包括牛顿法的缺陷及其改进,如阻尼牛顿法和正则化海森矩阵。重点讲解了DFP、BFGS和L-BFGS三种拟牛顿法的实现原理,并提供了Python代码实现。DFP和BFGS方法基于海森矩阵的逆或本身进行逼近,而L-BFGS则是有限内存版本,适用于高维数据。文章还探讨了如何通过Sherman–Morrison公式简化计算。
摘要由CSDN通过智能技术生成


引用

Wikipedia:Quasi-Newton method

  • 下文中的出现的所有源代码,由于码云的链接非注册用户无法查看,因此备份了一下代码文件到Gist上。点此查看

Preliminaries

上一篇一样,要读懂这些内容,需要掌握以下内容:

梯度

  1. 对于一维函数 f ( x ) f(x) f(x),其导数定义为:
    f ′ ( x ) = lim ⁡ Δ x → 0 f ( x 0 + Δ x ) − f ( x 0 ) Δ x f'(x)=\lim \limits_{\Delta x \rightarrow 0} \frac{f(x_0+\small{\Delta} x)-f(x_0)}{\small{\Delta} x} f(x)=Δx0limΔxf(x0+Δx)f(x0)
  2. 对于多维函数 f ( x 1 , . . . , x n ) f(x_1,...,x_n) f(x1,...,xn),对 x i x_i xi求导数 d f d x i \frac{df}{dx_i} dxidf,将其记为偏导数 ∂ f ∂ x I \frac{\partial f}{\partial x_I} xIf。特别的,记录梯度 ▽ f ( x ) \triangledown f(x) f(x)或简记为 ▽ f \triangledown f f为对 x i x_i xi求偏导后的列向量:
    ▽ f ( x ) = ( ∂ f ∂ x 1 , ∂ f ∂ x 2 , . . . , ∂ f ∂ x 1 ) T \triangledown f(x)=(\frac{\partial f}{\partial x_1}, \frac{\partial f}{\partial x_2},..., \frac{\partial f}{\partial x_1})^T f(x)=(x1f,x2f,...,x1f)T

海森矩阵(Hessian matrix)

  1. 若存在 f : R n → R f:\R^n \rightarrow \R f:RnR,即一个多维输入 x ∈ R x\in\R xR到一维输出的映射,若其在任意维度上都二阶可导,则定义其海森矩阵:
    H = [ ∂ f 2 ∂ x 1 2 ∂ f 2 ∂ x 1 ∂ x 2 ⋯ ∂ f 2 ∂ x 1 ∂ x n ∂ f 2 ∂ x 2 ∂ x 1 ∂ f 2 ∂ x 2 2 ⋯ ∂ f 2 ∂ x 2 ∂ x n ⋮ ⋮ ⋱ ⋮ ∂ f 2 ∂ x n ∂ x 1 ∂ f 2 ∂ x n ∂ x 2 ⋯ ∂ f 2 ∂ x n 2 ] H = \begin{bmatrix} \frac{\partial f^2}{\partial x_1^2} & \frac{\partial f^2}{\partial x_1\partial x_2} & \cdots &\frac{\partial f^2}{\partial x_1 \partial x_n} \\ \frac{\partial f^2}{\partial x_2 \partial x_1} & \frac{\partial f^2}{\partial x_2^2} & \cdots &\frac{\partial f^2}{\partial x_2 \partial x_n} \\ \vdots & \vdots & \ddots& \vdots \\ \frac{\partial f^2}{\partial x_n \partial x_1} & \frac{\partial f^2}{\partial x_n\partial x_2} & \cdots &\frac{\partial f^2}{ \partial x_n^2} \end{bmatrix} H= x12f2x2x1f2xnx1f2x1x2f2x22f2xnx2f2x1xnf2x2xnf2xn2f2

显然 , H T = H H^T = H HT=H H H H 的尺寸为 n × n n\times n n×n

雅可比矩阵(Jacobian matrix)

若存在 f : R n → R m f:\R^n \rightarrow \R^m f:RnRm,即一个多维输入 x ∈ R n x\in\R^n xRn到多维输出 f ( x ) ∈ R m f(x)\in\R^m f(x)Rm的映射,则 f f f的雅可比矩阵:
J = [ ∂ f ∂ x 1 ∂ f ∂ x 2 ⋯ ∂ f ∂ x n ] = [ ∂ f 1 ∂ x 1 ⋯ ∂ f 1 ∂ x n ⋮ ⋱ ⋮ ∂ f m ∂ x 1 ⋯ ∂ f m ∂ x n ] \begin{aligned} J &= [ \frac{\partial f}{\partial x_1} \frac{\partial f}{\partial x_2} \cdots \frac{\partial f}{\partial x_n}] \\ &= \begin{bmatrix} \frac{\partial f_1}{\partial x_1} & \cdots & \frac{\partial f_1}{\partial x_n} \\ \vdots & \ddots & \vdots \\ \frac{\partial f_m}{\partial x_1} & \cdots & \frac{\partial f_m}{\partial x_n} \\ \end{bmatrix} \end{aligned} J=[x1fx2fxnf]= x1f1x1fmxnf1xnfm

显然,雅可比矩阵的尺寸为 n × m n \times m n×m J i j = ∂ f i ∂ x j J_{ij} = \frac{\partial f_i}{\partial x_j} J

  • 9
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值