概述

在实际应用中,有些目标函数的梯度不容易计算,即使使用有限差分等近似算法,也会因为噪声的存在导致结果不精确。无梯度优化算法(DFO-Derivative-Free Optimization)可以在不计算梯度的情况下进行问题的最优化,主要有两类思路,一是根据目标函数的样本进行拟合,对拟合函数进行最优化;二是用一些启发式算法。

1. 有限差分和误差

2. 基于模型近似的方法

3. 坐标和模式搜索方法

4. 其他DFO方法

5. 总结

有限差分和误差

有限差分方法在某些情况下可能会有一定的误差,例如如果函数值需要通过随机试验进行模拟,此时会引入人为误差或者仪器误差。

因此对问题进行建模时,将误差引入目标函数中,然后利用有限差分和梯度相关算法进行优化。

f(x)=h(x)+ϕ(x)f(x)=h(x)+ϕ(x)

其中函数h表示某平滑函数,ϕϕ表示误差分布函数,该函数可以和参数x有关也可以无关。

对误差进行建模后,然后利用中心有限差分方法,进行梯度的计算

∂f∂xi≈f(x+ϵei)−f(x−ϵei)2ϵ∂f∂xi≈f(x+ϵei)−f(x−ϵei)2ϵ

噪声水平(Noise Level)定义为:

在x附近噪声最大值。η(x;ϕ)=sup||z−x||≤ϵ|ϕ(z)|η(x;ϕ)=sup||z−x||≤ϵ|ϕ(z)|

此时使用有限差分方法,近似误差来源于固有误差和噪声误差。

基于模型的方法

主要思路是,在第k步迭代时,基于该点进行模型近似,通过采样推导出模型中的参数,基于该模型进行最优化计算。

二次模型近似

在第k步迭代时,构建一个二次模型进行近似

mk(xk+p)=c+gTp+12pTGpmk(xk+p)=c+gTp+12pTGp

,其中g和G分别表示函数f的一阶和二阶梯度。

由于该模型参数c、g和G都是未知的,因此需要1+n+(n+1)n/2=(n+1)(n+2)/2个未知数需要计算。

所以基于点Xk需要采样这么多个点进行未知数计算。

样本Y=y1,y2...yqY=y1,y2...yq,假设该集合中的点值都比x_k大。根据拟合等式mk(yl)=f(yl)mk(yl)=f(yl)

此时可以唯一确定模型m,然后利用信赖域或者梯度方法进行最优化。

在实际应用中,我们仅需要更新模型M即可,不用每次都重新计算。可以选择合适方便计算的基函数。

算法过程如下

算法过程如下

1. 构建插值集合Y=y1,y2...yqY=y1,y2...yq需要保证线性方式的解存在。

2. 求解插值方程

3. 根据二次模型进行最优解计算

4. 根据最优解的效果,决定是否采用该解。

5. 根据一个几何过程更新几何Y。

二次模型的缺点:样本点选择是O(n^2)的,如果维度越高计算复杂度越大。因此可以考虑线性模型,此时只有O(n+1)个样本需要求解,复杂度会降低。

坐标和模式搜索方法

不同于梯度相关的算法,基于模式搜索方法的搜索方向都是事先确定好的,该方法需要从方向集合中选择一个下降方向作为搜索方向并且更新该方向集合,之后利用线搜索决定步长,逐步迭代得到最优解。

坐标下降是模式搜索方法中的一个特例。

坐标搜索方法(Coordinate SearchMethod)

该方法也称之为坐标下降法或者变量交替方法,主要思路是依次沿着坐标轴方向进行线搜索。

详细过程如下

1. 选择某个迭代点x=(x1,x2…xn),固定x2…xn,优化x1使得目标函数最小

2. i=2..n 优化x_i使得目标函数最小

3. 重复以上步骤

对于二维情况下,搜索过程如下

从上图中可以看出,对于条件数比较大的问题,收敛速度非常低。

实际中,如果沿着线性独立的搜索方向搜索,可能不能保证收敛。但是优点是不需要计算梯度,并且对于变量松耦合的情况下,收敛速度可以接受。

另外为了进行优化,搜索方向可以选择为{e1,e2...en,en−1...e1e1,e2...en,en−1...e1}

模式搜索方法

每次搜索方向都是从一个“结构集”中选取,找到某个下降点,进行线搜索,否则修改步长,重复该过程。

该方法会受到噪声点、函数值不精确、不平滑的影响。算法过程如下

算法描述如下

定义

* DkDk表示第k迭代的方向集合

* γkγk表示第k步线性搜索参数,即步长,如果找到下降方向,则xk+γkpkxk+γkpk为最优点

