目录

  1. 一维搜索问题
  2. 进退法确定搜索区间
  3. 分割技术(0.618)减小搜索区间
  4. wolfe条件确定步长
    4.1 梯度与函数下降的关系?
    4.2 wolfe条件

1.一维搜索问题

一维线搜索,就是指单变量函数的最优化,它是专门针对单峰函数设计的:

如上一篇文章所述,多变量函数中,迭代格式为:

xk+1=xk+αkdk

x_{k+1} = x_k + \alpha_k d_k其中的关键就在于找到合适的步长 αk,和搜索方向dk.\alpha_k,和搜索方向d_k.可以设:

ϕ(α)=f(xk+αdk)

\phi(\alpha) =f(x_k + \alpha d_k)从初始点 xkx_k出发,以步长 αk\alpha_k沿着搜索方向搜索,使得:

ϕ(αk)<ϕ(0)

\phi(\alpha_k) 的问题,就是所谓的关于 α\alpha的一维搜索问题。
如果能找到 αk\alpha_k使得:

f(xk+αkdk)=minα>0f(xk+αdk)

f(x_k + \alpha_k d_k) = \min_{\alpha>0} f(x_k + \alpha d_k)其中 αk\alpha_k就是最优的步长因子。

关键还是怎么得到这样的αk\alpha_k,在一维搜索中,其主要的想法就是先确定一个搜索区间,然后采用插值法或者分割技术逐渐减小这个区间,直到找到最优的αk\alpha_k.

2.进退法确定搜索区间

搜索区间,相当于满足α∗>0的同时,\alpha^*>0的同时,使得:

ϕ(α∗)=minα>0ϕ(α)

\phi(\alpha^*) = \min_{\alpha>0}\phi(\alpha)的 α∗\alpha^*所在的区间[a,b]( α∗∈[a,b]\alpha^* \in [a,b]),且该区间必定会大于0,称该区间称为搜索区间。

其中确定搜索区间的方法之一就是进退法:

  • 从一点出发,试图确定函数值的高-低-高三点,沿着搜索方向搜索,如果一个方向不成功,就退回来,沿着相反方向搜索。这样只需比较一个点的函数值大小,就可以确定了。

算法步骤如下:

  1. α0∈[0,+∞),h0>0,k:=0,计算ϕ(α0)\alpha_0 \in [0,+\infty),h_0>0,k:=0,计算\phi(\alpha_0)
  2. 比较目标函数值,令αk+1=αk+hk\alpha_{k+1} = \alpha_k + h_k,计算ϕ(αk+1),若ϕ(αk+1)<ϕ(αk)\phi(\alpha_{k+1}),若\phi(\alpha_{k+1}) ,转到第三步
  3. 加大搜索步长hk−1:=t∗hk(t一般取2),α:=αk,αk:=αk+1,ϕ(αk):=ϕ(αk+1)h_{k-1} := t*h_k(t一般取2),\alpha:=\alpha_k,\alpha_k := \alpha_{k+1},\phi(\alpha_k) :=\phi(\alpha_{k+1})转至第二步
  4. 反向搜索;若k=0,令hk:=−hk,αk:=αk+1,转至第二步。否则停止迭代,h_k := - h_k,\alpha_k :=\alpha_{k+1},转至第二步。否则停止迭代,得到
    a=min(α,αk+1),b=max(α,αk+1)

    a = min(\alpha,\alpha_{k+1}),b = max(\alpha,\alpha_{k+1})输出,a,b
    过程如图所示:

3.分割技术(0.618)减小搜索区间

前面介绍了怎么用进退法确定我们的搜索区间,但区间那么大,也不好求出最优化,因此可以通过切割区间,来减小区间,0.618和Fibonacci就是这样的分割方法。

  • 它们的基本思想都是通过取试探点,进行函数值比较,使包含极小点的搜索区间逐渐减小,当区间长度缩小到一定程度时,可以认为区间内的点均为极小点的近似。

0.618法是针对以上的单峰函数的,可以设

ϕ(α)=f(xk+αdk)

\phi(\alpha) = f(x_k + \alpha d_k)是搜索区间 [a0,b0][a_0,b_0]上的单峰函数

第一步迭代:
1. 要求 λk,μk\lambda_k,\mu_k到搜索区间的两个端点等距;
2. 每次迭代,要求搜索区间的缩短率相同;

用数学表达式表达出来如下:

第二次迭代:

