“升維的降維打擊”-參數(shù)訓練的駐點分析

1.?優(yōu)化失敗的原因
?

“山外有山比山高”-為什么叫深度學習?在上一節(jié)中,討論了如何通過梯度下降方法訓練深度學習模型()。隨著參數(shù)訓練更新次數(shù)的增加,可能會遇到兩種常見的失敗情況:第一種,損失函數(shù)隨著更新次數(shù)的增加呈現(xiàn)出平穩(wěn)的狀態(tài),并沒有非常明顯的下降趨勢;第二種,損失函數(shù)的數(shù)值雖然在下降,但是在某次更新后不再繼續(xù)下降,且損失函數(shù)數(shù)值并沒有很小。
這兩種情況發(fā)生的原因通常是梯度為0或很小,導致參數(shù)不再更新或變化不大。在高等數(shù)學中,將這種梯度為0的情況稱為駐點(Critical Point)。根據(jù)損失函數(shù)的不同,又可以將駐點細分為局部極小點(Local Minima)、局部極大點(Local Maxima)和鞍點(Saddle Point)。
局部極小點意為在一定范圍內(nèi),所有的函數(shù)值都比該點的函數(shù)值大;局部極大點意為在一定范圍內(nèi),所有函數(shù)值都比該點函數(shù)值小。從二維函數(shù)的角度來看,鞍點一個方向的截面呈現(xiàn)出局部極小點的情況,另一個方向的截面呈現(xiàn)出局部極大點的情況,形狀如同“馬鞍”狀。
? ?

深度學習模型在參數(shù)優(yōu)化的過程中使用的是梯度下降方法,所以當遇到梯度為0的情況下,可以排除局部極大點的情況。當訓練時遇到局部極小點的情況,便無法判斷下一步的更新方向;但遇到鞍點的情況,或許可以判斷下一步的更新方向。因此,區(qū)分當前駐點是局部極小點和鞍點對深度學習模型的參數(shù)優(yōu)化具有極大的參考價值。
2.?區(qū)分局部極小點和鞍點
2.1理論分析
根據(jù)局部極小點和鞍點的定義,假設(shè)在處梯度為0,需要考慮在向量附近的情況。依據(jù)泰勒定理可知,在
處附近,可以近似將損失函數(shù)進行二階展開。
在式中表示為梯度,是一個向量,有
,
;
是一個矩陣,存儲的是二階導數(shù),被稱為Hessian矩陣,因此有
。由損失函數(shù)的二階泰勒展開式可知,損失函數(shù)在
附近的值和梯度的Hessian矩陣有關(guān)。
由于為駐點,因此
為0,原式轉(zhuǎn)化為公式(2)。
因此的駐點類型是局部極小點還是鞍點取決于帶有Hessian矩陣的最后一項
。
將記為
,最后一項則記為
。假設(shè)對于任意的向量
,有
大于0,此時
大于
,因此
的類型為局部極小點;假設(shè)對于任意的向量
,有
小于0,此時
小于
,因此
的類型為局部極大點;若對于任意的向量
,
有正有負,此時
的類型為鞍點。
依據(jù)線性代數(shù)的矩陣理論對于任意的向量,
大于0,可認為
為正定矩陣(Positive Definite),此時矩陣
的所有特征值(Eigen Value)均大于0;對于任意的向量
,
小于0,可認為
為負定矩陣(Negative Definite),此時矩陣
的所有特征值(Eigen Value)均小于0;對于任意的向量
,
有正有負,此時矩陣
的所有特征值(Eigen Value)也有正有負。綜上,駐點類型的判斷取決于Hessian矩陣,如果Hessian矩陣為正定矩陣,其所有的特征值均大于0,駐點類型為局部極小值;如果Hessian矩陣為負定矩陣,其所有的特征值均小于0,駐點類型為局部極大值;如果Hessian矩陣有正有負,其所有的特征值也有正有負,駐點類型為鞍點。
2.2實例分析
通過一個案例來分析判斷駐點是局部極小點、局部極大點和鞍點的哪一種。假定,機器學習模型為,只有一筆訓練數(shù)據(jù)x=1,y=1。該圖繪制出了損失函數(shù)隨兩個參數(shù)
和
變化的曲面圖。最中間黑色點、左下方一排黑色點和右上方一排黑色點是梯度為0的駐點。圖中由藍至紅的顏色變化,表示損失函數(shù)數(shù)值逐漸增大,因此易知中心黑色點為鞍點,左下方一排黑色點和右上方一排黑色點是局部極小點。
?

