无约束最优化问题的一般结构与规划方法

  • 无约束问题与最优解
  • 最优性条件
  • 一维线性搜索
    • 精确线性搜索
    • 直接搜索法
    • 非精确一维搜索法
  • 下降算法的收敛性与收敛速度
  • 无约束规划
    • 最速下降法
    • Newton法
      • Newton-最速下降混合算法
      • 阻尼Newton法
      • 拟Newton法
    • 共轭梯度法

无约束问题与最优解

考虑如下最优化问题:

minxRnf(x) min x ∈ R n f ( x )
无约束最优化问题的解由局部解和全局解两种,而实际上可行的往往只有局部解(或严格局部解)。如不加说明我们讨论的都是局部解。
局部解定义
xRn x ∗ ∈ R n ,若存在 x x ∗ δ(δ>0) δ ( δ > 0 ) 邻域
Nδ(x)={x|xx<δ} N δ ( x ∗ ) = { x | ‖ x − x ∗ ‖ < δ }
使得
f(x)f(x),xNδ(x) f ( x ) ≥ f ( x ∗ ) , ∀ x ∈ N δ ( x ∗ )
则称 x x ∗ f(x) f ( x ) 的局部解;若
f(x)>f(x),xNδ(x) f ( x ) > f ( x ∗ ) , ∀ x ∈ N δ ( x ∗ )
则称 x x ∗ f(x) f ( x ) 的严格局部解。

最优性条件

一阶必要条件
f(x) f ( x ) 一阶连续可微,若 x x ∗ 是一个局部解,则: f(x)=0 ∇ f ( x ∗ ) = 0 。即 x x ∗ 在任何方向上的方向导数均为零,该点所处的切平面是水平的。
二阶必要条件
f(x) f ( x ) 二阶连续可微,若 x x ∗ 是一个局部解,则:

f(x)=0,2f(x)  ∇ f ( x ∗ ) = 0 , ∇ 2 f ( x ∗ )  为半正定
即在局部解 x x ∗ 处二阶方向导数非负。满足 f(x)=0 ∇ f ( x ∗ ) = 0 的点 x x ∗ 被称为函数 f f 的平稳点或 驻点,不是极小点也不是极大点的平稳点被称为函数的 鞍点
二阶充分条件
f(x) f ( x ) 二阶连续可微,且
f(x)=0,2f(x)  ∇ f ( x ∗ ) = 0 , ∇ 2 f ( x ∗ )  为正定
x x ∗ 是无约束问题的一个严格局部解。
凸充分性定理
f:RnR f : R n → R 是凸函数,且 f(x) f ( x ) 的一阶连续可微的,则 x x ∗ 是全局解得充分必要条件是 f(x)=0 ∇ f ( x ∗ ) = 0

一维线性搜索

求解最优化问题的关键是构造一个点列 {xk} { x k } 使其满足

limkf(xk)=f(x)=minxRf(x),limkxk=x lim k → ∞ f ( x k ) = f ( x ∗ ) = min x ∈ R f ( x ) , lim k → ∞ x k = x ∗
x x ∗ 为问题的解, 称 {xk} { x k } 极小化点列,其构造方法一般采用逐步构造法:
xk+1=xk+αkdk,k=0,1,2, x k + 1 = x k + α k d k , k = 0 , 1 , 2 , …
dk d k 搜索方向, ak a k 步长。一维搜索问题即讨论如何确定步长的问题,下面简要介绍几种搜索方法,及其特色,但对算法本身不予详细介绍。

精确线性搜索

如果有 αk α k 使得

ϕ(αk)=minα0{ϕ(α)=f(xk+αdk)} ϕ ( α k ) = min α ≥ 0 { ϕ ( α ) = f ( x k + α d k ) }
则称该搜索为精确线性搜索,称 αk α k 为最优步长。该方法有重要理论价值,但除了 f(x) f ( x ) 是二次函数的特殊情况外,确定精确极小点是很困难的。

直接搜索法

