一维线搜索确定最优步长
来源:互联网 发布:淘宝电工工具袋 编辑:程序博客网 时间:2024/04/30 22:05
目录
- 一维搜索问题
- 进退法确定搜索区间
- 分割技术(0.618)减小搜索区间
- wolfe条件确定步长
4.1 梯度与函数下降的关系?
4.2 wolfe条件
1.一维搜索问题
一维线搜索,就是指单变量函数的最优化,它是专门针对单峰函数设计的:
如上一篇文章所述,多变量函数中,迭代格式为:
如果能找到
关键还是怎么得到这样的
2.进退法确定搜索区间
搜索区间,相当于满足
其中确定搜索区间的方法之一就是进退法:
- 从一点出发,试图确定函数值的高-低-高三点,沿着搜索方向搜索,如果一个方向不成功,就退回来,沿着相反方向搜索。这样只需比较一个点的函数值大小,就可以确定了。
算法步骤如下:
α0∈[0,+∞),h0>0,k:=0,计算ϕ(α0) - 比较目标函数值,令
αk+1=αk+hk ,计算ϕ(αk+1),若ϕ(αk+1)<ϕ(αk) ,转到第三步 - 加大搜索步长
hk−1:=t∗hk(t一般取2),α:=αk,αk:=αk+1,ϕ(αk):=ϕ(αk+1) 转至第二步 - 反向搜索;若k=0,令
hk:=−hk,αk:=αk+1,转至第二步。否则停止迭代, 得到输出,a,ba=min(α,αk+1),b=max(α,αk+1)
过程如图所示:
3.分割技术(0.618)减小搜索区间
前面介绍了怎么用进退法确定我们的搜索区间,但区间那么大,也不好求出最优化,因此可以通过切割区间,来减小区间,0.618和Fibonacci就是这样的分割方法。
- 它们的基本思想都是通过取试探点,进行函数值比较,使包含极小点的搜索区间逐渐减小,当区间长度缩小到一定程度时,可以认为区间内的点均为极小点的近似。
0.618法是针对以上的单峰函数的,可以设
第一步迭代:
1. 要求
2. 每次迭代,要求搜索区间的缩短率相同;
用数学表达式表达出来如下:
第二次迭代:
由此得到
迭代到一定条件之后,可以求出我们最初要求的参数:
此外,还有一些分割方法,比如Fibonacci,它和0.618法的主要区别是它的缩短率不是采用黄金分割数,而是采用了Fibonacci数,Fibonacci数列满足:
4.wolfe条件确定步长
在一些实际问题中,目标函数如果不可微,就可以采用0.618法来确定步长,但也有很多情况下目标函数是可微的,一旦可微,我们就可以计算他们的梯度了。
4.1 梯度与函数下降的关系?
很多人有这样的疑问,梯度有什么用?
如图所示为梯度方向,如果梯度小于0,则必然是相反方向,也就是函数下降的方向,这是一个直观的看法,下面用公式证明这个结论。
定义:设
再给出一个定理:设
为了看一下这个的准确性,现在给出证明。
证明:由Taylor定理,对于任意的
由此我们发现,只要
4.2 wolfe条件
大于0的正数
但直接用该条件确定步长有可能使得步长太小,故使用后退技巧:选取
如果该条件加上曲率条件,就构成了Wolfe条件:
参考
最优化理论与方法 –袁亚湘
最优化选讲
- 一维线搜索确定最优步长
- 在BFGS中,线搜索方法确定步长α
- 使用非精确线搜索Armijo算法确定步长的最速下降法(MATLAB)
- 借助步长增量的搜索算法
- 梯度下降法的步长到底怎么确定?
- 迭代求解最优化问题——步长确定
- 最优二叉搜索树
- 最优二分搜索树
- 最优二叉搜索树
- 最优二叉搜索树
- 最优二分搜索树
- 最优二叉搜索树
- 最优二叉搜索树
- 最优二叉搜索树
- 最优二叉搜索树
- 最优二叉搜索树
- 最优二叉搜索树
- 最优二叉搜索树
- Redis事务、持久化
- 12 Spring框架 SpringDAO的事务管理
- 67-add Binary
- Java(9-1)输入与输出(二)
- win10下Candence16.6安装破解心得
- 一维线搜索确定最优步长
- 拜占庭将军问题
- mysql的自定义的函数和存储过程
- Hadoop 新 MapReduce 框架 Yarn 详解
- easyui使用中遇到的一系列问题
- MATLAB绘制3D隐函数曲面的方法总结
- git diff出现类似ESC[32的错误显示
- 2017.12.17Day13
- spring 属性注入