圖1 訓練參數的常見情況
在上一節(“山外有山比山高”-為什麼叫深度學習?)中,讨論了如何通過梯度下降方法訓練深度學習模型。随着參數訓練更新次數的增加,可能會遇到兩種常見的失敗情況:第一種,損失函數随着更新次數的增加呈現出平穩的狀态,并沒有非常明顯的下降趨勢;第二種,損失函數的數值雖然在下降,但是在某次更新後不再繼續下降,且損失函數數值并沒有很小。
這兩種情況發生的原因通常是梯度為0或很小,導緻參數不再更新或變化不大。在高等數學中,将這種梯度為0的情況稱為駐點(Critical Point)。根據損失函數的不同,又可以将駐點細分為局部極小點(Local Minima)、局部極大點(Local Maxima)和鞍點(Saddle Point)。
局部極小點意為在一定範圍内,所有的函數值都比該點的函數值大;局部極大點意為在一定範圍内,所有函數值都比該點函數值小。從二維函數的角度來看,鞍點一個方向的截面呈現出局部極小點的情況,另一個方向的截面呈現出局部極大點的情況,形狀如同“馬鞍”狀。
圖2 鞍點示例
深度學習模型在參數優化的過程中使用的是梯度下降方法,所以當遇到梯度為0的情況下,可以排除局部極大點的情況。當訓練時遇到局部極小點的情況,便無法判斷下一步的更新方向;但遇到鞍點的情況,或許可以判斷下一步的更新方向。因此,區分當前駐點是局部極小點和鞍點對深度學習模型的參數優化具有極大的參考價值。
2.區分局部極小點和鞍點2.1理論分析根據局部極小點和鞍點的定義,假設在處梯度為0,需要考慮在向量附近的情況。依據泰勒定理可知,在處附近,可以近似将損失函數進行二階展開。
在式中表示為梯度,是一個向量,有,;是一個矩陣,存儲的是二階導數,被稱為Hessian矩陣,因此有。由損失函數的二階泰勒展開式可知,損失函數在附近的值和梯度的Hessian矩陣有關。
由于為駐點,因此為0,原式轉化為公式(2)。
因此的駐點類型是局部極小點還是鞍點取決于帶有Hessian矩陣的最後一項。
将記為,最後一項則記為。假設對于任意的向量,有大于0,此時 大于,因此的類型為局部極小點;假設對于任意的向量,有小于0,此時 小于,因此的類型為局部極大點;若對于任意的向量,有正有負,此時的類型為鞍點。
依據線性代數的矩陣理論對于任意的向量,大于0,可認為為正定矩陣(Positive Definite),此時矩陣的所有特征值(Eigen Value)均大于0;對于任意的向量,小于0,可認為為負定矩陣(Negative Definite),此時矩陣的所有特征值(Eigen Value)均小于0;對于任意的向量,有正有負,此時矩陣的所有特征值(Eigen Value)也有正有負。綜上,駐點類型的判斷取決于Hessian矩陣,如果Hessian矩陣為正定矩陣,其所有的特征值均大于0,駐點類型為局部極小值;如果Hessian矩陣為負定矩陣,其所有的特征值均小于0,駐點類型為局部極大值;如果Hessian矩陣有正有負,其所有的特征值也有正有負,駐點類型為鞍點。
2.2實例分析通過一個案例來分析判斷駐點是局部極小點、局部極大點和鞍點的哪一種。假定,機器學習模型為,隻有一筆訓練數據x=1,y=1。該圖繪制出了損失函數随兩個參數和變化的曲面圖。最中間黑色點、左下方一排黑色點和右上方一排黑色點是梯度為0的駐點。圖中由藍至紅的顔色變化,表示損失函數數值逐漸增大,因此易知中心黑色點為鞍點,左下方一排黑色點和右上方一排黑色點是局部極小點。
圖3 駐點研判分析
可以從數學理論的角度來分析這些駐點的類型。計算該模型的損失函數可得公式(3)
根據上面的理論分析,首先需要求其駐點,分别求損失函數關于w_{1}和w_{2}的偏導數可得公式(4)。
可得駐點為,或。,對應的點即為圖中中心黑色點;對應的點即為左下方一排黑色點和右上方一排黑色點。接下來計算二階偏導數,可得Hessian矩陣見公式(5)。
分别将,和代入Hessian矩陣可得矩陣見公式(6)和公式(7)。
計算式(6)對應的特征值可求得,,因此中間黑色的點為鞍點;計算式(7)對應的特征值可求得公式(8)
由公式(8)可知,和必有一值為0,且和之和大于等于0,因此,左上和右下黑色的點為局部極小點。
3.鞍點的更新方法在訓練深度模型的過程中,如果參數更新停留在鞍點,從理論上來說,可以找到下一步的更新方向。對公式(2)進一步分析,假設是的特征向量,是特征值且小于0,且和的差距為特征向量。因此,公式(2)的後半部分可寫成。由線性代數理論可得(9)式
由于小于0,因此公式(9)表示,當和的差距為特征向量時即\,。因此,隻需要沿着的方向更新參數,便可以使損失函數下降。
圖4 鞍點更新的示例
仍以模型為例,取的特征值,易知其中一個特征向量為
因此,如圖所示的黑色箭頭部分即為特征向量的方向,隻需要沿着右上方更新參數,參數會更新至局部極小點。
4.升維的“降維打擊”
圖5 鞍點和局部極小點比較
在實際訓練的過程中,參數更新遇到鞍點的情況比局部極小點的情況多。以上圖為例,左上方是一個二維參數的損失函數曲線;左下方是一個三維參數的損失函數曲面。左上方的曲線可以看成左下方曲面的二維投影,在二維的時候紅色的駐點為局部極小點,在三維的時候紅色的駐點就成了鞍點。駐點為鞍點仍然有可能是損失函數下降,而駐點為極小點,參數的更新就遇到了瓶頸,無法進一步優化更新。
這表明,當模型維度上升時,駐點為鞍點的概率随着增加了,對比低維度的模型實際上起到了“降維打擊”的作用。登高望遠,站的高度越高,視野就更加開闊了,可選擇的道路和方向就多了。這和荀子“登高而招,臂非加長也,而見者遠;順風而呼,聲非加疾也,而聞者彰。假輿馬者,非利足也,而緻千裡;假舟楫者,非能水也,而絕江河。君子生非異也,善假于物也。”的思維是一緻的。
圖6 實際訓練的情況
圖中藍色的點表示,訓練一個神經網絡參數更新至駐點時的情況,縱軸表示損失函數的數值,橫軸表示正的正的特征值在所有特征值的比值。如圖所示,由于基本上無法找到一個比值為1的點,因此在實際進行深度學習模型訓練的過程中,遇到的大部分駐點都是鞍點(特征值都有正有負),局部極小點基本上不會出現。
更多學習資料請關注我的微信公衆号白澤圖鑒獲取!!!
,