可以從數(shù)學理論的角度來分析這些駐點的類型。計算該模型的損失函數(shù)可得公式(3)
根據(jù)上面的理論分析,首先需要求其駐點,分別求損失函數(shù)關(guān)于和
的偏導數(shù)可得公式(4)。
?
可得駐點為,
或
。
,
對應(yīng)的點即為圖中中心黑色點;
對應(yīng)的點即為左下方一排黑色點和右上方一排黑色點。接下來計算二階偏導數(shù),可得Hessian矩陣見公式(5)。
分別將,
和
代入Hessian矩陣可得矩陣見公式(6)和公式(7)。
?計算式(6)對應(yīng)的特征值可求得,
,因此中間黑色的點為鞍點;計算式(7)對應(yīng)的特征值可求得公式(8)
由公式(8)可知,和
必有一值為0,且
和
之和大于等于0,因此,左上和右下黑色的點為局部極小點。
3.?鞍點的更新方法
在訓練深度模型的過程中,如果參數(shù)更新停留在鞍點,從理論上來說,可以找到下一步的更新方向。對公式(2)進一步分析,假設(shè)是
的特征向量,
是特征值且小于0,且
和
的差距為特征向量
。因此,公式(2)的后半部分可寫成
。由線性代數(shù)理論可得(9)式
由于小于0,因此公式(9)表示,當
和
的差距為特征向量
時即
,
。因此,只需要沿著
的方向更新參數(shù),便可以使損失函數(shù)下降。

仍以模型為例,取
的特征值,易知其中一個特征向量為
因此,如圖所示的黑色箭頭部分即為特征向量的方向,只需要沿著右上方更新參數(shù),參數(shù)會更新至局部極小點。
4.?升維的“降維打擊”

圖5 鞍點和局部極小點比較
在實際訓練的過程中,參數(shù)更新遇到鞍點的情況比局部極小點的情況多。以上圖為例,左上方是一個二維參數(shù)的損失函數(shù)曲線;左下方是一個三維參數(shù)的損失函數(shù)曲面。左上方的曲線可以看成左下方曲面的二維投影,在二維的時候紅色的駐點為局部極小點,在三維的時候紅色的駐點就成了鞍點。駐點為鞍點仍然有可能是損失函數(shù)下降,而駐點為極小點,參數(shù)的更新就遇到了瓶頸,無法進一步優(yōu)化更新。這表明,當模型維度上升時,駐點為鞍點的概率隨著增加了,對比低維度的模型實際上起到了“降維打擊”的作用。登高望遠,站的高度越高,視野就更加開闊了,可選擇的道路和方向就多了。這和荀子“登高而招,臂非加長也,而見者遠;順風而呼,聲非加疾也,而聞?wù)哒谩<佥涶R者,非利足也,而致千里;假舟楫者,非能水也,而絕江河。君子生非異也,善假于物也?!钡乃季S是一致的。
?

圖6 實際訓練的情況
圖中藍色的點表示,訓練一個神經(jīng)網(wǎng)絡(luò)參數(shù)更新至駐點時的情況,縱軸表示損失函數(shù)的數(shù)值,橫軸表示正的特征值在所有特征值的比值。如圖所示,由于基本上無法找到一個比值為1的點,因此在實際進行深度學習模型訓練的過程中,遇到的大部分駐點都是鞍點(特征值都有正有負),局部極小點基本上不會出現(xiàn)。
?