信赖域方法

理解信赖域最好的途径是与线(一维)搜索对比,理解其区别.在ceres中,就提供了两种求解器,一种是基于信赖域的,一种是基于线搜索.
信赖域与线(一维)搜索之间的区别,可以用以下例子来理解;故事是这样的,永强头一天和王大拿约定第二天晚上一起喝酒,王大拿在山庄北边找一个店等永强,但是当时并没有说具体在哪家店.第二天永强从象牙山庄西边出发,去找王大拿.他有两种策略:一种是一维搜索,一种是信赖域.如果采用一维搜索的方案,永强已经确定了王大拿的方向(西北边),那他只要往那个方向走即可.一边走一边喊王大拿的名字,就可以确定走的距离,最终即可找到王大拿.如果采用信赖域的方案,永强首先划定一个10米的圆圈,在这个圈中找到里王大拿最近的地方(可以通过观察周边情况确定,如是否能看到周围有酒馆,是否是王大拿经常出没的地方等),然后不断画圈,最终把王大拿所在的酒馆找出来.

一,线搜索方法

在线搜索方法中, δ x = a k p k \delta x = a_kp_k δx=akpk 其中, a k a_k ak是一个数值,表示步长, p k p_k pk表示与状态量相同维度的向量.一般来说,首先要确定方向 p k = − ( B k ) − 1 ▽ f k p_k=-(B_k)^{-1}\triangledown f_k pk=(Bk)1fk. 根据 B k B_k Bk的不同, 线搜索分为如下三类

  1. B k = I B_k = I Bk=I 时,即为原始最陡梯度下降法
  2. B k = ▽ 2 f k B_k = \triangledown^2 f_k Bk=2fk, 即为牛顿法(若二阶导求不出来,用 ▽ f k T ▽ f k \triangledown f_k^T\triangledown f_k fkTfk来近似,则为高斯牛顿法)
  3. B k B_k Bk为对称正定矩阵,为拟牛顿法.

在确定完方向之后,如即采用最陡梯度下降法, p k = − ▽ f k p_k = -\triangledown f_k pk=fk. 下一步就是确定求步长 a k a_k ak. 当然我们希望目标函数:
M i n f ( x + δ x ) = M i n f ( x − a k ▽ f k ) Min f(x+\delta x) =Min f(x - a_k\triangledown f_k) Minf(x+δx)=Minf(xakfk)
当目标函数f为二阶时,上式是一个一元二次方程,可以求得其精确解;如 f ( x ) = 1 / 2 x 2 f(x) = 1/2x^2 f(x)=1/2x2, 有: p k = − x , a k = 1 p_k = - x, a_k = 1 pk=x,ak=1.
当然,我们会遇到目标函数不是二阶的时候,那我们很有可能求不出步长的精确解,不过没关系,优秀的革命前辈总结了四个经验性条件:Armijo条件,Curvature条件,Wolfe条件,Goldstein条件.符合这四个条件的步长,会是一个区间.在该区间中进行逐步二分,最终收敛.

二,信赖域方法

信赖域方法与线搜索方法的出发点不同,信赖域方法的得名即反应了其初衷:在一个可信赖的步长范围内,用另外一个函数去代替原始目标函数,求得在该范围内的一个极小值.我们首先以摄影测量中应用及其广泛的列文伯格马夸尔特(LM)算法给出样例,然后再给出标准信赖域方法的步骤.
在LM中,目标函数是 f ( x ) f(x) f(x), 在信赖域 ∣ δ x ∣ &lt; Δ k |\delta x|&lt;\Delta _k δx<Δk内,可以以其二阶泰勒展开作为其近似: m ( δ x ) = f ( x ) + f ′ δ x + 1 / 2 δ x T f ′ ′ δ x m(\delta x) = f(x) + f&#x27;\delta x + 1/2\delta x^Tf&#x27;&#x27;\delta x m(δx)=f(x)+fδx+1/2δxTfδx. 那么问题变为:
M i n m ( δ x ) = f ( x ) + f ′ δ x + 1 / 2 δ x T f ′ ′ δ x = f ( x ) + g T δ x + 1 / 2 δ x T B δ x Min m(\delta x) = f(x) + f&#x27;\delta x + 1/2\delta x^Tf&#x27;&#x27;\delta x = f(x) + g^T \delta x + 1/2\delta x^TB\delta x Minm(δx)=f(x)+fδx+1/2δxTfδx=f(x)+gTδx+1/2δxTBδx
s . t . ∣ δ x ∣ &lt; Δ k s.t. |\delta x|&lt;\Delta _k s.t.δx<Δk
可以看出,不管目标函数是几次,其二阶泰勒展开均为二次,根据KKT条件, m ( δ x ) m(\delta x) m(δx)有最优解,存在一个 λ \lambda λ, 满足:

  1. B + λ I = − g B + \lambda I = -g B+λI=g
  2. λ ( Δ − ∣ ∣ δ x ∣ ∣ ) = 0 \lambda (\Delta - ||\delta x||) = 0 λ(Δδx)=0
  3. B + λ I B + \lambda I B+λI正定.

B = J T J B = J^TJ B=JTJ, 则有: δ x = − ( J T J + λ I ) − 1 J T b \delta x = -(J^TJ + \lambda I)^{-1}J^Tb δx=(JTJ+λI)1JTb

参考:
1:https://www.codelast.com/原创信赖域trust-region算法是怎么一回事/
2:https://blog.csdn.net/fangqingan_java/article/details/46405669
3:https://www.processon.com/view/link/5cffa80ce4b0f1ac03704d14 线搜索方法
4:https://blog.csdn.net/fangqingan_java/article/details/46405669
5: https://blog.csdn.net/frozenspring/article/details/78898308

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

手持电烙铁的侠客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值