由此得到

迭代到一定条件之后,可以求出我们最初要求的参数:

αk=(λk+μk)2

\alpha_k ={ (\lambda_k + \mu_k)\over 2}

此外,还有一些分割方法,比如Fibonacci,它和0.618法的主要区别是它的缩短率不是采用黄金分割数,而是采用了Fibonacci数,Fibonacci数列满足:

F0=F1=1,Fk+1=Fk+Fk−1

F_0 = F_1=1,F_{k+1 }= F_k + F_{k-1},详细的推导请参考袁亚湘老师的 最优化理论与方法p73.

4.wolfe条件确定步长

在一些实际问题中,目标函数如果不可微,就可以采用0.618法来确定步长,但也有很多情况下目标函数是可微的,一旦可微,我们就可以计算他们的梯度了。

4.1 梯度与函数下降的关系?

很多人有这样的疑问,梯度有什么用?
如图所示为梯度方向,如果梯度小于0,则必然是相反方向,也就是函数下降的方向,这是一个直观的看法,下面用公式证明这个结论。

定义:设ff是Rn上的实函数,d∈Rn。R^n上的实函数,d\in R^n。若存在某个正数α⎯⎯>0使得\overline\alpha>0使得

f(x+αd)<f(x),∀α∈(0,α⎯⎯)

f(x+\alpha d) 则称d是f在x处的一个下降方向,相关系数α\alpha称为一个步长。(这个是下降方向的数学表达式,满足这个条件的就是下降方向)

再给出一个定理:设f:是Rn→Rf:是R^n \rightarrow R在x处可微,若存在d∈Rnd \in R^n使得

∇f(x)Td<0,

\nabla f(x)^Td 则d必为f(x)f(x)在x处的一个下降方向。

为了看一下这个的准确性,现在给出证明。

证明:由Taylor定理,对于任意的α>0,\alpha>0,我们有

f(x+αd)=f(x)+α∇f(x)Td+o(||αd||)

f(x+ \alpha d) = f(x) + \alpha \nabla f(x)^Td + o(||\alpha d||)既然 ∇f(x)Td<0,从而必然存在α⎯⎯>0,\nabla f(x)^Td 0,使得当 α∈(0,α⎯⎯)\alpha \in (0,\overline \alpha)时,

∇f(x)Td+o(||αd||)α<0

\nabla f(x)^Td + \frac{o(||\alpha d||)}{\alpha} 于是

f(x+αd)=f(x)+α∇f(x)Td+o(||αd||)<f(x)

f(x+ \alpha d) = f(x) + \alpha \nabla f(x)^Td + o(||\alpha d||) 得证。

由此我们发现,只要∇f(x)≠0,\nabla f(x) \neq 0,那么下降方向dd一定存在,因为即使∇f(x)>0,\nabla f(x)>0,我们可以取它的负方向作为下降方向。

4.2 wolfe条件

大于0的正数α\alpha作为步长,在函数下降方向总有:

Armijo条件:f(x+αd)=f(x)+cα∇f(x)Td,   0<c<1

Armijo条件: f(x + \alpha d) = f(x) + c\alpha \nabla f(x)^T d, \ \ \ 0

但直接用该条件确定步长有可能使得步长太小,故使用后退技巧:选取0<t<10,找到一个最小的非负整数j,使得

f(x+tjd)≤f(x)+ctj∇f(x)Td,

f(x + t^j d) \leq f(x) + ct^j \nabla f(x)^T d,令步长为 α=tj\alpha = t^j.

如果该条件加上曲率条件,就构成了Wolfe条件:

Armijo条件:f(x+αd)=f(x)+c1α∇f(x)Td,

Armijo条件: f(x + \alpha d) = f(x) + c_1\alpha \nabla f(x)^T d,

曲率条件:∇f(x+αd)Td≥c2∇f(x)Td,

曲率条件:\nabla f(x + \alpha d)^Td \geq c_2 \nabla f(x)^Td,其中 0<c1<c2<1.0

参考

最优化理论与方法 –袁亚湘
最优化选讲

