漫步最優化二十二——收斂速率







——

大部分算法計算效率是有很大差別的,高效或者快速的算法僅需要少量的迭代就能收斂到解,並且計算量也很小。從經濟的角度來說,我們會選擇選擇最有效的算法,因此我們就需要度量算法收斂速率的定量指標或準則。

最基本的準則是序列的收斂階,如果{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

上面收斂速率的度量中,重點都是在解鄰域內考慮算法的有效性。通常而言優化的大部分計算都花在解的鄰域內,所以上面的度量是很有意義的。然而偶爾會有些算法在解的鄰域內有效而其他地方無效。這時候上面的判別準則會誤導我們,所以需要改用其他的準則。

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