首先介绍两个概念。
搜索区间
α α ∗ ϕ(α) ϕ ( α ) 的极小点,若存在区间 [a,b] [ a , b ] 使得 α[a.b] α ∗ ∈ [ a . b ] ,则称 [a,b] [ a , b ] ϕ(α) ϕ ( α ) 的搜索区间。确定搜索区间可采用进退法。从一点出发确定函数值“高-低-高”的4点,一个方向不成功就退回来反方向寻找。
单峰函数
设函数 ϕ(α) ϕ ( α ) 在区间 [a,b] [ a , b ] 内存在极小点 α(a.b) α ∗ ∈ ( a . b ) ,如果对于任意 α1,α2 α 1 , α 2 满足:

  1. α1<α2α α 1 < α 2 ≤ α ∗ 时,有 ϕ(α1)>ϕ(α2) ϕ ( α 1 ) > ϕ ( α 2 )
  2. αα1<α2 α ∗ ≤ α 1 < α 2 时,有 ϕ(α1)<ϕ(α2) ϕ ( α 1 ) < ϕ ( α 2 )

ϕ(α) ϕ ( α ) 在区间 [a,b] [ a , b ] 上是单峰函数。

假设 f(x) f ( x ) 在得到的搜索区间上是单峰函数,我们可以通过 0.618法直接搜索近似最优步长。0.618法的基本思想是通过取试探点进行函数值比较,使得包含极小点的搜索区间不断减小,每次迭代极小区间的收缩比为0.618,即以线性速度收敛的极小点附近。

非精确一维搜索法

0.618法的计算量比较大,我们可 适当放松对 αk α k 的要求,使目标函数在迭代的每一步都充分下降即可。非精确一维搜索的基本思想是求 μ μ 使得 ϕ(μ)<ϕ(0) ϕ ( μ ) < ϕ ( 0 ) ,但不希望 μ μ 值过大否则会引起点列的大幅度摆动,也不希望 μ μ 值过小,否则会使得点列在未达到 x x ∗ 之前没有进展。常见的方法包括:Goldstein方法Armijo方法Wolfe-Powell方法

下降算法的收敛性与收敛速度

下降算法的一般迭代格式如下:

  1. 给定初始点 x1 x 1 k:=1 k := 1
  2. 确定局部下降方向 dk d k 使得
    f(xk)Tdk<0 ∇ f ( x k ) T d k < 0
  3. 确定步长 αk α k 使得
    f(xk+αkdk)<f(xk) f ( x k + α k d k ) < f ( x k )
  4. xk+1=xk+αkdk x k + 1 = x k + α k d k
  5. f(xk+1)=0 ∇ f ( x k + 1 ) = 0 则停,否则令 k:=k+1 k := k + 1 ,转步骤1。

若上述算法可行,须解决下述问题:

  1. 如何确定搜索方向?
  2. 如何进行一维搜索确定每一步步长?
  3. 如果确定当前点的终止准则?

问题2已在上一小节讨论过,另外两个问题见下文。下降算法产生极小化序列 {xk} { x k } ,对应的目标函数序列 {f(xk)} { f ( x k ) } 是单调递减的。所谓收敛,是指序列 {xk} { x k } 或它的一个子列满足 limkxk=x lim k → ∞ x k = x ∗ 。通常获得这样的结果很难。若对于某些算法来说,只有当初始点靠近极小点 x x ∗ 时,才能保证序列 {xk} { x k } 收敛到极小点,则称这类算法为局部收敛。反之,若对于任意初始点产生的序列收敛到极小点,这类算法则被称为全局收敛

为了使极小化序列能够收敛到一个平稳点,通常要求目标函数能够“充分”下降。由 f(x) f ( x ) 的一阶Taylor展开式:

f(xk+αkdk)=f(xk)+αkf(xk)Tdk+o(αkdk) f ( x k + α k d k ) = f ( x k ) + α k ∇ f ( x k ) T d k + o ( ‖ α k d k ‖ )
可知,当 dk d k f(xk) ∇ f ( x k ) 接近于正交时, f(x) f ( x ) 下降很少,因此要求其二者之间的夹角远离正交方向,即存在 u¯>0 u ¯ > 0 使得:
θkπ2u¯,k θ k ≤ π 2 − u ¯ , ∀ k
其中
cosθk=f(xk)Tdkf(xk)dk cos ⁡ θ k = − ∇ f ( x k ) T d k ‖ ∇ f ( x k ) ‖ ‖ d k ‖

