首页 > 其他分享 >Barzilai-Borwein(BB)方法

Barzilai-Borwein(BB)方法

时间:2023-03-25 15:35:35浏览次数:57  
标签:Barzilai frac Vert BB nabla 2f Borwein alpha

BB方法 ,即Barzilai-Borwein (BB) method 是梯度下降方法的一种,他主要是通过近似牛顿方法来实现更快的收敛速度,同时避免计算二阶导数带来的计算复杂度:

经典牛顿法:

首先,设$f(x)$二阶连续可微,则在迭代算法中第$k$步,$x_k$处泰勒展开:
$$f(x_k+d_k)=f(x_k)+\nabla f(x_k)^Td_k+\frac{1}{2}(d_k)^T\nabla^2f(x_k)d_k+o(\Vert d_k \Vert^2)$$
如果忽略高阶项,并将上面看成$d_k$的函数再丘其稳定点,则
$$\nabla^2f(x_k)d_k=-\nabla f(x_k)$$
于是,迭代的更新方法为:
$$x_{k+1}=x_k-\nabla^2f(x_k)^{-1}\nabla f(x_k)$$
这种方式称为牛顿法(经典).

拟牛顿法:

然而上述更新方法中国,每一次迭代都需要求解一次逆矩阵,这给计算带来了很大的复杂度。于是可以构造近似矩阵来替换迭代格式中的逆矩阵。

实际上:
$$\nabla f(x_{k-1}) = \nabla f(x_k)+\nabla^2f(x_k)(x_{k-1}-x_k)+o(\Vert x_{k-1}-x_k \Vert^2)$$
令$s_{k-1}=x_k-x_{k-1},y_{k-1}=\nabla f(x_k)-\nabla f(x_{k-1})$,再忽略上式高阶项,得:
$$\nabla^2f(x_k)s_{k-1}=y_{k-1}\text{或}s_{k-1}=\nabla^2f(x_k)^{-1}y_{k-1}$$
于是,此时需要构造一个近似矩阵$H_k$来近似$\nabla^2f(x_k)^{-1}$,且近似地满足:
$$H_k^{-1}s_{k-1}=y_{k-1}\text{或}s_{k-1}=H_ky_{k-1}$$

BB方法:

BB方法的思想就是基于拟牛顿法,实际上是将拟牛顿法中的近似矩阵$H_k$构造成$\alpha_kI$的形式(其中$I$为单位矩阵),那么近似地有:
$$\alpha_k^{-1}s_{k-1}=y_{k-1}\text{或}s_{k-1}=\alpha_ky_{k-1}$$
由于是近似,对于这两种情况,$\alpha_k$可以分别有如下求解形式:
$$\alpha_k^{-1}=\mathop{argmin}_{\beta}\frac{1}{2}\Vert \beta s_{k-1}-y_{k-1} \Vert^2 \Rightarrow \alpha_k^1=\frac{s_{k-1}^Ts_{k-1}}{s_{k-1}^Ty_{k-1}}$$
$$\alpha_k=\mathop{argmin}_{\alpha}\frac{1}{2}\Vert s_{k-1}-\alpha y_{k-1} \Vert^2 \Rightarrow \alpha_k^2=\frac{s_{k-1}^Ty_{k-1}}{y_{k-1}^Ty_{k-1}}$$

这就得到了BB方法的迭代格式:
$$x_{k+1}=x_k-\alpha_k\nabla f(x_k)$$
其中$\alpha_k$有两种选择$\alpha_k^1=\frac{s_{k-1}^Ts_{k-1}}{s_{k-1}^Ty_{k-1}}$和$\alpha_k^2=\frac{s_{k-1}^Ty_{k-1}}{y_{k-1}^Ty_{k-1}}$.
$(s_{k-1}=x_k-x_{k-1},y_{k-1}=\nabla f(x_k)-\nabla f(x_{k-1}))$

标签:Barzilai,frac,Vert,BB,nabla,2f,Borwein,alpha
From: https://www.cnblogs.com/wjma2719/p/17254818.html

相关文章

  • 重置RabbitMQ用户密码
    在/usr/sbin下执行rabbitmqctlset_user_tags用户名用户权限[root@rzksbin]#pwd/usr/sbin[root@rzksbin]#rabbitmqctlset_user_tagsxxxadministratorSet......
  • 【小沐学C#】WPF中嵌入web网页控件(WebBrowser、WebView2、CefSharp)
    1、简介使用WindowsPresentationFoundation(WPF),你可以创建适用于Windows且具有非凡视觉效果的桌面客户端应用程序。1.1WPF简介<fontcolor=blue>WPF的核心是......
  • RabbitMQ-消息丢失、重复、积压等解决方案
    高并发场景的分布式事务,我们采用柔性事务+可靠消息+最终一致性方案(异步确保型),可靠性是最重要的,那么如何保证消息的可靠性呢?一、消息丢失1、消息发送出去,由于网络问题没......
  • Dubbo自定义扩展点
    当我们需要在Dubbo框架中添加一些自定义的逻辑时,可以通过扩展点的方式来实现。Dubbo框架中提供了很多的扩展点,比如Protocol、Filter、LoadBalance等等。我们可以通过实现这......
  • docker容器安装RabbitMQ
    https://blog.csdn.net/qq_45502336/article/details/118699251?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-1......
  • RabbitMQ 03 直连模式-可视化界面
    这里先演示最简单的模型:直连模式。其结构图为:一个生产者->消息队列->一个消费者生产者只需要将数据丢进消息队列,而消费者只需要将数据从消息队列中取出,这样就实现了......
  • Dubbo概念与作用
    一、介绍Dubbo是一款高性能、轻量级的JavaRPC框架,它的目标是提供高性能和透明化的RPC远程服务调用方案,使得应用之间可以通过RPC协议相互调用,从而降低系统之间的耦合度,......
  • 【Eolink】Apikit V10.8.0 版本发布!增加支持 DUBBO、TCP、SOAP 、HSF、UDP 的接口协议
    Apikit 最新功能来袭!......
  • Linux-监控三剑客之Zabbix
    Zabbix一、Linux的常用的一些命令项目对应检查命令网站/业务/apicurl/wget服务systemctl/service/chkconfig(c6)进程ps/pstree/pgrep/pidstat/top/hto......
  • 根据投影坐标(x,y)计算bbox
    根据墨卡托投影坐标(x,y)计算该瓦片的对角线坐标bboximport*asolProjfrom'ol/proj';import{getTopLeft,getWidth}from'ol/extent';consttileWidth=256;......