数值优化-信赖域方法
信赖域方法
除了之前讲过的线搜索方法,信赖域方法(trust region)也是数值优化中的一类重要的方法。在信赖域方法中我们需要定义一个信赖域,在这个信赖域中使用替代函数来代替原来的目标函数,通过优化替代函数来优化目标函数。本文和书中一致,采用二次函数来作为替代函数(model function mkm_kmk)。mkm_kmk是原函数fff在xkx_kxk这点处的泰勒级数展开。
f(xk+p)=fk+gkTp+12pT∇2f(xk+tp)pf(x_k+p)=f_k+g^T_kp+\frac{1}{2}p^T \nabla^2f(x_k+tp)p f(xk+p)=fk+gkTp+21pT∇2f(xk+tp)pmk(p)=fk+gkTp+12pTBkpm_k(p)=f_k+g^T_kp+\frac{1}{2}p^TB_kp mk(p)=fk+gkTp+21pTBkp
信赖域大小调节
既然有了信赖域,我们就需要定义信赖域的大小。我们需要使用一个评判标准来告知信赖域的设定是否合理,我们使用ρk\rho_kρk来判断。
ρk=f(xk)−f(xk+pk)mk(0)−mk(pk)\rho_k=\frac{f(x_k)-f(x_k+p_k)}{m_k(0)-m_k(p_k)} ρk=mk(0)−mk(pk)f(xk)−f(xk+pk)
分子为实际减小量,分母为预测减小量。当两者越接近1说明替代函数的效果越好。当信赖域大小导致不好的时候,需要减小信赖域,信赖域效果很好的时候需要增加信赖域范围。
优化替代函数问题
在信赖域方法中,我们需要对子问题进行求解。
求解这类问题可以求解精确解或者求解近似解。
精确解
当上述的条件符合时,4.8b只有两种可能,λ=0\lambda=0λ=0或者∇−∥p∗∥=0\nabla-\left\| p^*\right\|=0∇−∥p∗∥=0。假设子问题的解在信赖域内,那么只可能是λ=0\lambda=0λ=0。此时我们有Bp∗=−gBp^*=-gBp∗=−g(B是半正定的)。当另一种情况时∇−∥p∗∥=0\nabla-\left\| p^*\right\|=0∇−∥p∗∥=0,可以得到λp∗=−Bp∗−g=−∇m(p∗)\lambda p^*=-Bp^*-g=-\nabla m(p^*)λp∗=−Bp∗−g=−∇m(p∗),此时解的方向和m的负梯度方向是相同的。
近似解
cauchy point
:cauthy point 这个点就是mk在最速下降方向上的最小值,同时受到信赖域的约束。
第一个方法是dogleg
方法,使用dogleg方法的前提是B必须是正定的。第二个方法是two-dimensional subspace minimization
,当B不是正定时也可以使用。
在这里和前面不同的是我们并没有使用泰勒展开中的二次项,而是只展开到了一次项。所以说这是一个近似的解。引进τk\tau_kτk的目的是为了保证信赖域的约束,并且使得mk(τpks)m_k(\tau p^s_k)mk(τpks)在置信域内有最小值。(4.9)问题的解是pkc=−τkΔk∥gk∥gkp^c_k=-\tau_k \frac{\Delta_k}{\left\| g_k \right\|}g_kpkc=−τk∥gk∥Δkgk。我们需要讨论gkTBkgk≤0g^T_k B_k g_k \leq0gkTBkgk≤0和gkTBkgk>0g^T_k B_k g_k >0gkTBkgk>0的情况。
τk={1if gkTBkgk≤0min(∥gk∥3/(ΔkgkTBkgk),1)otherwise \tau_{k}= \begin{cases}1 & \text { if } g_{k}^{T} B_{k} g_{k} \leq 0 \\ \min \left(\left\|g_{k}\right\|^{3} /\left(\Delta_{k} g_{k}^{T} B_{k} g_{k}\right), 1\right) & \text { otherwise }\end{cases} τk={1min(∥gk∥3/(ΔkgkTBkgk),1) if gkTBkgk≤0 otherwise
初看这个式子可能不太清楚其由来,其实是二次函数求极值的问题的解。当第一种情况时,函数随着τ\tauτ单调递减,为了在信赖域以内,我们能取的最大的τ\tauτ为1。另一种情况时,需要代入τpks\tau p^s_kτpks到函数中去,求导数令其等于零。,可以解出τ=∥gk∥3ΔkgkTBgk\tau=\frac{\left\| g_k \right\|^3}{\Delta_kg_k^TBg_k}τ=ΔkgkTBgk∥gk∥3,当这个值大于了信赖域边界时不能直接取这个值,此时导数恒小于零,函数单调递减,所以τ\tauτ取值为1。
dogleg method
当B是正定的时候,我们可以比较简单的知道,无约束最小化函数值的m为pB=−B−1gp^B=-B^{-1}gpB=−B−1g。当这个点是可达的时候,这是问题的解
p∗(Δ)=pB,whenΔ≥∥pB∥p^*(\Delta)=p^B,\quad when \,\Delta \geq \left\| p^B \right\| p∗(Δ)=pB,whenΔ≥∥∥pB∥∥
当Δ\DeltaΔ的值比pBp^BpB小很多的时候,我们忽略二次项,得到一个近似的解
p∗(Δ)≈−Δg∥g∥,whenΔissmallp^*(\Delta)\approx-\Delta\frac{g}{\left\| g \right\|}, \quad when\,\Delta \,is\,small p∗(Δ)≈−Δ∥g∥g,whenΔissmall
当Δ\DeltaΔ的值属于中等大小的时候,dgoleg方法使用两个路径合起来来寻找近似最优解。
第一条线是从起始点到最速下降方向的最小点。
pU=−gTggTBggp^U=-\frac{g^Tg}{g^TBg}g pU=−gTBggTgg
第二条是从pUp^UpU到pBp^BpB,我们把总的轨迹用下列公式表示
p~(τ)={τpU0≤τ≤1pU+(τ−1)(pB−pU)1≤τ≤2\begin{equation} \tilde{p}(\tau)= \begin{cases} \tau p^U \quad 0\leq\tau\leq1\\ p^U+(\tau-1)(p^B-p^U)\quad 1\leq\tau\leq2 \end{cases} \nonumber \end{equation} p~(τ)={τpU0≤τ≤1pU+(τ−1)(pB−pU)1≤τ≤2
书中这里讲的不是很详细,我看了一篇博客讲的不错,链接放到文末了。
参考资料
①:Numerical Optimization
②:暴力拆解《Numerical Optimization》之信任域方法(下)——Dogleg(狗腿方法)_xiaopihaierletian的博客-CSDN博客
数值优化-信赖域方法相关推荐
- 数值优化 Ch.4 信赖域方法
目录 信赖域方法 信赖域方法概述 基于柯西点的算法 柯西点 为什么要改良柯西法 狗腿法 二维子空间极小化 全局收敛性 柯西点收益 平稳点的收敛性 子问题的迭代解法 困难的情况 定理4.1的证明 基于近 ...
- 最小二乘优化整理(信赖域方法)
信赖域方法和线搜索类似都是迭代方法,与其不同的是,每次迭代时,在一个选定的可信赖区域内,选择当前迭代点的近似模型 mkmk ,然后计算最优步长:如果步长不合适,可以对区域进行缩放.该小结主要介绍: 信 ...
- matlab中信赖域法,第8讲信赖域方法.ppt
第8讲信赖域方法 3.6 信赖域方法( Trust-Region Methods) * 基本思想 线性搜索与信赖域方法的联系 信赖域方法思想 信赖域半径的选择 信赖域算法 信赖域方法的收敛性 解信赖域 ...
- 迭代求解最优化问题——信赖域方法
信赖域方法 前面提到了Line Search算法分为两步,首先确定方向,然后确定步长,实际上是假设近似模型在某一方向上可以较好的代表真实模型.Trust region算法则在此基础上,假设在一个选定的 ...
- 基于Dogleg思想和精确Hessian的信赖域方法及实例(附MATLAB程序)
关于信赖域方法的完整介绍,请参照博客信赖域方法. 优化问题简介 此处我们简要介绍理论计算: 给定无约束优化问题minx∈Rnf(x),\min\limits_{x\in \mathbb{R}^n}f ...
- 最优化理论——信赖域方法
最优化理论--信赖域方法 算法思想 算法步骤 子问题 算法步骤 代码 示例 原问题代码 示例 算法思想 算法步骤 子问题 算法步骤 代码 function [d,val,lam,k]=trustq(g ...
- 信赖域狗腿(dogleg)方法
信赖域狗腿方法 信赖域方法(Trust-region methods)又称为TR方法,它是一种最优化方法,能够保证最优化方法总体收敛.现今,信赖域算法广泛应用于应用数学.物理.化学.工程学.计算机科学 ...
- 数值最优化—无约束问题信赖域算法
目录 一.参考 二.线性搜索与信赖域算法区别 三.信赖域算法 四.信赖域子问题的求解 1. 精确求解方法 2. 折线方法(Dogleg Method 狗腿法) 一.参考 <数值最优化算法与理论& ...
- 【优化算法】信赖域折线(狗腿)法(Trust Region Dogleg Method)
出发点 刘红英老师的最优化课程需要用到信赖域方法,求解问题并画图,网上找到的中文内容的矩阵实验室(MATLAB)信赖域折线(狗腿)法求解代码,都很繁琐,而且心理感觉不可靠(手动狗头),而且我没心思一点 ...
最新文章
- NB-IOT: Anchor Carrier 锚点载波
- Xamarin XAML语言教程使用Xamarin Studio创建XAML(二)
- 一些来自STL的好东西
- C# winform post请求数据
- cad在曲线上一点画垂线lisp_【每日问答24】pdf转CAD的第一种方法(内含往期)
- 语音识别概念午后大跌 语音识别概念股一览表
- windows连接linux共享文件夹,windows访问linux共享文件夹
- SQL Server 数据库学习
- mysql jemalloc_jemalloc优化MySQL、Nginx内存管理
- Minimax博弈算法设计井字棋AI(Golang)
- echart曲线图的使用
- 人机大战三周年:围棋界发生了哪些巨变?
- excel常用快捷键详解
- python-LASSO回归模型
- php 直接显示缩略图,PHP自动生成缩略图函数的源码示例
- 第一章 开启网络安全态势感知的旅程
- 2021最新CSGO国服能取回皮肤的国内开箱网站大全
- 学板绘的绘画技能提升步骤?
- 简单工厂和抽象工厂区别
- 【鉴黄师赞美】工夫.av:看到最后我默默地穿上了裤子
热门文章
- php 防止爬虫,服务器反爬虫攻略:Apache/Nginx/PHP禁止某些User Agent抓取网站
- 一个专科生学习JAVA目标月薪2万是否不切实际? 1
- java基础巩固-宇宙第一AiYWM:为了维持生计,做项目经验之~SSM项目错误集锦Part3(项目蹦+pg数据库坏+100%-->线上故障排查经验【业务bug第一步一定是先看日志,写好日志】)~整起
- Python学习日志08 - 字典
- poi导出自定义文字水印excel文件
- u盘装linux sas,巧用U盘八步安装Linux系统
- 80386为32位机
- openlayer加载矢量切片
- 数据库题目之并发控制
- 淘宝抖音美团头条都在用的推荐系统到底是什么呢?