设序列 {xk} { x k } 收敛到 x x ∗ ,若极限

limkxk+1xxkx=β lim k → ∞ ‖ x k + 1 − x ∗ ‖ ‖ x k − x ∗ ‖ = β
存在,则当 0<β<1 0 < β < 1 时,称 {xk} { x k } 线性收敛;当 β=0 β = 0 时,称 {xk} { x k } 超线性收敛;当 β=1 β = 1 时,称 {xk} { x k } 次线性收敛。若存在某个 p1 p ≥ 1 ,有
limkxk+1xxkxp=β+ lim k → ∞ ‖ x k + 1 − x ∗ ‖ ‖ x k − x ∗ ‖ p = β ≤ + ∞
则称 {xk} { x k } p p 阶收敛。当 p>1 p > 1 时, p p 阶收敛必为超线性收敛,反之不一定成立。最优化算法中通常考虑线性收敛、超线性收敛和二阶收敛。

无约束规划

假设我们要考虑的无约束规划问题为:

minxRnf(x),fC1 min x ∈ R n f ( x ) , f ∈ C 1
其中 C1 C 1 表示一阶连续可微函数的全体。下面介绍三种规划方法,仅简述其规划思想与执行步骤,不做具体推导。

最速下降法

根据Taylor级数展开,当 f(x) f ( x ) 在某点 xk x k 处连续可微,且 f(xk)0 ∇ f ( x k ) ≠ 0 时,我们可得:

f(xk+adk)=f(xk)+af(xk)Tdk+o(adk) f ( x k + a d k ) = f ( x k ) + a ∇ f ( x k ) T d k + o ( ‖ a d k ‖ )
其中 a>0 a > 0 dk d k 是一个确定的方向向量。若向量 dk d k 满足 f(xk)dk<0 ∇ f ( x k ) d k < 0 ,则 dk d k 是函数 f(x) f ( x ) xk x k 处的下降方向。进一步改写上式:
f(xk+adk)=f(xk)a(f(xk)Tdk)+o(adk) f ( x k + a d k ) = f ( x k ) − a ( − ∇ f ( x k ) T d k ) + o ( ‖ a d k ‖ )
可见若 f(xk)Tdk − ∇ f ( x k ) T d k 越大,则下降幅度越大。由
f(xk)Tdk=f(xk)Tdkcosθk − ∇ f ( x k ) T d k = ‖ − ∇ f ( x k ) T ‖ ‖ d k ‖ cos ⁡ θ k
可知取 θk=0 θ k = 0 时,也就是 dk=f(xk) d k = − ∇ f ( x k ) 时达到最大值。因此在 xk x k 点处的搜索方向应取 dk=f(xk) d k = − ∇ f ( x k )

步骤:

  1. 选定初始点 x1 x 1 和精度要求 ϵ>1 ϵ > 1 ,取 k=1 k = 1
  2. f(xk)<ϵ ‖ ∇ f ( x k ) ‖ < ϵ ,则停止,取 x=xk x ∗ = x k ;否则令 dk=f(xk) d k = − ∇ f ( x k )
  3. xk x k 处沿方向 dk d k 做线性搜索,得 xk+1=xk+akdk x k + 1 = x k + a k d k k=k+1 k = k + 1 ,转步骤2。

在第3步,采用精确线性搜索,即:

ak=argminf(xk+adk) a k = arg ⁡ min f ( x k + a d k )
,可得:
df(xk+adk)daa=ak=(dk)Tf(xk+1)=0 d f ( x k + a d k ) d a | a = a k = ( d k ) T ∇ f ( x k + 1 ) = 0
可见 dk d k dk+1 d k + 1 正交。

Newton法

Newton法利用二次近似多项式的极值点求法给出原函数极值点的求法。本节考虑 f(x) f ( x ) 二次可微的情形。

利用Taylor展开,考虑在 xk x k 点处的二次近似多项式:

