最優化理論3-牛頓法

回顧

在講解牛頓法之前我們先回顧一下最速梯度下降法,泰勒展開與Hessian矩陣之間的關係。

泰勒展開
對於一元函數f(x)f(x),在xx處的泰勒展開爲:
f(x+σ)=f(x)+f(x)σ+12f(x)σ2+......f(x+\sigma)=f(x)+{f}'(x)\sigma+\frac{1}{2}{f}''(x)\sigma^2+......
對於多元函數,一般寫成矩陣形式:
f(x+σ)=f(x)+gTσ+12σTHσ+......f(\mathbf{x+\sigma})=f(\mathbf{x})+\mathbf{g}^{T}\sigma+\frac{1}{2}\mathbf{\sigma}^{T}\mathbf{H}\sigma+......

其中,x=[x1,x2]T\mathbf{x}=[x_1,x_2]^{T}gT=[fx1,fx2]T\mathbf{g}^{T}=[\frac{\partial f}{\partial x_1}, \frac{\partial f}{\partial x_2}]^{T},

H=[2fx122fx1x22fx2x12fx22]\mathbf{H} = \begin{bmatrix} &\frac{\partial^2f}{\partial x_1^2} &\frac{\partial^2f}{\partial x_1\partial x_2} \\ &\frac{\partial^2f}{\partial x_2\partial x_1} &\frac{\partial^2f}{\partial x_2^2} \end{bmatrix}

Hessian矩陣
上式中H\mathbf{H}就是Hessian矩陣,它具有以下性質:

  1. 具有對稱性
  2. 若主對角線上的元素都大於零,則爲正定矩陣;若不全大於零,則爲半正定矩陣。

這個Hessian矩陣的正定性與函數凹凸性有很大關係:
1.若矩陣正定,則函數的二階偏導數恆>0>0.
2.函數爲凸(凸性就可以收斂到局部或者全局最優解)
更多關於Hessian正定性與函數凹凸性可移步這篇博文

最速梯度下降法
最速梯度下降法是將當前點進行一階近似,用上面的泰勒展開來說,就是這樣的:
f(x+σ)f(x)+gTσf(\mathbf{x+\sigma}) \approx f(\mathbf{x})+\mathbf{g}^{T}\sigma

接下來我們將牛頓法:
總而言之,牛頓法就是函數當前點用二階近似,從泰勒展開形式上說,就是在上面的最速梯度下降法後面再加了一個二次項:
f(x+σ)f(x)+gTσ+12σTHσf(\mathbf{x+\sigma}) \approx f(\mathbf{x})+\mathbf{g}^{T}\sigma+\frac{1}{2}\mathbf{\sigma}^{T}\mathbf{H}\sigma
那麼這個一個什麼函數?對,二次函數!因爲最高次冪爲2。而此前的最速梯度下降就是一個一次函數。直觀的來講,最速梯度下降是在當前點的切線方向畫了一條線,而牛頓法是畫了一個二次曲線:
在這裏插入圖片描述
在這裏插入圖片描述

對於上面的二階近似,爲了求下一點,進而得到極值點,對方向σ\sigma求導:
fσ=0\frac{\partial f}{\partial \sigma}=0
=> g+Hσ=0\mathbf{g+H\sigma=0}
=> σ=H1g\sigma=-\mathbf{H^{-1}g} (σ\sigma就是牛頓方向)
那麼這個牛頓方向是不是下降方向?這就要將此方向與梯度方向作內積:
Δf=f(x+σ)f(x)=gTσ\Delta{f}=f(x+\sigma)-f(x)=\mathbf{g}^{T}\sigma
將上式的σ\sigma代入:Δf=gTH1g\Delta{f}=-\mathbf{g}^{T}\mathbf{H^{-1}g}
要想找到極小值點,因此Δf<0\Delta{f}<0, 即gTH1g<0-\mathbf{g}^{T}\mathbf{H^{-1}g}<0,那麼H0\mathbf{H}\geq0,也就是Hesian矩陣H\mathbf{H}應當正定。

有了下降方向σ\sigma,那麼迭代就變成了:xk+1=xk+α(σk)x_{k+1}=x_k+\alpha(\sigma_k)。由此可見牛頓法與最速梯度下降法不同之處在於計算下降方向。

爲什麼牛頓法比最速梯度法更快收斂

因爲最速梯度下降法是在當前點位置移動步長乘以當前點梯度,而越接近極值點梯度肯定越接近0,導致到最後越老越慢。
那麼牛頓法是這個二次曲線與函數相切的時候,而下一個點是哪裏呢?你可以在二次曲線上過最低點作一條垂線,垂線與函數相交的那點就是下一個位置。最後收斂的時候就是二次曲線最低點與函數極值點重合的時候。這不僅跨步大,比最速梯度下降法大得多。

那麼用牛頓法有什麼要求呢?就是Hessian矩陣一定要是半正定的。不然函數不是凸的,也就不能保證找到的是極值點。

如何保證Hessian矩陣正定性

根據線性代數知識可以知道,對於方陣H\mathbf{H}可以做特徵值分解:
(λ1λn)\begin{pmatrix} \lambda_1& \cdots & \cdots\\ \vdots & \ddots & \vdots\\ \dots& \cdots & \lambda_n \end{pmatrix}
若矩陣正定,則λi0\lambda_i\geq0。若不是,則可以修改H\mathbf{H}:
Hk^=Hk+βIn1+β\hat{\mathbf{H}_k}=\frac{\mathbf{H}_k+\beta\mathbf{I_n}}{1+\beta}
因此原來的特徵值就變成了:
(λ1+β1+βλn+β1+β)\begin{pmatrix} \frac{\lambda_1+\beta}{1+\beta}& \cdots & \cdots\\ \vdots & \ddots & \vdots\\ \dots& \cdots & \frac{\lambda_n+\beta}{1+\beta} \end{pmatrix}
在判別H\mathbf{H}正定性的時候,若其非正定,則β\beta會設置很大,以至於所有的λi\lambda_i都大於0。若正定,β\beta會設置很小。那麼β\beta怎麼選?在矩陣特徵根分解的時候不是會排序嘛?把選則β\beta比最小的那個負值的絕對值大就可以了。

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