- 无约束问题与最优解
- 最优性条件
- 一维线性搜索
- 下降算法的收敛性与收敛速度
- 无约束规划
无约束问题与最优解
考虑如下最优化问题:
minx∈Rnf(x)
无约束最优化问题的解由局部解和全局解两种,而实际上可行的往往只有局部解(或严格局部解)。如不加说明我们讨论的都是局部解。
局部解定义 设
x∗∈Rn ,若存在
x∗ 的
δ(δ>0) 邻域
Nδ(x∗)={x|∥x−x∗∥<δ}
使得
f(x)≥f(x∗),∀x∈Nδ(x∗)
则称
x∗ 为
f(x) 的局部解;若
f(x)>f(x∗),∀x∈Nδ(x∗)
则称
x∗ 为
f(x) 的严格局部解。
最优性条件
一阶必要条件
设 f(x) 一阶连续可微,若 x∗ 是一个局部解,则:∇f(x∗)=0 。即 x∗ 在任何方向上的方向导数均为零,该点所处的切平面是水平的。
二阶必要条件
设 f(x) 二阶连续可微,若 x∗ 是一个局部解,则:
∇f(x∗)=0,∇2f(x∗) 为半正定
即在局部解
x∗ 处二阶方向导数非负。满足
∇f(x∗)=0 的点
x∗ 被称为函数
f 的平稳点或
驻点,不是极小点也不是极大点的平稳点被称为函数的
鞍点。
二阶充分条件 设
f(x) 二阶连续可微,且
∇f(x∗)=0,∇2f(x∗) 为正定
则
x∗ 是无约束问题的一个严格局部解。
凸充分性定理 若
f:Rn→R 是凸函数,且
f(x) 的一阶连续可微的,则
x∗ 是全局解得充分必要条件是
∇f(x∗)=0 。
一维线性搜索
求解最优化问题的关键是构造一个点列 {xk} 使其满足
limk→∞f(xk)=f(x∗)=minx∈Rf(x),limk→∞xk=x∗
称
x∗ 为问题的解, 称
{xk} 为
极小化点列,其构造方法一般采用逐步构造法:
xk+1=xk+αkdk,k=0,1,2,…
称
dk 为
搜索方向,
ak 为
步长。一维搜索问题即讨论如何确定步长的问题,下面简要介绍几种搜索方法,及其特色,但对算法本身不予详细介绍。
精确线性搜索
如果有 αk 使得
ϕ(αk)=minα≥0{ϕ(α)=f(xk+αdk)}
则称该搜索为精确线性搜索,称
αk 为最优步长。该方法有重要理论价值,但除了
f(x) 是二次函数的特殊情况外,确定精确极小点是很困难的。
直接搜索法
首先介绍两个概念。
搜索区间
设 α∗ 是 ϕ(α) 的极小点,若存在区间 [a,b]使得 α∗∈[a.b],则称 [a,b]为 ϕ(α) 的搜索区间。确定搜索区间可采用进退法。从一点出发确定函数值“高-低-高”的4点,一个方向不成功就退回来反方向寻找。
单峰函数
设函数 ϕ(α) 在区间 [a,b] 内存在极小点 α∗∈(a.b),如果对于任意 α1,α2 满足:
- 当 α1<α2≤α∗时,有 ϕ(α1)>ϕ(α2);
- 当 α∗≤α1<α2时,有 ϕ(α1)<ϕ(α2);
则 ϕ(α) 在区间 [a,b] 上是单峰函数。
假设 f(x) 在得到的搜索区间上是单峰函数,我们可以通过 0.618法直接搜索近似最优步长。0.618法的基本思想是通过取试探点进行函数值比较,使得包含极小点的搜索区间不断减小,每次迭代极小区间的收缩比为0.618,即以线性速度收敛的极小点附近。
非精确一维搜索法
0.618法的计算量比较大,我们可 适当放松对 αk 的要求,使目标函数在迭代的每一步都充分下降即可。非精确一维搜索的基本思想是求 μ 使得 ϕ(μ)<ϕ(0),但不希望 μ 值过大否则会引起点列的大幅度摆动,也不希望 μ 值过小,否则会使得点列在未达到 x∗ 之前没有进展。常见的方法包括:Goldstein方法、Armijo方法和Wolfe-Powell方法。
下降算法的收敛性与收敛速度
下降算法的一般迭代格式如下:
- 给定初始点 x1, k:=1;
- 确定局部下降方向 dk 使得
∇f(xk)Tdk<0
- 确定步长 αk使得
f(xk+αkdk)<f(xk)
- 令 xk+1=xk+αkdk ;
- 若 ∇f(xk+1)=0则停,否则令 k:=k+1,转步骤1。
若上述算法可行,须解决下述问题:
- 如何确定搜索方向?
- 如何进行一维搜索确定每一步步长?
- 如果确定当前点的终止准则?
问题2已在上一小节讨论过,另外两个问题见下文。下降算法产生极小化序列 {xk},对应的目标函数序列 {f(xk)} 是单调递减的。所谓收敛,是指序列{xk}或它的一个子列满足 limk→∞xk=x∗ 。通常获得这样的结果很难。若对于某些算法来说,只有当初始点靠近极小点 x∗ 时,才能保证序列{xk}收敛到极小点,则称这类算法为局部收敛。反之,若对于任意初始点产生的序列收敛到极小点,这类算法则被称为全局收敛。
为了使极小化序列能够收敛到一个平稳点,通常要求目标函数能够“充分”下降。由 f(x) 的一阶Taylor展开式:
f(xk+αkdk)=f(xk)+αk∇f(xk)Tdk+o(∥αkdk∥)
可知,当
dk 与
∇f(xk) 接近于正交时,
f(x) 下降很少,因此要求其二者之间的夹角远离正交方向,即存在
u¯>0 使得:
θk≤π2−u¯,∀k
其中
cosθk=−∇f(xk)Tdk∥∇f(xk)∥∥dk∥
设序列 {xk}收敛到 x∗,若极限
limk→∞∥xk+1−x∗∥∥xk−x∗∥=β
存在,则当
0<β<1 时,称
{xk}线性收敛;当
β=0时,称
{xk}超线性收敛;当
β=1时,称
{xk}次线性收敛。若存在某个
p≥1,有
limk→∞∥xk+1−x∗∥∥xk−x∗∥p=β≤+∞
则称
{xk}为
p 阶收敛。当
p>1时,
p 阶收敛必为超线性收敛,反之不一定成立。最优化算法中通常考虑线性收敛、超线性收敛和二阶收敛。
无约束规划
假设我们要考虑的无约束规划问题为:
minx∈Rnf(x),f∈C1
其中
C1 表示一阶连续可微函数的全体。下面介绍三种规划方法,仅简述其规划思想与执行步骤,不做具体推导。
最速下降法
根据Taylor级数展开,当 f(x) 在某点 xk 处连续可微,且 ∇f(xk)≠0 时,我们可得:
f(xk+adk)=f(xk)+a∇f(xk)Tdk+o(∥adk∥)
其中
a>0,
dk 是一个确定的方向向量。若向量
dk 满足
∇f(xk)dk<0,则
dk 是函数
f(x) 在
xk 处的下降方向。进一步改写上式:
f(xk+adk)=f(xk)−a(−∇f(xk)Tdk)+o(∥adk∥)
可见若
−∇f(xk)Tdk 越大,则下降幅度越大。由
−∇f(xk)Tdk=∥−∇f(xk)T∥∥dk∥cosθk
可知取
θk=0 时,也就是
dk=−∇f(xk) 时达到最大值。因此在
xk 点处的搜索方向应取
dk=−∇f(xk) 。
步骤:
- 选定初始点 x1 和精度要求 ϵ>1 ,取 k=1。
- 若 ∥∇f(xk)∥<ϵ,则停止,取 x∗=xk ;否则令 dk=−∇f(xk) 。
- 在 xk 处沿方向 dk 做线性搜索,得 xk+1=xk+akdk,k=k+1,转步骤2。
在第3步,采用精确线性搜索,即:
ak=argminf(xk+adk)
,可得:
df(xk+adk)da∣∣∣a=ak=(dk)T∇f(xk+1)=0
可见
dk 与
dk+1 正交。
Newton法
Newton法利用二次近似多项式的极值点求法给出原函数极值点的求法。本节考虑 f(x) 二次可微的情形。
利用Taylor展开,考虑在 xk 点处的二次近似多项式:
f(x)≈f(xk)+∇f(xk)T(x−xk)+12(x−xk)T∇2f(xk)(x−xk)
令其导数为零,得到:
∇f(xk)+∇2f(xk)(x−xk)=0
当
∇2f(xk)(Hesse矩阵)
非奇异时:
x=xk−[∇2f(xk)]−1∇f(xk)
上式称为 Newton 迭代公式,方便起见,我们将上式改写为
xk+1=xk+dk
其中
dk 是线性方程组
∇2f(xk)d=−∇f(xk)
的解向量。
步骤:
- 选定初始点 x1 和精度要求 ϵ>1 ,取 k=1。
- 若 ∥∇f(xk)∥<ϵ,则停止,取 x∗=xk ;否则求解线性方程组:∇2f(xk)d=−∇f(xk) 得到 dk。
- 置 xk+1=xk+dk,k=k+1。转到步骤2。
Newton 法求解无约束优化问题会出现以下情况:
- 收敛到极小点;
- 收敛到鞍点;
- Hesse矩阵奇异,无法继续计算。
其优点是收敛速度快,但是每一步不能保证目标函数值总是下降的。
共轭梯度法
共轭梯度法用来求解正定二次规划问题,它具有如下性质:
- 搜素方向是下降方向;
- 不必计算Hesse矩阵,只计算函数值和梯度;
- 具有二次终止性。
这里不具体推导共轭梯度法的收敛原理,仅介绍其思想。设目标函数为
f(x)=12xTx+rTx+δ
其中
x=(x1,x2,…,xn)T,r=(r1,r2,…,rn)T∈Rn,δ∈Rn。设
q1,q2,…,qk 是
k(k≤n) 个两两正交的非零向量,从任意初始点出发,一次沿
q1,q2,…,qk 作精确一维搜索,得到
x2,x3,…,xk+1 则
xk+1 是
f(x) 在仿射集
X¯k={x=x1+∑i=1kα^iqi|α^i∈R,i=1,2,…,k}
上的唯一极小点。当
k=n 时,
xk+1 是
f(x) 在整个空间上的唯一极小点。
考虑一般正定二次函数:
f(x)=12xTGx+rTx+δ
其中
G 是正定矩阵。
d1,d2,…,dk 是
G 的
k(k≤n) 个非零共轭方向,从任意初始点
x1 出发,一次沿
di≠0(i=1,2,…,k) 作一维精确搜索,得到
x2,x3,…,xk+1 则
xk+1 是
f(x) 在仿射集
Xk={x=x1+∑i=1kαidi|αi∈R,i=1,2,…,k}
上的唯一极小点。当
k=n 时,
xk+1 是
f(x) 在整个空间上的唯一极小点。且此时:
⟨∇f(xk+1),di⟩=0,i=1,2,…,k
上述结论被称为
扩展子空间定理。
步骤:
- 选定初始点 x1 和精度要求 ϵ>1 ,取 k=1。
- 若 ∥∇f(xk)∥<ϵ,则停止,取 x∗=xk ;否则,置:
dk=−∇f(xk)+βk−1dk−1
其中(Pulak-Ribiere-Polyak(PRP)公式)βk−1=⎧⎩⎨⎪⎪⎪⎪0,∥∇f(xk)∥2∥∇f(xk−1)∥2,k=1k>1
或(Fletcher-Reeves(FR)公式)βk−1=⎧⎩⎨⎪⎪⎪⎪0,∇f(xk)T(∇f(xk)−∇f(xk−1))∇f(xk−1)T∇f(xk−1),k=1k>1
- 一维搜索,求解一维问题:
minϕ(α)=f(xk+αd)
得到 α,置xk+1=xk+αkdk
- k=k+1 ,转到步骤2。
虽然共轭梯度法是根据二次函数导出的,但仍旧适用于一些可微函数。这里需要解决一个问题:共轭梯度法产生的搜索方向是否为下降方向?
定理:设 f(x) 具有连续的一阶偏导数,并假设一维搜索是精确的,考虑用共轭梯度法求解无约束问题 minf(x),x∈Rn。若 ∇f(xk)≠0,则搜索方向 dk 是 xk 处的下降方向。
定理:若一维搜索是精确的,则共轭梯度法具有二次终止性。
对于正定二次函数,共轭梯度法至多 n 步终止,否则说明目标函数不是正定二次函数,或者说目标函数没有进入一个正定二次函数的区域。
如果你想继续学习凸优化相关知识,请参考下一篇:约束规划问题与凸二次规划