- 无约束问题与最优解
- 最优性条件
- 一维线性搜索
- 下降算法的收敛性与收敛速度
- 无约束规划
- 最速下降法
- Newton法
- Newton-最速下降混合算法
- 阻尼Newton法
- 拟Newton法
- 共轭梯度法
无约束问题与最优解
考虑如下最优化问题:
minx∈Rnf(x) min x ∈ R n f ( x )
无约束最优化问题的解由局部解和全局解两种,而实际上可行的往往只有局部解(或严格局部解)。如不加说明我们讨论的都是局部解。
局部解定义
设
x∗∈Rn x ∗ ∈ R n ,若存在
x∗ x ∗ 的
δ(δ>0) δ ( δ > 0 ) 邻域
Nδ(x∗)={x|∥x−x∗∥<δ} N δ ( x ∗ ) = { x | ‖ x − x ∗ ‖ < δ }
使得
f(x)≥f(x∗),∀x∈Nδ(x∗) f ( x ) ≥ f ( x ∗ ) , ∀ x ∈ N δ ( x ∗ )
则称
x∗ x ∗ 为
f(x) f ( x ) 的局部解;若
f(x)>f(x∗),∀x∈Nδ(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:Rn→R f : R n → R 是凸函数,且
f(x) f ( x ) 的一阶连续可微的,则
x∗ x ∗ 是全局解得充分必要条件是
∇f(x∗)=0 ∇ f ( x ∗ ) = 0 。
一维线性搜索
求解最优化问题的关键是构造一个点列 {xk} { x k } 使其满足
limk→∞f(xk)=f(x∗)=minx∈Rf(x),limk→∞xk=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<α2≤α∗ α 1 < α 2 ≤ α ∗ 时,有 ϕ(α1)>ϕ(α2) ϕ ( α 1 ) > ϕ ( α 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方法。
下降算法的收敛性与收敛速度
下降算法的一般迭代格式如下:
- 给定初始点 x1 x 1 , k:=1 k := 1 ;
- 确定局部下降方向 dk d k 使得
∇f(xk)Tdk<0 ∇ f ( x k ) T d k < 0
- 确定步长 αk α k 使得
f(xk+αkdk)<f(xk) f ( x k + α k d k ) < f ( x k )
- 令 xk+1=xk+αkdk x k + 1 = x k + α k d k ;
- 若 ∇f(xk+1)=0 ∇ f ( x k + 1 ) = 0 则停,否则令 k:=k+1 k := k + 1 ,转步骤1。
若上述算法可行,须解决下述问题:
- 如何确定搜索方向?
- 如何进行一维搜索确定每一步步长?
- 如果确定当前点的终止准则?
问题2已在上一小节讨论过,另外两个问题见下文。下降算法产生极小化序列 {xk} { x k } ,对应的目标函数序列 {f(xk)} { f ( x k ) } 是单调递减的。所谓收敛,是指序列 {xk} { x k } 或它的一个子列满足 limk→∞xk=x∗ lim k → ∞ x k = x ∗ 。通常获得这样的结果很难。若对于某些算法来说,只有当初始点靠近极小点 x∗ x ∗ 时,才能保证序列 {xk} { x k } 收敛到极小点,则称这类算法为局部收敛。反之,若对于任意初始点产生的序列收敛到极小点,这类算法则被称为全局收敛。
为了使极小化序列能够收敛到一个平稳点,通常要求目标函数能够“充分”下降。由 f(x) f ( x ) 的一阶Taylor展开式:
f(xk+αkdk)=f(xk)+αk∇f(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≤π2−u¯,∀k θ k ≤ π 2 − u ¯ , ∀ k
其中
cosθk=−∇f(xk)Tdk∥∇f(xk)∥∥dk∥ cos θ k = − ∇ f ( x k ) T d k ‖ ∇ f ( x k ) ‖ ‖ d k ‖
设序列 {xk} { x k } 收敛到 x∗ x ∗ ,若极限
limk→∞∥xk+1−x∗∥∥xk−x∗∥=β 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 }
次线性收敛。若存在某个
p≥1 p ≥ 1 ,有
limk→∞∥xk+1−x∗∥∥xk−x∗∥p=β≤+∞ lim k → ∞ ‖ x k + 1 − x ∗ ‖ ‖ x k − x ∗ ‖ p = β ≤ + ∞
则称
{xk} { x k } 为
p p 阶收敛。当
p>1 p > 1 时,
p p 阶收敛必为超线性收敛,反之不一定成立。最优化算法中通常考虑线性收敛、超线性收敛和二阶收敛。
无约束规划
假设我们要考虑的无约束规划问题为:
minx∈Rnf(x),f∈C1 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)+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 ‖ )
其中
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)T∥∥dk∥cosθ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 ) 。
步骤:
- 选定初始点 x1 x 1 和精度要求 ϵ>1 ϵ > 1 ,取 k=1 k = 1 。
- 若 ∥∇f(xk)∥<ϵ ‖ ∇ f ( x k ) ‖ < ϵ ,则停止,取 x∗=xk x ∗ = x k ;否则令 dk=−∇f(xk) d k = − ∇ f ( x k ) 。
- 在 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)da∣∣∣a=ak=(dk)T∇f(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(x−xk)+12(x−xk)T∇2f(xk)(x−xk) 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)(x−xk)=0 ∇ f ( x k ) + ∇ 2 f ( x k ) ( x − x k ) = 0
当
∇2f(xk) ∇ 2 f ( x k ) ( Hesse矩阵)
非奇异时:
x=xk−[∇2f(xk)]−1∇f(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 )
的解向量。
步骤:
- 选定初始点 x1 x 1 和精度要求 ϵ>0 ϵ > 0 ,取 k=1 k = 1 。
- 若 ∥∇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 。
- 置 xk+1=xk+dk,k=k+1 x k + 1 = x k + d k , k = k + 1 。转到步骤2。
Newton 法求解无约束优化问题会出现以下情况:
- 收敛到极小点;
- 收敛到鞍点;
- Hesse矩阵奇异,无法继续计算。
其优点是收敛速度快,但是每一步不能保证目标函数值总是下降的。使用Newton法时我们已经假设了初始点足够接近极小点,然而实际上我们并不知道极小点在什么地方,因此一般不直接使用。修正的Newton法有多种,这里只介绍两种方法。
Newton-最速下降混合算法
当 Hessian 矩阵正定时,采用 Newton 法得到的搜索方向搜索;当 Hessian 矩阵非正定时,采用负梯度方向搜索。
步骤:
- 选定初始点 x1 x 1 和精度要求 ϵ>0 ϵ > 0 ,取 k=1 k = 1 。
- 若 ∥∇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 。
- 若 dk d k 有解,即 Hessian 矩阵为正定阵,且满足 ∇f(xk)dk<0 ∇ f ( x k ) d k < 0 ,转下一步;否则,取 dk=−∇f(xk) d k = − ∇ f ( x k ) ,转下一步。
- 置 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矩阵近似。此处暂时不做详细推导,敬请期待。
共轭梯度法
共轭梯度法用来求解正定二次规划问题,它具有如下性质:
- 搜素方向是下降方向;
- 不必计算Hesse矩阵,只计算函数值和梯度;
- 具有二次终止性。
这里不具体推导共轭梯度法的收敛原理,仅介绍其思想。设目标函数为
f(x)=12xTx+rTx+δ f ( x ) = 1 2 x T x + r T x + δ
其中
x=(x1,x2,…,xn)T,r=(r1,r2,…,rn)T∈Rn,δ∈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(k≤n) 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|α^i∈R,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(k≤n) k ( k ≤ n ) 个非零共轭方向,从任意初始点
x1 x 1 出发,一次沿
di≠0(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|αi∈R,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
上述结论被称为
扩展子空间定理。
步骤:
- 选定初始点 x1 x 1 和精度要求 ϵ>1 ϵ > 1 ,取 k=1 k = 1 。
- 若 ∥∇f(xk)∥<ϵ ‖ ∇ f ( x k ) ‖ < ϵ ,则停止,取 x∗=xk x ∗ = x k ;否则,置:
dk=−∇f(xk)+βk−1dk−1 d k = − ∇ f ( x k ) + β k − 1 d k − 1
其中(Pulak-Ribiere-Polyak(PRP)公式)
βk−1=⎧⎩⎨⎪⎪0,∥∇f(xk)∥2∥∇f(xk−1)∥2,k=1k>1 β k − 1 = { 0 , k = 1 ‖ ∇ f ( x k ) ‖ 2 ‖ ∇ f ( x k − 1 ) ‖ 2 , k > 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 β 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
- 一维搜索,求解一维问题:
minϕ(α)=f(xk+αd) min ϕ ( α ) = f ( x k + α d )
得到 α α ,置
xk+1=xk+αkdk x k + 1 = x k + α k d k
- k=k+1 k = k + 1 ,转到步骤2。
虽然共轭梯度法是根据二次函数导出的,但仍旧适用于一些可微函数。这里需要解决一个问题:共轭梯度法产生的搜索方向是否为下降方向?
定理:设 f(x) f ( x ) 具有连续的一阶偏导数,并假设一维搜索是精确的,考虑用共轭梯度法求解无约束问题 minf(x),x∈Rn min f ( x ) , x ∈ R n 。若 ∇f(xk)≠0 ∇ f ( x k ) ≠ 0 ,则搜索方向 dk d k 是 xk x k 处的下降方向。
定理:若一维搜索是精确的,则共轭梯度法具有二次终止性。
对于正定二次函数,共轭梯度法至多 n n 步终止,否则说明目标函数不是正定二次函数,或者说目标函数没有进入一个正定二次函数的区域。
如果你想继续学习凸优化相关知识,请参考下一篇:约束规划问题与凸二次规划