最優化演算法 三

2021-08-05 21:49:43 字數 3181 閱讀 6416

牛頓方法是現在用的比較廣泛的最優化演算法之一,其特點是收斂速度較快,上一節的梯度下降和隨機梯度下降都是一階收斂,而牛頓方法是二階收斂。

回憶高等數學裡面介紹的二階泰勒展開有q(

x)=f

(x0)

+∇f(

x0)(

x−x0

)+(x

−x0)

22!∇

2f(x

0) 而

q(x)

取到極值的條件,也就是最優化條件是∇q

(x)=

0 ,可得∇f

(xk)

+∇2f

(xk)

(x−x

k)=0

xk+1=xk

−(∇2

f(xk

))−1

∇f(x

k) x

k+1=

xk−h

−1kg

k 其中h

k=∇2

f(xk

),gk

=∇f(

xk) ,可以看到牛頓方法在迭代中不但使用了梯度,而且使用了二階的hessian矩陣。假設f

(x) 是二階可導,強凸,並且hessian的有界,並且在最優解附近的lipschitz continuous常數是m,另外∥∥

∇2f(

x)−1

∥∥≤n

,最優解為x∗

則 由於∇

f(xt

)−∇f

(x∗)

=∫10

∇2f(

xt+t

(x∗−

xt))

(xt−

x∗)d

x 而x

t+1−

x∗=x

t−x∗

−∇2f

(xt)

(xt−

x∗)=

∇2f(

xt)−

1[∇2

f(xt

)(xt

−x∗)

−(∇f

(xt)

−∇f(

x∗))

] 使用上面兩式還有lipschitz continuous可得 ∥∥

∇f(x

t)−∇

f(x∗

)−∇2

f(xt

)(xt

−x∗)

∥∥=∥

∥∥∫1

0[∇2

f(xt

+t(x

∗−xt

))−∇

2f(x

t)](

xt−x

∗)dx

∥∥∥

=∫10

∥∥∇2

f(xt

+t(x

∗−xt

))−∇

2f(x

t)∥∥

∥∥xt

−x∗∥

∥dx≤

∥∥xt

−x∗∥

∥∫10

mtdx

=m2∥

∥xt−

x∗∥∥

2 因此可得 ∥∥

xt+1

−x∗∥

∥≤mn

2∥∥x

t−x∗

∥∥2

牛頓方法中需要每一步去求解hessian矩陣的逆矩陣是乙個計算複雜度較高的操作,所以就出現了擬牛頓方法。擬牛頓方法就是通過近似的方法來求解hessian矩陣或其逆矩陣。具體的由於當x=

xk+1

時 ∇f

(xk+

1)−∇

f(xk

)=hk

(xk+

1−xk

) 其中h

k=∇2

f(x)

k ,記yk

=gk+

1−gk

,sk=

xk+1

−xk 得:yk

=hks

k 或h

−1ky

k=sk

以上稱為擬牛頓條件 如果h

k 是正定的話,可以保證牛頓方法的搜尋方向pk

是下降方向,因為hessian矩陣正定的話,由更新迭代的公式可以知道h−

1kgk

的方向和梯度gk

的方向一致(當目標函式為凸時),並且x=

xk−λ

h−1k

gk代入泰勒展開公式中得f(

x)=f

(xk)

−λgt

kh−1

kgk

當λ為充分小時,可以保證目標函式遞減。

擬牛頓方法用gk

作為h−1

k 的近似,要求矩陣gk

滿足同樣的條件,第一,gk

是正定的,第二,滿足擬牛頓條件。並且每次迭代中選擇更新矩陣gk

+1如下gk+

1=gk

+δgk

bfgs的方法是通過bk

去逼近hessian矩陣hk

相應的擬牛頓條件為bk

+1sk

=yk

並且通過上面的hessian矩陣更新公式bk

+1=b

k+pk

+qk

bk+1

sk=b

ksk+

pksk

+qks

k 且p

k qk

滿足如下條件:pk

sk=y

k qk

sk=−

bksk

找出適合條件的pk

和qk ,得到bfgs演算法矩陣bk

+1的迭代公式:bk

+1=b

k+yk

ytky

tksk

−bks

kstk

bkst

kbks

k 可以證明初始矩陣b0

為正定的時候,bk

也是正定矩陣。

擬牛頓方法中減少求逆的時間複雜度,但是又面臨另外的乙個問題,就是當原問題是乙個高維問題時,hessian矩陣的儲存成了乙個大的問題,因此有了l-bfgs演算法,l-bfgs演算法的思想是通過最近的m次sk

和yk 來近似計算下降方向,並且不用去儲存整個hessian矩陣。具體的推導不介紹了,演算法偽**如下:

最優化 牛頓優化演算法

本人總結的常用優化演算法pdf版本,主要講解原理 主要包括梯度下降,共軛梯度法 牛頓法,擬牛頓法 信賴域方法,罰函式法。coding utf 8 author uniquez file 牛頓法,基於dfp的擬牛頓法 date 2017 06 24 remark 原方程為 x1 2 2 x2 2 im...

最優化 數值優化演算法

核心思路 對梯度方向做一些修正,使得每次迭代尋找最優點都在可行域的內部進行。我們從可行域內部的某個點開始搜尋,一開始沿著梯度方向進行迭代搜尋,一旦碰到邊界 說明下一步可能會離開可行域 就要扭轉方向,使得搜尋過程始終在可行域的內部進行。當點落在可行域外部時,該怎樣選擇搜尋方向,衍生出了下列的演算法。1...

Dogleg「狗腿」最優化演算法

近期剛學習了dogleg狗腿最優化演算法,老師給出了乙個大體的框架並給出了乙個練習,讓我們用程式去實現它,鑑於本人剛剛開始接觸最優化,對matlab語言的使用也很生疏,在網上查閱了大量的資料,乙個通宵把演算法寫出來,並在matlab中得到了驗證。老師給出的練習為 主程式 demo dogleg pr...