* ρ(t)ρ(t)为递增函数,并且当t接近0时,该函数值为0

算法过程

1. 初始化搜索方向集合D0D0

2. 循环迭代一下过程,直到搜索步长满足给定阈值。

3. 如果找到满足一定下降条件的搜索方向,则修改最优值点,并且增大步长。

4. 否则减少步长

关键点

初始化搜索方向集合D0D0如何选取,需要保证包含最优解的方向。

有理论保证如果搜索方向满足一下条件,则一定能保证收敛。

κ(Dk)=minv∈Rnmaxp∈DkvTp||v||||p||≥δκ(Dk)=minv∈Rnmaxp∈DkvTp||v||||p||≥δ

βmin≤||p||≤βmaxp∈Dkβmin≤||p||≤βmaxp∈Dk

条件1说明需要保证最少有一个搜索方向和最优方向的夹角小于90,即cos(θθ) > δδ,不能再相反的方向,否则不容易收敛。

条件2说明搜索方向的模不能相差太大,因此搜索步长统一进行缩放。

满足条件的搜索方向有 {e1,e2...en,−e1...−ene1,e2...en,−e1...−en},供2n个搜索方向或者{pi=12ne−ei,pn+1=12nepi=12ne−ei,pn+1=12ne},供n+1个点

递增函数可以选择为ρ(t)=Mt3/2ρ(t)=Mt3/2

其他DFO算法

共轭方向算法

类似于共轭梯度方法,该方法的目标是最优化

f(x)=12xTAx−bTxf(x)=12xTAx−bTx

,不同点在于共轭方向的计算仅仅依靠函数值得到,不依赖梯度的计算。

Parallel subspace property

通过该方法可以找到一系列共轭方向,并且沿着该方向可以得到最优解,以二维情况为例

如上图如果直线l1和l2平行,并且x1*和x2*是目标函数沿着该直线的最优解,则x1*-x2*共轭于直线的法向量。

因此只要沿着某两个平行子空间寻找最优解,则最优解的差就共轭于该平面的法向量。

假设{p1,p2...plp1,p2...pl}是线性独立的向量,定义两个平行平面

s1={x1+∑i=1..lαipi}s1={x1+∑i=1..lαipi}

s2={x2+∑i=1..lαipi}s2={x2+∑i=1..lαipi}

并且目标函数沿着该平面的最优解分布为x1*和x2*,则x2*-x1*共轭于p1,p2...plp1,p2...pl

证明很简单

由于x1*是最优解,则有

∂f(x∗1+αipi)∂αi=∂f(x∗1+αipi)pi∂f(x1∗+αipi)∂αi=∂f(x1∗+αipi)pi

,当αi=0,∇f(x∗1)pi=0,根据最优化条件得到αi=0,∇f(x1∗)pi=0,根据最优化条件得到

0=(∇f(x∗1)−∇f(x∗2))pi=(Ax1−b−Ax2+b)pi=(x1−x2)Api0=(∇f(x1∗)−∇f(x2∗))pi=(Ax1−b−Ax2+b)pi=(x1−x2)Api

根据共轭条件可以得到。

Nelder-Mead 方法

也叫做Nelder-Mead simplex reflection方法。

保存n+1个点,并且这些点构成一个单纯性,在每次循环中搜索使得函数值最低的点,去掉后,用其他更好的点替代。

Implicit Filtering方法

对比于带有噪声的有限微分方法,适用于noise level随着迭代减小的情形。

总结

通过该小结的学习,可以了解到

1. 对于梯度不可求的复杂函数,可以通过DFO的方式进行优化

2. 通过随机试验估计函数值的最优化问题,可以考虑带噪声的有限差分。

3. 了解基于模型的方法,但是复杂度可能会比较大

4. 了解坐标下降法和模式搜索算法

5. 了解基于共轭方向等其他方法。

