有監督學習,一般最終轉化為如下優化問題:
其中,J為目標函數,也叫做損失函數,W為要學習的權重,是一個多維向量。
目標函數J(W)可以按泰勒展開,如果只取泰勒展開的二階項,則J(W)可以近似表達為W的二次函數,即:
其中g為梯度向量,H為Hessian矩陣,如果將g和H展開其形式如下:
這個優化問題求解一般有梯度下降法和牛頓法兩種。
梯度下降法
1、梯度
首先要理解什麼叫梯度,
給定J(W),其梯度是如下式構成的一個向量:
向量是有方向的,所以梯度也是有方向的,梯度指向的是J(W)增長最快的方向,那增長最快的方向怎麼理解呢?假如W增加微小固定長度的△W,即W_new=W+△W,則J(W_new)有可能變大,也有可能變小,因為△W雖然長度固定,但方向任意。那有沒有一個方向,使得J(W_new)的變化最大,答案是梯度方向g和梯度負方向-g,梯度方向是增大最快,梯度負方向是減小最快。這就是梯度的意義,指向J(W)增長最快的方向。
2、梯度下降
所以梯度下降法是在梯度的負方向上,前進一小步:
其中,l_r是學習率。
這裡有人常常誤解,l_r代表的就是在梯度負方向上前進的距離,這種說話其實忽略了梯度g並不是單位長度,所以真實步長是:
一般l_r為微小常量,常取0.01,0.001,0.0001等值,所以梯度越大,真實步長越大,梯度越小,真實步長越小,有時候這不利於收斂,因為梯度大,代表變化大,步長大有可能越過最優點,梯度小,則有可能位於局部最優點或者鞍部,較小的步長,很難逃逸出去,所以才有了RMSProp等改進方案。
3、梯度下降的效果分析
如果將J(W)在Wt附近按二階泰勒展開,
梯度下降
代入上述泰勒展開,
進而可以得出,前進l_r的步長後,J(W)的變化為:
△J等式右邊第一項是函數傾斜引起的減少量,第二項是函數曲率對△J的修正。
可以看出,如果第二項過大,梯度下降的經過步長l_r後,事實上是往山頂走,並非往J(W)的山底走。
如果,
則學習率l_r理論上可以任意大,然而當l_r較大時,二階泰勒展開的準確性也就不高了,因此可以用啟發式尋找合適的學習率l_r。
如果,
則理論的最優解為:
將g單位化,即
則,
我們知道H是Hessian矩陣,那麼對於單位向量e,
代表J(W)在點W0點,e方向的曲率。當e方向與H的最大特徵值λ_max的特徵向量方向一致時,曲率最大,為λ_max。所以如果單位梯度d與H的最大特徵值λ_max的特徵向量方向一致時,最優學習率為1/λ_max。如果泰勒展開的二階近似足夠精確,則H的特徵值決定了學習率的尺度。
牛頓法
我們知道,J(W)的二階泰勒展開為下式:
求極值點,則可以得到:
此式就是牛頓法的迭代公式。
類比梯度下降,一般把上式等式右邊第二項
叫做牛頓方向,記為:
假設學習率為l_r,則,最終的迭代公式為:
牛頓法優點是收斂速度快,特別的對於一個正定的二次函數,牛頓法只需一步即可找到最小值。
但牛頓法也存在一定的缺點。
1)據牛頓方向的計算公式可知,牛頓方向由Hessian矩陣的逆和梯度g確定,所以如果梯度g為0,則||d||=0,權重W就無法更新,梯度為0的點是極值點,不止是局部最小值、全局最小值,還包含鞍點、局部最大值、全局最大值,所以牛頓法容易陷於極值點。
2)梯度下降一般指向J(W)下降最快的方向,而牛頓法的牛頓方向一般是指向最近的極值點,哪怕這個極值點是鞍點或者局部最大值。
3)梯度下降一般比較容易收斂到一個較小的最優解,而牛頓法在每次迭代時序列可能不會收斂到一個最優解,它甚至不能保證函數值會按照這個序列遞減(這由第二點牛頓方向可知)。
以上三點缺點可以以如下一維函數為例:
下圖中的黃色曲線即是上述函數,其在A點的二階泰勒展開如圖中的藍色曲線,可以看到在A點附近,二階近似精準度還是相當高的。
牛頓迭代公式就是求解藍色曲線極值點,即下圖中的B(x=8.79),這一步迭代,f(x)下降了,下圖紅色曲線是黃色曲線在x=8.79時的二階泰勒展開,其極值點是C點(x=8.94),f(x)沒有下降,反而上升了,x更接近f(x)的拐點。
上述例子,完整的展示了牛頓的上述三個缺點。
4)除了上述三個缺點外,牛頓法最致命的缺點是每一步迭代需要求解Hessian逆矩陣,計算量大,甚至有時Hessian矩陣不可逆,從而導致這種方法失效。
對於缺點1,缺點2和缺點3,有以下兩點:
1)對於固定的輸入,深度學習的參數數量動則十萬百萬,非常高維,存在所有維度的局部極值點的可能性非常小,總有那麼一部分方向指向山腳方向,從而可以助其逃脫出其他維度的局部極值。
2)深度學習訓練一般是一個mini batch一個mini batch的訓練,輸入是變化的,即使對於上一個batch輸入產生的J(W)陷於局部極值點,下一個batch的輸入產生的J(W)也不一定陷於局部極值點,因為不同輸入產生的J(W)是不同的,這也有助於局部極值點的逃脫。
對於缺點4,一般採用擬牛頓法這種改進方案,通過近似計算每一步的Hessian矩陣逆矩陣,從而減少逆矩陣的直接求解,減少計算量。
總結
1)梯度下降是一階優化算法,牛頓法是二階優化算法。
2)梯度下降與牛頓法均與目標函數J(W)的二階泰勒展開相關。
3)牛頓法只是在一定條件下收斂速度快,但其具有容易陷入極值點,Hessian矩陣計算量大的缺點。