最优化方法与理论系统学习笔记
本系列所有文章来自东北大学张京老师的最优化方法与理论课程学习笔记,系列如下:
线性规划 (一) 线性规划的基本形式及各种概念
线性规划 (二) 单纯形法
无约束最优化(一) 最速下降法、Newton法、修正Newton法
无约束最优化(二) 共轭方向法与共轭梯度法
无约束最优化(三) 拟Newton法
无约束最优化(四) 步长加速法
无约束最优化(五) 最小二乘法问题的解法
约束最优化方法 (一) 最优性条件
约束最优化方法 (二) Zoutendijk容许方向法
约束最优化方法 (三) 外部罚函数法
约束最优化方法 (四) 乘子法
步长加速法是由Hooke和Jeeves(1961年)给出的一种直接方法。对于变量数目较少的无约束极小化问题,这是一个程序简单又比较有效的方法。
基本思想
步长加速法主要由交替进行的“探测搜索”和“模式移动”组成。前者是为了寻找当前迭代点的下降方向,而后者则是沿着这个有利的方向寻求新的迭代点。
给出初始点 x 0 x_{0} x0,以它作为探测搜索的出发点(称为参考点,用 r r r表示,即 r = x 0 r=x_{0} r=x0),在其周围寻找比它更好的点 b b b(称为基点),即 f ( b ) < f ( r ) f(b) < f(r) f(b)<f(r),以得到下降方向 b − r b-r b−r(称为模式)。然后从 b b b出发沿模式 b − r b-r b−r做直线搜索(称为模式移动)。 r ~ = b + α ( b − r ) \tilde {r} = b + \alpha (b-r) r~=b+α(b−r), r ~ \tilde {r} r~是从 b b b出发,沿方向 b − r b-r b−r移动 α \alpha α个单位而得,其中 α > 0 \alpha > 0 α>0(一般取 α = 1 \alpha = 1 α=1或用直线搜索技术来确定), 以获得新的参考点(新的迭代点)。然后再开始探测搜索,模式移动。交替进行的“探测搜索”和“模式移动”将使得迭代点逐渐地向极小点靠近。
探测搜索
已知:目标函数 f ( x ) f(x) f(x),步长向量 s = [ s 1 , s 2 , ⋅ ⋅ ⋅ , s n ] T s=\left [ s_{1}, s_{2}, ···,s_{n} \right ]^{T} s=[s1,s2,⋅⋅⋅,sn]T,参考点 r = [ r 1 , r 2 , ⋅ ⋅ ⋅ , r n ] T r=\left [ r_{1}, r_{2}, ···,r_{n} \right ]^{T} r=[r1,r2,⋅⋅⋅,rn]T。
-
计算 f r = f ( r ) f_{r}=f(r) fr=f(r);置 b = r , f b = f r b=r, f_{b}=f_{r} b=r,fb=fr。
-
依次沿第 i = 1 , 2 , ⋅ ⋅ ⋅ , n i=1,2,···,n i=1,2,⋅⋅⋅,n个坐标轴方向作直线搜索:计算 f 1 = f ( b + s i e i ) f_{1}=f(b+s_{i}e_{i}) f1=f(b+siei), f 2 = f ( b − s i e i ) f_{2}=f(b-s_{i}e_{i}) f2=f(b−siei)。以下三种情况必居其一:
i) 若 f 1 < f b f_{1} < f_{b} f1<fb,则置 b = b + s i e i b=b+s_{i}e_{i} b=b+siei, f b = f 1 f_{b}=f_{1} fb=f1;
ii) 若 f 2 < f b ≤ f 1 f_{2} < f_{b} \leq f_{1} f2<fb≤f1,则置 b = b − s i e i b=b-s_{i}e_{i} b=b−siei, f b = f 2 f_{b}=f_{2} fb=f2;
iii) 若 f 1 ⩾ f b f_{1} \geqslant f_{b} f1⩾fb, f 2 ⩾ f 1 f_{2} \geqslant f_{1} f2⩾f1,则置 b b b与 f b f_{b} fb不变;
依次对 i = 1 , 2 , ⋅ ⋅ ⋅ , n i=1,2,···,n i=1,2,⋅⋅⋅,n计算后,最终的 b b b是从 r r r出发以 s s s为步长向量探测搜索的终点。当 f ( b ) < f ( r ) f(b) < f(r) f(b)<f(r)时,探测搜索称为成功,此时必有 b ≠ r b \neq r b=r,即得到模式 b − r b-r b−r;否则,探测搜索称为失败,此时未得到模式。
步长加速法
已知:目标函数 f ( x ) f(x) f(x),步长收缩系数的终止限 ε \varepsilon ε。
- 选定初始点 x 0 x_{0} x0,初始步长量 s 0 s_{0} s0,置 r = x 0 r=x_{0} r=x0, b 0 = x 0 b_{0}=x_{0} b0=x0, c = 1 c = 1 c=1, w = 0.5 w=0.5 w=0.5(或0.1)。
- 置 s = c s 0 s = c s_{0} s=cs0。
- 在点 r r r处,以 s s s为步长向量按探测搜索算法做探测搜索得 b b b。
- 若 f b < f ( r ) f_{b} < f(r) fb<f(r),则转5;否则,转8。
- 做模式移动 r = 2 b − b 0 r=2b-b_{0} r=2b−b0,并置 b 0 = b b_{0}=b b0=b, f 0 = f b f_{0}=f_{b} f0=fb。
- 在点 r r r处,以 s s s为步长向量按算法按探测搜索算法做探测搜索得 b b b。
- 若 f ( b ) < f ( b 0 ) f(b) < f(b_{0}) f(b)<f(b0),则转5;否者,置 r = b 0 r=b_{0} r=b0,转3。
- 若 c ⩽ ε c \leqslant \varepsilon c⩽ε则输出 r r r,停止计算;否则,置 c = w c c=wc c=wc,转2。
注意:算法中的模式为 b − b 0 b-b_{0} b−b0。当由3产生时,模式既为 b − r b-r b−r;但当由6产生时,模式才为 b − b 0 b-b_{0} b−b0这是加速模式。
在迭代开始时,基点和参考点重合,并都在初始处,经过探测搜索,得到新的基点,然后再经过模式移动,得到新的参考点,再探测,再移动,探测搜索与模式移动交替进行下去,迭代点就将逐渐地向极小点靠近。
I型探测搜索:出发点既是参考点,又是基点,目的是在基点周围构造一个模式。II型探测搜索:出发点单纯是参考点,目的是判别上次的模式移动是否成功,从而能否作加速移动。
我的微信公众号名称:小小何先生
公众号介绍:主要研究分享深度学习、机器博弈、强化学习等相关内容!期待您的关注,欢迎一起学习交流进步!