拟牛顿法

8 篇文章 0 订阅

1. 考虑一个一次直线函数 y = kx
显然 y' = k
而任何两个点(x0, y0), (x1,y1)
有 y1 - y0 = y'*(x1-x0)


2. 考虑一个二次曲线函数 y = kx²
显然 y' = 2kx
这个是一个一次直线函数,
所以对于 y'' = 2k
所有有 y'(x1) - y'(x0) = y''*(x1-x0)
在二次曲线求最小值的时候, 我们需要求y'=0处的点, 
上面,设y'(x1) = 0 则
y'(x0) - 0 = y''*(x0-x1)
x0 - x1 = 1/y'' * y'(x0) 即是 △x = 1/y'' * y'(x0)
可见取步长为1, 则直接可得到x1, 使得f'(x1) = 0
所以, 二次曲线上任一点,其和极值点的连线斜率等于该点的二阶导数(常数)乘以两点的x之差。
所以二阶导数乘以△x为斜率所表示的直线直接就指向了极值点。
这个方向就叫做“牛顿方向”.

3. 对于多元的函数而言, 二阶导数应该用海森矩阵(Hessian Matrix)H, 而上面的1/y''则使用矩阵的逆.
由于实际需要计算的函数并不是精确的二次函数, 而是只是我们用了一个二次函数来逼近,
所以实际上一步是不会得到最小值的, 而只是逼近了最小值,所以需要多轮计算。
同样的道理, 我们在进行新一轮计算的时候,原来的H(和它的逆)也失效了, 需要重新计算。
这样, 计算H和它的逆就成了一个巨大的负担。

4. 为了缓解计算H的负担, 我们可以对H也使用一个近似值,因为反正即使是精确的H逆,得到的也只是近似的逼近。
 然后, 在多轮的迭代之后, 会逐渐逼近真实的H逆, 同时所求的变量也逐渐逼近了极值,
 我们期望它们最后都同时取得足够的精度,从而得到所求的极值。
 由于并非使用真实的H逆, 所以这种方法叫做“拟牛顿法”。
 H逆在迭代中需要满足的条件, 则称为“拟牛顿条件”。

5. 计算H逆迭代方法中最著名的是BFGS(Broyden-Fletcher-Goldfarb-Shanno)算法.
   

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值