一维线搜索确定最优步长相关推荐

  1. 非精确一维线搜索(Armijo-Goldstein Rule 和 Wolfe-Powell Rule)

    非精确一维线搜索(Armijo-Goldstein Rule 和 Wolfe-Powell Rule) Armijo-Goldstein Rule 算法步骤 Wolfe-Powell Rule 算法步 ...

  2. el-select 多选取值_数值优化|笔记整理(3)——线搜索中的步长选取方法,线性共轭梯度法...

    上一节笔记传送门: 学弱猹:数值优化|笔记整理(2)--线搜索:步长选取条件的收敛性​zhuanlan.zhihu.com ------------------------------------ 大 ...

  3. 回溯法采用的搜索策略_数值优化|笔记整理(3)——线搜索中的步长选取方法,线性共轭梯度法...

    上一节笔记传送门: 学弱猹:数值优化|笔记整理(2)--线搜索:步长选取条件的收敛性​zhuanlan.zhihu.com ------------------------------------ 大 ...

  4. 机器人中的数值优化(三)—— 无约束最优化方法基础、线搜索准则

       本系列文章主要是我在学习<数值优化>过程中的一些笔记和相关思考,主要的学习资料是深蓝学院的课程<机器人中的数值优化>和高立编著的<数值最优化方法>等,本系列文 ...

  5. 漫步最优化三十——非精确线搜索

    说明:今天10.24,祝程序员们节日快乐,呜啦啦啦\textbf{说明:今天10.24,祝程序员们节日快乐,呜啦啦啦} 爱上一个人后,\textbf{爱上一个人后,} 发现自己变得主动了,\textb ...

  6. 无约束优化:线搜索最速下降

    文章目录 无约束优化:线搜索最速下降 无约束优化问题 线搜索最速下降 精确线搜索 非精确线搜索 Armijo准则 Goldstein准则 Wolfe准则 参考文献 无约束优化:线搜索最速下降 无约束优 ...

  7. 线搜索中的Armijo-Goldstein准则及Wolfe-Powell准则

    转载请注明出处:http://www.codelast.com/ line search(一维搜索,或线搜索)是最优化(Optimization)算法中的一个基础步骤/算法.它可以分为精确的一维搜索以 ...

  8. matlab wolfe准则,[原创]用“人话”解释不精确线搜索中的Armijo-Goldstein准则及Wolfe-Powell准则...

    line search(一维搜索,或线搜索)是最优化(Optimization)算法中的一个基础步骤/算法.它可以分为精确的一维搜索以及不精确的一维搜索两大类. 在本文中,我想用"人话&qu ...

  9. 用“人话”解释不精确线搜索中的Armijo-Goldstein准则及Wolfe-Powell准则

    转载请注明出处:http://www.codelast.com/ line search(一维搜索,或线搜索)是最优化(Optimization)算法中的一个基础步骤/算法.它可以分为精确的一维搜索以 ...

最新文章

  1. 一笔画 (25 分)
  2. 偏见方差的权衡(Bias Variance Tradeoff)
  3. Python的sort()
  4. 数据库 SQL语法一
  5. Android之INSTALL_FAILED_UPDATE_INCOMPATIBLE(pacakge:...do not match the previously installed version)
  6. 双向链表中插入结点并输出
  7. php重写curl_setopt函数,PHP curl_share_setopt函数
  8. Google Chrome,另类的邪恶垄断?
  9. 一次失败的做题经历(HDU2112)
  10. tar.bz2 解压命令
  11. android apk更新下载以及安装
  12. 多序列比对---ClustalX比对GeneDoc美化
  13. Git——详解操作码云
  14. 2021年中国频谱分析仪行业市场规模、格局及专利情况分析:行业规模不断扩大,国外企业占据主导地位,国产企业发展空间较大[图]
  15. STL之string篇
  16. Unity之多场景自动化打包研究
  17. 黄一孟:骑着电驴找金矿
  18. python对象和对象名
  19. 初链(true)混合共识算法分析与评估
  20. 修改TrustedInstaller权限文件

热门文章

  1. 使用压缩软件对文件夹进行加密和解密过程
  2. Django实战小型图书人物信息网页(MVT的综合运用)
  3. 想要买房,一定要先了解清楚CAD户型图纸
  4. 修改html不显示效果图,html图片不显示怎么办
  5. 预测贷款用户是否逾期-数据预处理
  6. c语言经典程序100例 - 百度,经典C语言程序100例(51-80)_绝望之家_百度空间
  7. 本草纲目pdf彩图版下载_本草纲目彩图版(全二册)
  8. sublime安装json格式化插件
  9. Linux常用命令(Hadoop)
  10. SQL server 数据库获取datetime2(7)类型的年月日时分秒及其他时间格式