f(x)f(xk)+f(xk)T(xxk)+12(xxk)T2f(xk)(xxk) f ( x ) ≈ f ( x k ) + ∇ f ( x k ) T ( x − x k ) + 1 2 ( x − x k ) T ∇ 2 f ( x k ) ( x − x k )
令其导数为零,得到:
f(xk)+2f(xk)(xxk)=0 ∇ f ( x k ) + ∇ 2 f ( x k ) ( x − x k ) = 0
2f(xk) ∇ 2 f ( x k ) ( Hesse矩阵) 非奇异时:
x=xk[2f(xk)]1f(xk) x = x k − [ ∇ 2 f ( x k ) ] − 1 ∇ f ( x k )
上式称为 Newton 迭代公式,方便起见,我们将上式改写为
xk+1=xk+dk x k + 1 = x k + d k
其中 dk d k 是线性方程组
2f(xk)d=f(xk) ∇ 2 f ( x k ) d = − ∇ f ( x k )
的解向量。

步骤:

  1. 选定初始点 x1 x 1 和精度要求 ϵ>0 ϵ > 0 ,取 k=1 k = 1
  2. f(xk)<ϵ ‖ ∇ f ( x k ) ‖ < ϵ ,则停止,取 x=xk x ∗ = x k ;否则求解线性方程组: 2f(xk)d=f(xk) ∇ 2 f ( x k ) d = − ∇ f ( x k ) 得到 dk d k
  3. xk+1=xk+dk,k=k+1 x k + 1 = x k + d k , k = k + 1 。转到步骤2。

Newton 法求解无约束优化问题会出现以下情况:

  1. 收敛到极小点;
  2. 收敛到鞍点;
  3. Hesse矩阵奇异,无法继续计算。

其优点是收敛速度快,但是每一步不能保证目标函数值总是下降的。使用Newton法时我们已经假设了初始点足够接近极小点,然而实际上我们并不知道极小点在什么地方,因此一般不直接使用。修正的Newton法有多种,这里只介绍两种方法。

Newton-最速下降混合算法

当 Hessian 矩阵正定时,采用 Newton 法得到的搜索方向搜索;当 Hessian 矩阵非正定时,采用负梯度方向搜索。
步骤:

  1. 选定初始点 x1 x 1 和精度要求 ϵ>0 ϵ > 0 ,取 k=1 k = 1
  2. f(xk)<ϵ ‖ ∇ f ( x k ) ‖ < ϵ ,则停止,取 x=xk x ∗ = x k ;否则求解线性方程组: 2f(xk)d=f(xk) ∇ 2 f ( x k ) d = − ∇ f ( x k ) 得到 dk d k
  3. dk d k 有解,即 Hessian 矩阵为正定阵,且满足 f(xk)dk<0 ∇ f ( x k ) d k < 0 ,转下一步;否则,取 dk=f(xk) d k = − ∇ f ( x k ) ,转下一步。
  4. xk+1=xk+dk,k=k+1 x k + 1 = x k + d k , k = k + 1 。转到步骤2。

阻尼Newton法

将非正定的 Hessian 矩阵通过加入阻尼因子编程 Hessian 矩阵,即选取参数 μk μ k 使得矩阵 Ak=2f(xk)+μkI A k = ∇ 2 f ( x k ) + μ k I 正定。步骤与上一算法类似,只是步骤2有所不同,此处从略。

拟Newton法

拟Newton法用来解决Newton法中潜在的Hessian矩阵不正定、Hessian矩阵计算量过大的问题。其基本思想是不直接计算Hessian矩阵,而是通过逼近的方法寻找近似矩阵。近似矩阵的找法很多,如利用秩1矩阵秩2矩阵近似。此处暂时不做详细推导,敬请期待。

共轭梯度法

共轭梯度法用来求解正定二次规划问题,它具有如下性质:

  1. 搜素方向是下降方向;
  2. 不必计算Hesse矩阵,只计算函数值和梯度;
  3. 具有二次终止性。

这里不具体推导共轭梯度法的收敛原理,仅介绍其思想。设目标函数为

