最优化六:牛顿法(牛顿法、拟牛顿法、阻尼牛顿法)

牛顿法将目标函数近似为二阶函数,沿着牛顿方向进行优化(包含了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}

 

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