泰勒公式可以表示為:
在(2)中
在上面的表達式中\(\boldsymbol{x}\)表示函數自變量,\(\boldsymbol{\delta}\)中每個元素分別對應自變量的擾動,\(\boldsymbol{g}\)表示梯度矩陣,\(\boldsymbol{h}\)表示海參矩陣,它是一個實對稱矩陣。以下推導梯度下降法和牛頓下降法。
(1)梯度下降法
當每個自變量的擾動量足夠小時,可以忽略二階及二階以上的泰勒展開項,此時(2)可以表示為:
我們希望每次運動后的函數值都小於運動前的函數值,即\(f(\boldsymbol{x}+\boldsymbol{\delta})< f(\boldsymbol{x})\),所以顯然此時需要滿足\(\boldsymbol{g}^{\rm T}\boldsymbol{\delta}=||\boldsymbol{g}||||\boldsymbol{\delta}||{\rm cos}(<\boldsymbol{g},\boldsymbol{\delta}>)< 0\),需要注意的函數在已知點處的梯度是確定的,也就是說在某點上\(\boldsymbol{g}\)是一個常向量,所以\(\boldsymbol{g}^{\rm T}\boldsymbol{\delta}\)中能改變的只有\(\boldsymbol{\delta}\),顯然,當\({\rm cos}(<\boldsymbol{g},\boldsymbol{\delta}>)< 0\),即向量\(\boldsymbol{g}\)和\(\boldsymbol{\delta}\)之間的夾角為鈍角時,該擾動量能夠使函數值下降,且當\({\rm cos}(<\boldsymbol{g},\boldsymbol{\delta}>)=-1\),即該擾動向量的方向和該點處的梯度向量反向時,函數值下降最快。梯度下降法就是在每個點上均朝着該點梯度反方向運動,經過不斷迭代使函數值取得最小值的方法。
函數\(f(\boldsymbol{x})\)是一個超曲面(如圖1所示),令\(f(\boldsymbol{x})=C\),其中\(C\)為常數,即用一個超平面去切\(f(\boldsymbol{x})\)對應的超曲面,則當\(C\)取不同值時,可以得到如圖1所示的等值線圖,函數\(f(\boldsymbol{x})\)上某一點的梯度方向與該點切線方向垂直,且指向等值線增大的方向,因此,梯度下降法的運動路線即如圖1所示,始終沿着函數梯度反方向運動。