f(x)=12xTx+rTx+δ f ( x ) = 1 2 x T x + r T x + δ
其中 x=(x1,x2,,xn)T,r=(r1,r2,,rn)TRn,δRn x = ( x 1 , x 2 , … , x n ) T , r = ( r 1 , r 2 , … , r n ) T ∈ R n , δ ∈ R n 。设 q1,q2,,qk q 1 , q 2 , … , q k k(kn) k ( k ≤ n ) 个两两 正交的非零向量,从任意初始点出发,一次沿 q1,q2,,qk q 1 , q 2 , … , q k 作精确一维搜索,得到 x2,x3,,xk+1 x 2 , x 3 , … , x k + 1 xk+1 x k + 1 f(x) f ( x ) 在仿射集
X¯k={x=x1+i=1kα^iqi|α^iR,i=1,2,,k} X ¯ k = { x = x 1 + ∑ i = 1 k α ^ i q i | α ^ i ∈ R , i = 1 , 2 , … , k }
上的唯一极小点。当 k=n k = n 时, xk+1 x k + 1 f(x) f ( x ) 在整个空间上的唯一极小点。

考虑一般正定二次函数:

f(x)=12xTGx+rTx+δ f ( x ) = 1 2 x T G x + r T x + δ
其中 G G 是正定矩阵。 d1,d2,,dk d 1 , d 2 , … , d k G G k(kn) k ( k ≤ n ) 个非零共轭方向,从任意初始点 x1 x 1 出发,一次沿 di0(i=1,2,,k) d i ≠ 0 ( i = 1 , 2 , … , k ) 作一维精确搜索,得到 x2,x3,,xk+1 x 2 , x 3 , … , x k + 1 xk+1 x k + 1 f(x) f ( x ) 在仿射集
Xk={x=x1+i=1kαidi|αiR,i=1,2,,k} X k = { x = x 1 + ∑ i = 1 k α i d i | α i ∈ R , i = 1 , 2 , … , k }
上的唯一极小点。当 k=n k = n 时, xk+1 x k + 1 f(x) f ( x ) 在整个空间上的唯一极小点。且此时:
f(xk+1),di=0,i=1,2,,k ⟨ ∇ f ( x k + 1 ) , d i ⟩ = 0 , i = 1 , 2 , … , k
上述结论被称为 扩展子空间定理

步骤:

  1. 选定初始点 x1 x 1 和精度要求 ϵ>1 ϵ > 1 ,取 k=1 k = 1
  2. f(xk)<ϵ ‖ ∇ f ( x k ) ‖ < ϵ ,则停止,取 x=xk x ∗ = x k ;否则,置:
    dk=f(xk)+βk1dk1 d k = − ∇ f ( x k ) + β k − 1 d k − 1
    其中(Pulak-Ribiere-Polyak(PRP)公式)
    βk1=0,f(xk)2f(xk1)2,k=1k>1 β k − 1 = { 0 , k = 1 ‖ ∇ f ( x k ) ‖ 2 ‖ ∇ f ( x k − 1 ) ‖ 2 , k > 1
    或(Fletcher-Reeves(FR)公式)
    βk1=0,f(xk)T(f(xk)f(xk1))f(xk1)Tf(xk1),k=1k>1 β k − 1 = { 0 , k = 1 ∇ f ( x k ) T ( ∇ f ( x k ) − ∇ f ( x k − 1 ) ) ∇ f ( x k − 1 ) T ∇ f ( x k − 1 ) , k > 1
  3. 一维搜索,求解一维问题:
    minϕ(α)=f(xk+αd) min ϕ ( α ) = f ( x k + α d )
    得到 α α ,置
    xk+1=xk+αkdk x k + 1 = x k + α k d k
  4. k=k+1 k = k + 1 ,转到步骤2。

虽然共轭梯度法是根据二次函数导出的,但仍旧适用于一些可微函数。这里需要解决一个问题:共轭梯度法产生的搜索方向是否为下降方向?

定理:设 f(x) f ( x ) 具有连续的一阶偏导数,并假设一维搜索是精确的,考虑用共轭梯度法求解无约束问题 minf(x),xRn min f ( x ) , x ∈ R n 。若 f(xk)0 ∇ f ( x k ) ≠ 0 ,则搜索方向 dk d k xk x k 处的下降方向。

定理:若一维搜索是精确的,则共轭梯度法具有二次终止性。
对于正定二次函数,共轭梯度法至多 n n 步终止,否则说明目标函数不是正定二次函数,或者说目标函数没有进入一个正定二次函数的区域。

如果你想继续学习凸优化相关知识,请参考下一篇:约束规划问题与凸二次规划

你可能感兴趣的:(Convex,Optimization)