qpoases算法复杂度_数值优化(Numerical Optimization)学习系列-无梯度优化(Derivative-Free Optimization)...相关推荐

  1. 拯救万千学子于水深火热之中!Facebook开源无梯度优化工具

    乾明 发自 凹非寺 量子位 出品 | 公众号 QbitAI 机器学习啥最苦?十有八九找参数! 不少研究生,都被卡在这个环节上,久久不能毕业. 现在,圣诞节前,有了一个好消息! Facebook宣布,开 ...

  2. l bfgs算法java代码_数值优化:理解L-BFGS算法

    译自<Numerical Optimization: Understanding L-BFGS>,本来只想作为学习CRF的补充材料,读完后发现收获很多,把许多以前零散的知识点都串起来了.对 ...

  3. 离散ziggurat算法python实现_一种基于LWE采样算法的实现与优化

    一种基于 LWE 采样算法的实现与优化 王柯翔,黎 琳,彭双和 [摘 要] 基于带错误学习问题 (Learning With Errors , LWE) 构造的密码体制 能够抵御量子攻击,它的应用效率 ...

  4. 数值优化(Numerical Optimization)学习系列-文件夹

    概述 数值优化对于最优化问题提供了一种迭代算法思路,通过迭代逐渐接近最优解,分别对无约束最优化问题和带约束最优化问题进行求解. 该系列教程能够參考的资料有 1. <Numerical Optim ...

  5. 数值优化(Numerical Optimization)学习系列-目录

    概述 数值优化对于最优化问题提供了一种迭代算法思路,通过迭代逐渐接近最优解,分别对无约束最优化问题和带约束最优化问题进行求解. 该系列教程可以参考的资料有 1. <Numerical Optim ...

  6. 二分检索用途及复杂性_二分查找和三分查找哪个快?算法复杂度与常数无关?复杂度分析的常见误区...

    还记得两三年前,我初看一本算法书,看到二分查找算法的复杂度时,我发现了了不得的东西:二分查找每次查询范围减少一半,需要查询的次数是 ,它的复杂度是 . 我把它改成三分查找,每次查询两个数字与我的目标数 ...

  7. 差分进化算法_基于差分进化的水泥烧成系统动态优化算法

    基于差分进化的水泥烧成系统动态优化算法 郝晓辰, 冀亚坤, 郑立召, 史鑫, 赵彦涛 燕山大学电气工程学院,河北 秦皇岛 066004 [摘  要]针对水泥烧成过程的资源浪费以及难以建立有效数学机理模 ...

  8. 差分进化算法python 指派问题_多目标优化算法

    本书实用性强,摒弃工具书中难懂的理论讲解,通过使用具体数值实例进行浅显易懂的讲解,保证大学低年级学生凭借现有的数学基础知识也可以完全理解书中介绍的网络数学模型和遗传算法的解法.书中丰富的数值实例能够加 ...

  9. 二分法算法复杂度简化_让我们简化算法的复杂性!

    二分法算法复杂度简化 by Shruti Tanwar 通过Shruti Tanwar 让我们简化算法的复杂性! (Let's simplify algorithm complexities!) It ...

  10. 数值优化(Numerical Optimization)学习系列-惩罚和增广拉格朗日方法(Augmented Lagrangian Methods)

    原文地址为: 数值优化(Numerical Optimization)学习系列-惩罚和增广拉格朗日方法(Augmented Lagrangian Methods) 概述 求解带约束的最优化问题,一类很 ...

最新文章

  1. 比特币挖矿——区块链技术
  2. 黑客组织称7月将售新入侵工具 价格超2.2万美元
  3. 现代密码学5.3--Hash and MAC
  4. wxWidgets:wxShowEvent类用法
  5. 巨蟒python全栈开发flask11项目开始3
  6. C语言-数据结构-可变长顺序表的查找操作
  7. 5、URLConnection(2)
  8. Java定时任务解决方案
  9. linux清理缓存_[ERROR] Linux 的 No space left on device(磁盘空间不足)
  10. Kafka——使用spring进行集成
  11. 火狐 mysql插件_火狐firebug和firepath插件安装方法(最新)
  12. 常去阅读 12个开发人员的博客
  13. 【期末划重点】高数下期末考复习
  14. php对接建行h5网页支付
  15. js日期时间格式化yyyy-mm-dd hh:ii:ss
  16. linux系统sip1 login,1.1.1.1 SIP终端节点配置
  17. 微信JS接口安全域名填写ip地址
  18. mysql navicat怎么打开文件_navicat怎么打开sql
  19. springboot2核心技术与响应式编程(一)
  20. 2020年“信创”火了!一文看懂什么是信创

热门文章

  1. 【优化算法】精子群优化算法(SSO)【含Matlab源码 1465期】
  2. 【TSP】基于matlab GUI混合粒子群算法求解旅行商问题【含Matlab源码 925期】
  3. 【树叶识别】基于matlab HU不变矩树叶识别【含Matlab源码 797期】
  4. 【电路仿真】基于matlab Simulink光伏太阳能电池板仿真模型【含Matlab源码 771期】
  5. 【语音合成】基于matlab重叠存储法的信号分帧与还原【含Matlab源码 567期】
  6. 机器学习 声音 分角色_机器学习对儿童电视节目角色的痴迷
  7. 熵 机器学习_理解熵:机器学习的金标准
  8. 神经网络算法优化_训练神经网络的各种优化算法
  9. 机器学习指南_管理机器学习实验的快速指南
  10. java 类修饰符 作用域_java的4种内部类,你真的了解了吗?