漫步最优化二十二——收敛速率







——

大部分算法计算效率是有很大差别的,高效或者快速的算法仅需要少量的迭代就能收敛到解,并且计算量也很小。从经济的角度来说,我们会选择选择最有效的算法,因此我们就需要度量算法收敛速率的定量指标或准则。

最基本的准则是序列的收敛阶,如果{xk}k=0 是实数序列,那么它的收敛阶就是最大的非负整数p ,满足关系

0β<

其中

β=limk|xk+1x̂ ||xkx̂ |p(1)

x̂ k 的极限,参数β 称为收敛比。

1 如果

  • xk=γk, for 0<γ<1
  • xk=γ2k, for 0<γ<1

那么求出序列{xk}k=0 的收敛阶与收敛比。

(a)因为x̂ =0 ,所以

β=limkγk(1p)+1

对于p=0,1,2 ,我们有β=0,γ, ,所以p=1,β=γ
(b)

β=limkγ2(k+1)γ2kp=limk{γ2k(2p)}

对于p=0,1,2,3 ,我们有β=0,0,1, ,所以p=2,β=1

如果等式(1)的极限存在,那么

limk|xkx̂ |=ε

其中ε<1 ,所以

limk|xk+1x̂ |=βεp

所以p 增加或者β 减少的话,收敛速率在增加。如果ρ=0.8 ,那么(a)(b)的序列分别为

{xk}k={1,0.8,0.64.0.512,0.409,,0}


{xk})k=0={1,0.64,0.409,0.167,0.023,,0}

第二个序列的收敛速率比第一个更快。

如果p=1,β<1 ,那么我们称序列是线性收敛的;如果p=1,β=0 或者p2 ,那么称序列是超线性收敛的。

大部分非线性规划算法都是线性收敛的,因此他们的比较都是基于β 值。

另一种度量序列收敛速率的是平均收敛阶数,也就是满足关系

ρ=limk|xkx̂ |1/(p+1)k=1

的最小非负整数。如果不存在p>0 ,那么收敛的阶数为无穷大。

2 找出序列{xk}k=0 的平均收敛阶数

  • xk=γk, for 0<γ<1
  • xk=γ2k, for 0<γ<1

(a)因为x̂ =0

ρ=limk(ρk)1/(p+1)k=1

所以对于p=0,1,2 ,我们有ρ=0,1,1 ,因此p=1

(b)

ρ=limk(ρ2k)1/(p+1)k=1

所以对于p=0,1,2,3 ,我们有ρ=0,ρ,1,1 ,因此p=2

如果收敛的平均阶数是单位1,那么我们称序列是平均线性收敛,平均线性收敛定义为

ρ=limk|xkx̂ |1/k

上面的讨论中,我们考虑的是数列的收敛性。随着越来越靠近解,这样的序列可能由目标函数的值构成,这时候我们度量目标函数靠近其最小值的速度。或者说,如果我们想知道问题靠近最优解有多快,可以用向量xkx̂  的长度或长度的平方,即xkx̂  或者xkx̂ 2

上面收敛速率的度量中,重点都是在解邻域内考虑算法的有效性。通常而言优化的大部分计算都花在解的邻域内,所以上面的度量是很有意义的。然而偶尔会有些算法在解的邻域内有效而其他地方无效。这时候上面的判别准则会误导我们,所以需要改用其他的准则。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章