信赖域算法与一维搜索算法的区别、联系
在Jorge Nocedal和Stephen J. Wright的《Numerical Optimization》一书的第2.2节介绍了解优化问题的两种策略-line search和trust region。本质上它们的作用都是在优化迭代过程中从当前点找寻下一点。它们的最大区别是先确定步长还是先确定方向。Line search方法先确定方向再确定步长。而trust region方法则先把搜索范围缩小到一个小的范围,小到能够用另一个函数(Model function)去近似目标函数(Objective function),然后通过优化这个model function来得到参数更新的方向及步长。在该书的第三和第四章分别着力介绍了line search和trust region方法,感兴趣可以进一步了解。
(https://blog.csdn.net/jinzhuojun/article/details/78007628)

最优化的目标是找到极小值点,在这个过程中,我们需要从一个初始点开始,先确定一个搜索方向 d ,在这个方向上作一维搜索(line search),找到此方向上的可接受点(例如,按两个准则的判定)之后,通过一定的策略调整搜索方向,然后继续在新的方向上进行一维搜索,依此类推,直到我们认为目标函数已经收敛到了极小值点。
这种通过不断调整搜索方向,再在搜索方向上进行一维搜索的技术被很多很多算法采用,也取得了很实际的工程意义,但是,我们非要这样做不可吗?有没有另外一种途径,可以不通过“调整搜索方向→进行一维搜索”的步骤,也能求得极小值点?当然有,这就是信赖域算法干的好事。
文章来源:http://www.codelast.com/
为了说明这两种途径所实现的算法的区别和联系,请允许我做一个可能不太恰当,但是比较形象的比喻:

上图表述的是:如果把求最优解的过程比喻为“造一个零件”的过程的话,那么,使用一维搜索的那些算法和信赖域算法就像是两种不同的工艺,它们分别使用不同的技术(一维搜索&信赖域方法)——即两种不同的材料作为达成最终目标的基础。

信赖域算法的基本思想

信赖域和line search同为最优化算法的基础算法,但是,从“Trust Region”这个名字你就可以看出,它是没有line search过程的,它是直接在一个region中“search”。
在一维搜索中,从 xk 点移动到下一个点的过程,可以描述为: xk+αkdk
此处 αkdk 就是在 dk 方向上的位移,可以记为 sk
而信赖域算法是根据一定的原则,直接确定位移 sk ,同时,与一维搜索不同的是,它并没有先确定搜索方向 dk 。如果根据“某种原则”确定的位移能使目标函数值充分下降,则扩大信赖域;若不能使目标函数值充分下降,则缩小信赖域。如此迭代下去,直到收敛。
文章来源:http://www.codelast.com/
关于这种寻优的方法,我这里又有一个比喻,希望能帮助你理解:

要从上海火车站去人民广场,有两种方法:
①可以先定一个方向,比如先向西走,走着走着发现方向有点不对(人民广场应该是时尚地标啊,怎么越走感觉越郊区了呢),就调整一下方向,变成向东南方向走,诸如此类。
②用信赖域算法,就比如,我先划一个圈,然后在这个圈里面找离人民广场可能最接近的点,如果我的圈划得太大了,一下子就划到了莘庄(不熟悉上海的同学可以查一下地图),我一步就走到了上海南站,那还得了,马上给我回来,把圈缩小到两个地铁站的距离之内,然后再在里面找离人民广场最近的点。

信赖域算法的数学模型

前面说了,根据一定的原则,可以直接确定位移,那么,这个原则是什么呢?
答:利用二次模型模拟目标函数 f(x) ,再用二次模型计算出位移 s 。根据位移 s 可以确定下一点 x+s ,从而可以计算出目标函数的下降量(下降是最优化的目标),再根据下降量来决定扩大信赖域或缩小信赖域。
那么,我该如何判定要扩大还是缩小信赖域呢?为了说明这个问题,必须先描述信赖域算法的数学模型:

文章来源:http://www.codelast.com/
第一个式子就是我们用于模拟目标函数的二次模型,其自变量为 s ,也就是我们要求的位移。 gk 为梯度, Gk 为Hesse矩阵,袁亚湘的书上说,如果Hesse矩阵不好计算,可以利用“有限差分”来近似 Gk (不好意思我不懂),或者用拟牛顿方法来构造Hesse矩阵的近似矩阵。
第二个式子中的 hk 是第 k 次迭代的信赖域上界(或称为信赖域半径),因此第二个式子表示的就是位移要在信赖域上界范围内。此外,第二个式子中的范数是没有指定是什么范数的,例如,是2-范数还是∞-范数之类的(在实际中都有算法用这些范数)。
文章来源:http://www.codelast.com/
现在又回到了上面的问题:我该如何判定要扩大还是缩小信赖域呢?通过衡量二次模型与目标函数的近似程度,可以作出判定:
第 k 次迭代的实际下降量为: Δfk=fk−f(xk+sk)
第 k 次迭代的预测下降量为: Δmk=fk−m(sk)
定义比值: rk=Δfk/Δmk
这个比值可以用于衡量二次模型与目标函数的近似程度,显然 r 值越接近1越好。
由此,我们就可以给出一个简单的信赖域算法了。

信赖域算法的步骤


最重要的一种信赖域算法:Levenberg-Marquardt算法

信赖域(Trust Region)相关推荐

  1. 数学知识-- 信赖域(Trust Region)算法是怎么一回事

    信赖域(Trust Region)算法是怎么一回事 转载自: https://www.codelast.com/原创信赖域trust-region算法是怎么一回事/ 如果你关心最优化(Optimiza ...

  2. 信赖域(Trust Region)算法

    文章来源:http://www.codelast.com/ 如果你关心最优化(Optimization),你一定听说过一类叫作"信赖域(Trust Region)"的算法.在本文中 ...

  3. 信赖域(Trust Region)算法和L-M算法

    近期在将样条数据进行公式化. 这时候发现多项高斯函数函数很好用,里面发现了两种优化高斯函数参数的算法一种是信赖域算法(Trust Region),另一种是L-M算法(Levenberg-Marquad ...

  4. 深度增强学习(DRL)漫谈 - 信赖域(Trust Region)系方法

    一.背景 深度学习的兴起让增强学习这个古老的机器学习分支迎来一轮复兴.它们的结合领域-深度增强学习(Deep reinforcement learning, DRL)随着在一系列极具挑战的控制实验场景 ...

  5. 【优化算法】信赖域折线(狗腿)法(Trust Region Dogleg Method)

    出发点 刘红英老师的最优化课程需要用到信赖域方法,求解问题并画图,网上找到的中文内容的矩阵实验室(MATLAB)信赖域折线(狗腿)法求解代码,都很繁琐,而且心理感觉不可靠(手动狗头),而且我没心思一点 ...

  6. 数值优化 Ch.4 信赖域方法

    目录 信赖域方法 信赖域方法概述 基于柯西点的算法 柯西点 为什么要改良柯西法 狗腿法 二维子空间极小化 全局收敛性 柯西点收益 平稳点的收敛性 子问题的迭代解法 困难的情况 定理4.1的证明 基于近 ...

  7. 信赖域算法-The Dogleg Method(含例题及Python实现)

    文章目录 前言 一.What is The Dogleg Method? 信赖域算法原理 Dogleg Method 方法 信赖域算法流程 二.How to use The Dogleg Method ...

  8. 数值优化-信赖域方法

    信赖域方法 除了之前讲过的线搜索方法,信赖域方法(trust region)也是数值优化中的一类重要的方法.在信赖域方法中我们需要定义一个信赖域,在这个信赖域中使用替代函数来代替原来的目标函数,通过优 ...

  9. matlab cg steihaug,信赖域(一):Cauchy Point与Dogleg

    信赖域(一):Cauchy Point与Dogleg 王金戈 从本文开始介绍优化方法的另一大类--信赖域方法. 基本思想 先回顾一下前面几篇文章介绍过的线搜索方法.在线搜索方法的每次迭代中,先确定一个 ...

最新文章

  1. 求方程ax^2+bx+c=0的根。
  2. thinkphp5 使用PHPExcel 导入导出
  3. java 线程不运行时间_java如何设置线程运行时间吗
  4. 被围绕的区域(dfs)
  5. android handler内存,Android handler之内存泄露原因揭示
  6. 团队管理---如何管理好团队
  7. 矩阵迹的性质_机器学习的数学基础 之 矩阵范数 — 我的长度我做主?
  8. 我们做了一款无网远程运维的智能硬件,坐等运维工程师“翻牌”
  9. 控制台应用程序中Main函数的args参数
  10. git多系统协作时换行符问题
  11. 小谈暴风影音并给个小建议
  12. 封装制作ghost xp,含加入域帐号配置迁移脚本。
  13. 仿真工具NS3的基本知识
  14. 【机智云专题】①:乐鑫esp8266巧用机智云自动代码生成功能,移植加入驱动单路继电器,实现智能定时插座。(附带demo)
  15. 西门子1200PLC模拟量测温案例1
  16. JAVA有percentile函数吗_Python numpy.percentile函数方法的使用
  17. javascript原生实现二级联动下拉菜单
  18. 吴恩达机器学习[9]-神经网络学习
  19. CFS调度时间片计算
  20. 微信小程序--超简单贪吃蛇

热门文章

  1. 微信小程序生成小程序二维码图片无法正常显示的问题
  2. Springboot乐器乐曲交易系统tw5iy计算机毕业设计-课程设计-期末作业-毕设程序代做
  3. 数据挖掘-实战记录(四)Echarts可视化
  4. 服务器连接mysql数据库,报错message from server: “Host xxx is not allowed to connect to this MySQL server“
  5. MINIS FORUM U820 黑苹果引导OC或CLOVER更新教程
  6. 2021年全球与中国重型卡车行业市场规模及发展前景分析
  7. okcc呼叫中心如何隐藏号码?
  8. 四种RS485防雷保护接地电路
  9. 去掉 java 安全警告_Win10打开文件时安全警告怎么关闭
  10. 1000以内完数、100以内质数 java