最優化六:牛頓法(牛頓法、擬牛頓法、阻尼牛頓法)

牛頓法將目標函數近似爲二階函數,沿着牛頓方向進行優化(包含了Hession矩陣與負梯度信息)。

阻尼牛頓法在更新參數之前進行了一維搜索確定步長,確保沿着下降的方向優化。

擬牛頓法用常數矩陣近似替代Hession矩陣或Hession矩陣的逆矩陣,不用求偏導與求逆,簡化運算。

1 牛頓法

1.1 算法流程

梯度下降法利用了負梯度方向進行迭代,算法如下:

                            

1.2 證明過程

對於最優化問題:

                                                                                           \underset{x}{min}f(x)                                                   (1-1)

對函數f(x)進行二階泰勒展開得到:

                                                f(x) = f(x_i) + \bigtriangledown ^Tf(x_i)(x-x_i) + \frac{1}{2}(x-x_i)^TA_i(x-x_i)           (1-2)

將函數中的x-x_i看做是變量,令\bigtriangleup x = x- x_i代入(1-2)可以得到:

                                                        \phi(\bigtriangleup x) = f(x_i) + \bigtriangledown ^Tf(x_i)\bigtriangleup x + \frac{1}{2}\bigtriangleup x^TA_i\bigtriangleup x                  (1-3)

求解最優的x使函數f(x)取得最小值,等價於找到最優的\bigtriangleup x使得\phi(\bigtriangleup x)取得最小值。令導數=0即可找到極值點,對(1-3)求導數使其=0得到:

                                                                            \bigtriangledown ^Tf(x_i)+A_i\bigtriangleup x = 0                                          (1-4)

可以得到:

                                                                               x = x_i - A_i^{-1}\bigtriangledown f(x_i)                                         (1-5)

需要逐次迭代可以寫爲:

                                                                             x_{i+1} = x_i - A_i^{-1}\bigtriangledown f(x_i)                                      (1-6)

1.3 幾何理解

梯度下降法搜索方向沿着等高線的法向進行搜索,每次迭代優化方向爲梯度方向,即當前點所在等高線的法向。但往往等高線很少是正圓形,這種情況下搜索次數會過多。

牛頓法搜索方向爲橢圓中心方向,這個方向也叫做牛頓方向,可以看到更新方程A_i^{-1}\bigtriangledown f(x_i)的組成分爲兩部分:\bigtriangledown f(x_i)毋庸置疑是負梯度信息,A_i^{-1}包含了該處的曲率(Hession矩陣描述局部曲率)。如下圖所示,S^N方向爲牛頓方向,S^{-1}爲負梯度方向。

                                                             

2 阻尼牛頓法

對於牛頓法,確定了迭代方向之後,迭代步長默認爲1,但是這個迭代方向並不一定是朝着函數值下降的方向。可以進行簡單判斷,對當前迭代的方向與梯度方向進行內積,如果內積爲負,則表明迭代方向爲下降方向。

當前迭代方向如式(1-6)- A_i^{-1}\bigtriangledown f(x_i),梯度方向\bigtriangledown f(x_i)。二者乘積爲:

                                                                        - \bigtriangledown f(x_i)^TA_i^{-1}\bigtriangledown f(x_i)                                       (2-1)

可以看到當且僅當Hession矩陣整定,才滿足式(2-1)爲負值。

對於牛頓法,當前點的Hession矩陣是正定的,才滿足更新方程式下降的,這個限制是非常強的。爲了確保每次迭代方向是下降的,提出了阻尼牛頓法,算法如下:

                                          

算法步長計算部分採用一維搜索法。可以看到,阻尼牛頓法相比於牛頓法,在每次參數更新之前,利用一維搜索法計算更新步長,確保優化方向爲下降方向。

3 擬牛頓法

3.1 擬牛頓法原理

牛頓法的搜索方向是:

                                                                              d_i = - A_i^{-1}\bigtriangledown f(x_i)                            (3-1)

但是求二階偏導數並求逆矩陣會帶來大量計算,爲了避免複雜的運算,擬牛頓法提出了設計矩陣U去近似逆矩陣A_i^{-1}。但是需要滿足一定條件。

任意兩點梯度之差公式爲:(兩點函數值之差等於斜率乘以距離)

                                                                 \bigtriangledown f(x_{i+1})-\bigtriangledown f(x_i) = A_i(x_{i+1}-x_i)            (3-2)

可以寫成:

                                                              x_{i+1}-x_i=A_i^{-1}(\bigtriangledown f(x_{i+1})-\bigtriangledown f(x_i))            (3-3)

上式爲擬牛頓條件。

(1)用於近似的矩陣U一定要正定,因爲矩陣U代替了二階偏導矩陣的功能,由式(2-1)可知需要滿足正定。

(2)用於近似的矩陣U一定要滿足擬牛頓條件

常用的擬牛頓法有DFP、BFGS,區別在於如何選取替代矩陣U。

3.2 DFP算法

利用矩陣G去替代A_i^{-1},並且每次都需要迭代計算可以得到:(爲了便於區別,此處即爲矩陣G,與3.1中的U同樣)

                                                                         G_{i+1} = G_i + \bigtriangleup G_i                                    (3-4)

DFP算法每次採用兩個矩陣去近似\bigtriangleup G_i,即:

                                                                      G_{i+1} = G_i + P_i+Q_i                                  (3-5)

P_i,Q_i待定。令g_i = \bigtriangledown f(x_{i+1} ) - \bigtriangledown f(x_i)3-5左右同時乘以g_i可以得到:

                                                                G_{i+1}g_i= G_ig_i + P_ig_i+Q_ig_i                         (3-6)

爲了滿足擬牛頓條件(3-3),可以令:

                                                               Q_ig_i = -G_ig_i,P_ig_i = x_{i+1} - x_i                      (3-7)

滿足3-7的P_i,Q_i很多,令d_i = x_{i+1} - x_i,可得:

                                                                                P_i = \frac{d_{i}d_i^T}{d_i^Tg_i}

                                                                          Q_i = -\frac{G_ig_ig_i^TG_i}{g_i^TG_ig_i}

3.3 BFGS算法

GFP算法用於近似擬牛頓條件(3-3),BFGS用於近似擬牛頓條件(3-2)。前者用以替代Hession矩陣的逆A_i^{-1},一個用以替代Hession矩陣A_i^{}

用B矩陣代替:

                                                                      B_{i+1} = B_i + P_i+Q_i    

d_i = x_{i+1} - x_i,等式兩端乘以d_i以可以得到:

                                                               B_{i+1}d_i= B_id_i + P_id_i+Q_id_i

爲了滿足擬牛頓條件(3-2)可以令:

                                                                   Q_id_i = -B_id_i,P_id_i =g_i

滿足條件的P_i,Q_i如下:

                                                                              P_i = \frac{g_{i}g_i^T}{g_i^Td_i}

                                                                         Q_i = -\frac{B_id_id_i^TB_i}{d_i^TB_id_i}

 

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