泰勒公式可以表示為:
\[f(\boldsymbol+\boldsymbol)=f(\boldsymbol)+\boldsymbol^\boldsymbol+\frac\boldsymbol^\boldsymbol\boldsymbol+o(\boldsymbol) \tag
\]在(2)中
\[\boldsymbol=[x_1,...,x_n]^ \\
\boldsymbol=[\delta_1,...,\delta_n]^\\
\boldsymbol=[\frac,...,\frac]^\\
\boldsymbol=
\begin
\frac & \frac & \cdots & \frac\\
\frac & \frac & \cdots & \frac\\
\vdots & \vdots & \ddots & \vdots\\
\frac & \frac & \cdots & \frac
\end
\]在上面的表示式中\(\boldsymbol\)表示函式自變數,\(\boldsymbol\)中每個元素分別對應自變數的擾動,\(\boldsymbol\)表示梯度矩陣,\(\boldsymbol\)表示海參矩陣,它是乙個實對稱矩陣。以下推導梯度下降法和牛頓下降法。
(1)梯度下降法
當每個自變數的擾動量足夠小時,可以忽略二階及二階以上的泰勒展開項,此時(2)可以表示為:
\]我們希望每次運動後的函式值都小於運動前的函式值,即\(f(\boldsymbol+\boldsymbol)< f(\boldsymbol)\),所以顯然此時需要滿足\(\boldsymbol^\boldsymbol=||\boldsymbol||||\boldsymbol||()< 0\),需要注意的函式在已知點處的梯度是確定的,也就是說在某點上\(\boldsymbol\)是乙個常向量,所以\(\boldsymbol^\boldsymbol\)中能改變的只有\(\boldsymbol\),顯然,當\(()< 0\),即向量\(\boldsymbol\)和\(\boldsymbol\)之間的夾角為鈍角時,該擾動量能夠使函式值下降,且當\(()=-1\),即該擾動向量的方向和該點處的梯度向量反向時,函式值下降最快。梯度下降法就是在每個點上均朝著該點梯度反方向運動,經過不斷迭代使函式值取得最小值的方法。
函式\(f(\boldsymbol)\)是乙個超曲面(如圖1所示),令\(f(\boldsymbol)=c\),其中\(c\)為常數,即用乙個超平面去切\(f(\boldsymbol)\)對應的超曲面,則當\(c\)取不同值時,可以得到如圖1所示的等值線圖,函式\(f(\boldsymbol)\)上某一點的梯度方向與該點切線方向垂直,且指向等值線增大的方向,因此,梯度下降法的運動路線即如圖1所示,始終沿著函式梯度反方向運動。
圖1 梯度下降示意圖
梯度下降法的具體操作步驟如下:
a) 設第\(k\)次迭代的對應的點為\((\boldsymbol_k,f(\boldsymbol_k))\),計算該點的梯度向量\(\boldsymbol_k\);
b) 根據梯度下降法可得迭代公式\(\boldsymbol_=\boldsymbol_k-\alpha \boldsymbol_k\),其中\(\alpha\)表示學習率;
c) 不斷重複上面的迭代過程,直到滿足一定的停止準則。
以乙個例子進行說明,設函式\(f(\boldsymbol)=f(x_1,x_2)=x_1^2+x_2^2\),顯然(0,0)即為該函式的最小值點,梯度向量為\(\boldsymbol=[2x_1,2x_2]^\),設初始時刻\(\boldsymbol_0=(1,3)\),學習率\(\alpha=0.1\),則迭代過程如下:
\[ \boldsymbol_0=(1,3)\\
\boldsymbol_1=\boldsymbol_0-\alpha \boldsymbol_0=(1,3)-0.1(2,6)=(0.8,2.4)\\
\boldsymbol_2=\boldsymbol_1-\alpha \boldsymbol_1=(0.8,2.4)-0.1(1.6,4.8)=(0.64,1.92)\\
\boldsymbol_3=(0.512,1.536)\\
\vdots\\
\vdots\\
\]顯然,經過多次迭代後,已逐漸靠近最優點。
(2)牛頓下降法
梯度下降法只利用到泰勒展開式的一次項,將泰勒展開至二次項可得到:
\]可以看出,此時在很小的乙個區域內函式\(f(\boldsymbol+\boldsymbol)\)可以看成乙個關於\(\boldsymbol\)的二階曲面,並可通過對\(\boldsymbol\)求導得到該二階曲面的最小值,將(3)對\(\boldsymbol\)求導可得
\[\frac+\boldsymbol)}}=\boldsymbol+\boldsymbol\boldsymbol=\boldsymbol \rightarrow \boldsymbol=-\boldsymbol^\boldsymbol \tag
\](4)中得到的\(\boldsymbol\)即為牛頓下降法對應的運動向量。牛頓下降法屬於二階收斂,因此收斂速度很快,但是它每次迭代都要計算海森矩陣的逆矩陣,計算量比較大。此外,牛頓下降法還存在一些問題,以下進行分析:
從第(1)節中梯度下降法的分析我們知道,乙個運動向量,如果滿足\(\boldsymbol^\boldsymbol< 0\),即該向量與梯度向量的夾角為鈍角時,那麼該運動方向就是有效的運動方向。所以對於(4)中\(\boldsymbol\),當\(\boldsymbol^\boldsymbol=-\boldsymbol^(\boldsymbol^\boldsymbol)< 0 \rightarrow \boldsymbol^\boldsymbol^\boldsymbol>0\)時,才能保證牛頓下降法給出的方向是有效的方向,即必須要保證\(\boldsymbol^ \succ 0\),由於\(\boldsymbol\)為實對稱矩陣,即\(\boldsymbol=\boldsymbol^\),所以\(\boldsymbol^=(\boldsymbol^)^=(\boldsymbol^)^\),所以\(\boldsymbol^\)也是實對稱矩陣,所以它可以進行正交對角化且其特徵值全為實數,\(\boldsymbol^=\boldsymbol\boldsymbol\boldsymbol^\),其中\(\boldsymbol=(\lambda_1,...,\lambda_n)\),當\((\lambda_1,...,\lambda_n)>0\)時,矩陣\(\boldsymbol^\)滿足正定性要求,此時牛頓下降法給出的方向是有效的方向。
當海森矩陣的逆矩陣不滿足正定性要求時,可對牛頓下降方向進行適當修正,具體做法如下:
設\((\lambda_1,...,\lambda_n)=\lambda_n< 0\),則可以令\(\hat}=\boldsymbol^+\sigma\boldsymbol=\boldsymbol\boldsymbol\boldsymbol^+\sigma\boldsymbol\boldsymbol\boldsymbol^=\boldsymbol(\boldsymbol+\sigma\boldsymbol)\boldsymbol^=\boldsymbol\hat}\boldsymbol^\),其中\(\sigma=|\lambda_n|+\epsilon\),\(\epsilon\)表示很小的正數,\(\hat}=(\lambda_1+\sigma,...,\lambda_n+\sigma)\),則牛頓下降方向可以修正為\(\boldsymbol=-\hat}^\boldsymbol\)。
牛頓下降法是二階收斂,梯度下降是一階收斂,所以牛頓法的收斂速度更快。形象一點說明就是,如果想找一條最短的路徑到盆地的最底部,梯度下降法每次都朝當前位置處坡度最大的方向走,而牛頓法不僅會考慮當前坡度大不大,還會考慮下一步之後,坡度是否會變得更大,因此牛頓法比梯度下降法看得更遠,能更快走到最底部。從幾何的觀點看,牛頓法是用乙個二次曲面去擬合當前所在位置的區域性曲面,而梯度下降法適用乙個平面去擬合當前的區域性曲面,通常情況下,二次曲面的擬合效果會比平面更好,因此牛頓法能夠選擇出更符合真實情況的最優下降路徑。
牛頓下降法和梯度下降法 最速下降法 的速度的比較
牛頓下降法和梯度下降法在機器學習和自適應濾波中的都很重要,本質上是為了尋找極值點的位置。但是收斂的速度不同。本文中就兩種方法來 一下,哪種收斂方法速度快 牛頓下降法的遞推公式 xn 1 x n f xn f xn 梯度下降演算法的遞推公式 xn 1 x n f x n 下圖是兩種方法的圖示表示,紅色...
牛頓下降法和梯度下降法 最速下降法 的速度的比較
牛頓下降法和梯度下降法在機器學習和自適應濾波中的都很重要,本質上是為了尋找極值點的位置。但是收斂的速度不同。本文中就兩種方法來 一下,哪種收斂方法速度快 牛頓下降法的遞推公式 x n 1 xn f xn f xn 梯度下降演算法的遞推公式 x n 1 xn f xn 下圖是兩種方法的圖示表示,紅色為...
梯度下降法和隨機梯度下降法
批量梯度下降法 batch gradient descent 在更新引數時使用所有的樣本來進行更新 隨機梯度下降法 stochastic gradient descent 求梯度時沒有用所有的m個樣本的資料,而是僅僅選取乙個樣本j來求梯度。小批量梯度下降法 mini batch gradient d...