梯度下降法的具體操作步驟如下:
a) 設第\(k\)次迭代的對應的點為\((\boldsymbol{x}_k,f(\boldsymbol{x}_k))\),計算該點的梯度向量\(\boldsymbol{g}_k\);
b) 根據梯度下降法可得迭代公式\(\boldsymbol{x}_{k+1}=\boldsymbol{x}_k-\alpha \boldsymbol{g}_k\),其中\(\alpha\)表示學習率;
c) 不斷重復上面的迭代過程,直到滿足一定的停止准則。
以一個例子進行說明,設函數\(f(\boldsymbol{x})=f(x_1,x_2)=x_1^2+x_2^2\),顯然(0,0)即為該函數的最小值點,梯度向量為\(\boldsymbol{g}=[2x_1,2x_2]^{\rm T}\),設初始時刻\(\boldsymbol{x}_0=(1,3)\),學習率\(\alpha=0.1\),則迭代過程如下:
顯然,經過多次迭代后,已逐漸靠近最優點。
(2)牛頓下降法
梯度下降法只利用到泰勒展開式的一次項,將泰勒展開至二次項可得到:
可以看出,此時在很小的一個區域內函數\(f(\boldsymbol{x}+\boldsymbol{\delta})\)可以看成一個關於\(\boldsymbol{\delta}\)的二階曲面,並可通過對\(\boldsymbol{\delta}\)求導得到該二階曲面的最小值,將(3)對\(\boldsymbol{\delta}\)求導可得
(4)中得到的\(\boldsymbol{\delta}\)即為牛頓下降法對應的運動向量。牛頓下降法屬於二階收斂,因此收斂速度很快,但是它每次迭代都要計算海森矩陣的逆矩陣,計算量比較大。此外,牛頓下降法還存在一些問題,以下進行分析:
從第(1)節中梯度下降法的分析我們知道,一個運動向量,如果滿足\(\boldsymbol{g}^{\rm T}\boldsymbol{\delta}< 0\),即該向量與梯度向量的夾角為鈍角時,那么該運動方向就是有效的運動方向。所以對於(4)中\(\boldsymbol{\delta}\),當\(\boldsymbol{g}^{\rm T}\boldsymbol{\delta}=-\boldsymbol{g}^{\rm T}(\boldsymbol{h}^{-1}\boldsymbol{g})< 0 \rightarrow \boldsymbol{g}^{\rm T}\boldsymbol{h}^{-1}\boldsymbol{g}>0\)時,才能保證牛頓下降法給出的方向是有效的方向,即必須要保證\(\boldsymbol{h}^{-1} \succ 0\),由於\(\boldsymbol{h}\)為實對稱矩陣,即\(\boldsymbol{h}=\boldsymbol{h}^{\rm T}\),所以\(\boldsymbol{h}^{-1}=(\boldsymbol{h}^{\rm T})^{(-1)}=(\boldsymbol{h}^{-1})^{\rm T}\),所以\(\boldsymbol{h}^{-1}\)也是實對稱矩陣,所以它可以進行正交對角化且其特征值全為實數,\(\boldsymbol{h}^{-1}=\boldsymbol{U}\boldsymbol{\Sigma}\boldsymbol{U}^{\rm T}\),其中\(\boldsymbol{\Sigma}={\rm diag}(\lambda_1,...,\lambda_n)\),當\({\rm min}(\lambda_1,...,\lambda_n)>0\)時,矩陣\(\boldsymbol{h}^{-1}\)滿足正定性要求,此時牛頓下降法給出的方向是有效的方向。
當海森矩陣的逆矩陣不滿足正定性要求時,可對牛頓下降方向進行適當修正,具體做法如下:
設\({\rm min}(\lambda_1,...,\lambda_n)=\lambda_n< 0\),則可以令\(\hat{\boldsymbol{h}}=\boldsymbol{h}^{-1}+\sigma\boldsymbol{I}=\boldsymbol{U}\boldsymbol{\Sigma}\boldsymbol{U}^{\rm T}+\sigma\boldsymbol{U}\boldsymbol{I}\boldsymbol{U}^{\rm T}=\boldsymbol{U}(\boldsymbol{\Sigma}+\sigma\boldsymbol{I})\boldsymbol{U}^{\rm T}=\boldsymbol{U}\hat{\boldsymbol{\Sigma}}\boldsymbol{U}^{\rm T}\),其中\(\sigma=|\lambda_n|+\epsilon\),\(\epsilon\)表示很小的正數,\(\hat{\boldsymbol{\Sigma}}={\rm diag}(\lambda_1+\sigma,...,\lambda_n+\sigma)\),則牛頓下降方向可以修正為\(\boldsymbol{\delta}=-\hat{\boldsymbol{h}}^{-1}\boldsymbol{g}\)。
牛頓下降法是二階收斂,梯度下降是一階收斂,所以牛頓法的收斂速度更快。形象一點說明就是,如果想找一條最短的路徑到盆地的最底部,梯度下降法每次都朝當前位置處坡度最大的方向走,而牛頓法不僅會考慮當前坡度大不大,還會考慮下一步之后,坡度是否會變得更大,因此牛頓法比梯度下降法看得更遠,能更快走到最底部。從幾何的觀點看,牛頓法是用一個二次曲面去擬合當前所在位置的局部曲面,而梯度下降法適用一個平面去擬合當前的局部曲面,通常情況下,二次曲面的擬合效果會比平面更好,因此牛頓法能夠選擇出更符合真實情況的最優下降路徑。