拟牛顿法公式推导以及python代码实现(一)

本文详细介绍了拟牛顿法的原理,包括其导出、优点和算法步骤。通过对称秩一校正公式和DFP算法的推导,展示了如何在不需要直接计算Hessian矩阵的情况下进行迭代优化。文章还提供了DFP算法的Python实现,用于解决无约束线性优化问题。
摘要由CSDN通过智能技术生成

目录

  1. 拟牛顿法
    1.1拟牛顿法的导出与优点
    1.2 算法步骤与特点
  2. 对称秩一校正公式
  3. DFP算法
    3.1 DFP公式推导
    3.2 要求解的问题
    3.3 python实现

1.拟牛顿法

1.1拟牛顿法的导出与优点

在上一文中(牛顿法公式推导与python实现),谈到说牛顿法需要计算一个Hessian矩阵的逆,才能够迭代,但在实际工程中,计算如此大型的矩阵需要很大的计算资源,因此,有人提出能否不计算Hessian矩阵,在迭代过程中,仅仅利用相邻两个迭代点以及梯度信息,产生一个对称正定矩阵,使之逐步逼近目标函数Hessian矩阵的逆阵。

其实这就是你牛顿法的基本思想,这样做,既能保存Hessian矩阵的大部分信息(曲率),也能极大的减小计算量。

考虑无约束极小化问题。假设目标函数 f:RnR f : R n → R 是二次连续可微的,那么 f ∇ f xk+1 x k + 1 处的泰勒展开为:

f(x)=f(xk+1)+2f(xk+1)(xxk+1)+o||xxk+1|| ∇ f ( x ) = ∇ f ( x k + 1 ) + ∇ 2 f ( x k + 1 ) ( x − x k + 1 ) + o | | x − x k + 1 | |
,取 x:=xk x := x k .当 xkxk+1 x k 与 x k + 1 充分接近时,有:
2f(xk+1)(xk+1xk)f(xk+1)f(xk) ∇ 2 f ( x k + 1 ) ( x k + 1 − x k ) ≈ ∇ f ( x k + 1 ) − ∇ f ( x k )
2f(xk+1) ∇ 2 f ( x k + 1 ) 就是 f(x) f ( x ) xk+1 x k + 1 处的Hessian矩阵,那么我们可以用它的近似矩阵 Bk+1 B k + 1 来代替它,得到如下等式:
Bk+1(xk+1xk)=f(xk+1)f(xk)(1) (1) B k + 1 ( x k + 1 − x k ) = ∇ f ( x k + 1 ) − ∇ f ( x k )
如该矩阵存在逆矩阵有:
Hk+1(f(xk+1)f(xk))=xk+1xk(2) (2) H k + 1 ( ∇ f ( x k + 1 ) − ∇ f ( x k ) ) = x k + 1 − x k
以上两个方程成为 拟牛顿方程(条件)。其中 Hk+1=2f(xk+1)1 H k + 1 = ∇ 2 f ( x k + 1 ) − 1 ,为Hessian的逆阵。

1.2 算法步骤与特点

拟牛顿法的算法步骤如下:

  1. 给出 x0Rn,H0Rnxn,0ϵ<1,k:=0 x 0 ∈ R n , H 0 ∈ R n x n , 0 ≤ ϵ < 1 , k := 0

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值