最优化基础:一维搜索方法
精确一维搜索
精确一维搜索通常要求
黄金分割法
这个方法只需要计算
-
如果
,那么极小点位于左侧,选取新的计算区间为 。 -
如果
,那么极小点位于右侧,选取新的计算区间为 。
新的计算区间长度为
我们希望可以充分利用计算的点值,以第一种情况为例,希望
解得
-
起始的计算区间
。 -
选取左侧点
,右侧点 ,计算和 。 -
压缩区间:
-
如果
,那么极小点位于左侧,选取新的计算区间为 。可以作为下一步的 。 -
如果
,那么极小点位于右侧,选取新的计算区间为 。可以作为下一步的 。
-
-
如果计算区间已经足够小,则求解结束,得到最小值点,否则回到第二步。
Remark
黄金分割法的思路是固定
对分法
对分法主要依赖
-
起始的计算区间
。 -
选取中点
,计算。 -
如果中点
,则达到给定的导数残差容差;或者区间长度 时,输出中点作为位置近似。导数残差小本身不保证与极小点的距离小。 -
否则压缩区间:若
,取左侧为新的计算区间 ;若 ,取右侧为新的计算区间 。
牛顿法
牛顿法需要依赖
极小值点
因此迭代格式为
关于多维的非线性方程最小值问题:自变量
其中
要求 Hesse 方阵始终可逆,计算才可以继续,事实上我们还希望 Hesse 方阵始终对称正定,此时二阶近似才存在最小值点,否则可能不收敛。为了确保计算可以继续,从牛顿法发展出了拟牛顿法:用一族对称正定矩阵
非精确一维搜索
非精确一维搜索不要求直接求出最小值点,而是给定一个下降准则,求出一个点使得函数有足够的下降即可。以下
-
Armijo准则:取定
,要求使得 -
Goldstein准则:取定
,要求使得 注意真正的最小值点也可能不满足Goldstein准则!
-
Wolfe准则:取定
以及 ,要求使得 第二个条件通常会被加强为双边条件,称为强Wolfe准则
基于这些准则可以设计很多具体的非精确一维搜索算法,主要的过程都是不断使用二分法、插值法或者步长乘以比例系数的方法得到新的试探点,判定准则是否成立,成立即可结束搜索。若尚未找到步长的上界,可能需要扩张;建立上下界后,再在区间内继续搜索。以下各有一个例子。
满足 Armijo 准则的回退法
基于 Armijo 准则设计的常用算法是回退法:初始选取一个步长
满足 Goldstein 准则的对分法
取初始试探步长
-
初始化
,计算。 -
若
,更新上界 。 -
否则,若
,则两条准则均成立,输出 ;若仍不满足这条下界准则,则更新下界 。 -
若
,取新的试探点 ;若仍无上界,则取 扩张。计算新的,回到第二步。
满足 Wolfe 准则的算法
以下算法满足普通 Wolfe 准则。取初始试探步长
-
计算
。若不满足 Armijo 准则 ,更新区间为 ,可用下面的左侧二次插值生成候选点。 -
若满足 Armijo 准则,计算
。若 ,输出 ;否则更新为 。已有有限上界时,可用下面的右侧二次插值生成候选点。 -
若
,取 扩张。否则,只有当插值多项式为严格凸二次函数、候选点计算有效,且候选点落在内时才接受该候选点。若分母为零或数值上过小、曲率非正、候选点非有限或超出上述范围,则取中点
。 -
更新
,回到第一步。保存下界处的函数值与导数,供下一次插值使用。
二次插值的具体公式如下。其中
-
当调整到左侧子区间
,取两点二次插值多项式 , 基于如下信息(我们还没有计算的值) 得到
的表达式 极小点候选值为
-
当调整到右侧子区间
且 时,取二次多项式,基于如下信息(我们已经计算了 的值) 得到
的表达式 极小点候选值为