回顧
在講解牛頓法之前我們先回顧一下最速梯度下降法,泰勒展開與Hessian矩陣之間的關係。
泰勒展開
對於一元函數f(x),在x處的泰勒展開爲:
f(x+σ)=f(x)+f′(x)σ+21f′′(x)σ2+......
對於多元函數,一般寫成矩陣形式:
f(x+σ)=f(x)+gTσ+21σTHσ+......
其中,x=[x1,x2]T,gT=[∂x1∂f,∂x2∂f]T,
H=[∂x12∂2f∂x2∂x1∂2f∂x1∂x2∂2f∂x22∂2f]
Hessian矩陣
上式中H就是Hessian矩陣,它具有以下性質:
- 具有對稱性
- 若主對角線上的元素都大於零,則爲正定矩陣;若不全大於零,則爲半正定矩陣。
這個Hessian矩陣的正定性與函數凹凸性有很大關係:
1.若矩陣正定,則函數的二階偏導數恆>0.
2.函數爲凸(凸性就可以收斂到局部或者全局最優解)
更多關於Hessian正定性與函數凹凸性可移步這篇博文
最速梯度下降法
最速梯度下降法是將當前點進行一階近似,用上面的泰勒展開來說,就是這樣的:
f(x+σ)≈f(x)+gTσ
接下來我們將牛頓法:
總而言之,牛頓法就是函數當前點用二階近似,從泰勒展開形式上說,就是在上面的最速梯度下降法後面再加了一個二次項:
f(x+σ)≈f(x)+gTσ+21σTHσ
那麼這個一個什麼函數?對,二次函數!因爲最高次冪爲2。而此前的最速梯度下降就是一個一次函數。直觀的來講,最速梯度下降是在當前點的切線方向畫了一條線,而牛頓法是畫了一個二次曲線:
對於上面的二階近似,爲了求下一點,進而得到極值點,對方向σ求導:
∂σ∂f=0
=> g+Hσ=0
=> σ=−H−1g (σ就是牛頓方向)
那麼這個牛頓方向是不是下降方向?這就要將此方向與梯度方向作內積:
Δf=f(x+σ)−f(x)=gTσ
將上式的σ代入:Δf=−gTH−1g
要想找到極小值點,因此Δf<0, 即−gTH−1g<0,那麼H≥0,也就是Hesian矩陣H應當正定。
有了下降方向σ,那麼迭代就變成了:xk+1=xk+α(σk)。由此可見牛頓法與最速梯度下降法不同之處在於計算下降方向。
爲什麼牛頓法比最速梯度法更快收斂
因爲最速梯度下降法是在當前點位置移動步長乘以當前點梯度,而越接近極值點梯度肯定越接近0,導致到最後越老越慢。
那麼牛頓法是這個二次曲線與函數相切的時候,而下一個點是哪裏呢?你可以在二次曲線上過最低點作一條垂線,垂線與函數相交的那點就是下一個位置。最後收斂的時候就是二次曲線最低點與函數極值點重合的時候。這不僅跨步大,比最速梯度下降法大得多。
那麼用牛頓法有什麼要求呢?就是Hessian矩陣一定要是半正定的。不然函數不是凸的,也就不能保證找到的是極值點。
如何保證Hessian矩陣正定性
根據線性代數知識可以知道,對於方陣H可以做特徵值分解:
⎝⎜⎛λ1⋮…⋯⋱⋯⋯⋮λn⎠⎟⎞
若矩陣正定,則λi≥0。若不是,則可以修改H:
Hk^=1+βHk+βIn。
因此原來的特徵值就變成了:
⎝⎜⎜⎛1+βλ1+β⋮…⋯⋱⋯⋯⋮1+βλn+β⎠⎟⎟⎞
在判別H正定性的時候,若其非正定,則β會設置很大,以至於所有的λi都大於0。若正定,β會設置很小。那麼β怎麼選?在矩陣特徵根分解的時候不是會排序嘛?把選則β比最小的那個負值的絕對值大就可以了。