神經網路優化:病態矩陣與條件數
一、病態矩陣
求解方程組時如果對資料進行較小的擾動,則得出的結果具有很大波動,這樣的矩陣稱為病態矩陣。
病態矩陣是一種特殊矩陣。指條件數很大的非奇異矩陣。病態矩陣的逆和以其為係數矩陣的方程組的界對微小擾動十分敏感,對數值求解會帶來很大困難。
例如:
現在有線性方程組: Ax = b, 解方程
很容易得到解為: x1 = -100, x2 = -200. 如果在樣本採集時存在一個微小的誤差,比如,將 A 矩陣的係數 400 改變成 401:
則得到一個截然不同的解: x1 = 40000, x2 = 79800
當解集 x 對 A 和 b 的係數高度敏感,那麼這樣的方程組就是病態的 (ill-conditioned).
二、條件數
判定矩陣是否病態以及衡量矩陣的病態程度通常是看矩陣A的條件數的大小
,
K(A) 稱為 A 的條件數,它很大時,稱 A 為病態,否則稱良態; K(A) 愈大, A 的病態程度就愈嚴重。
三、神經網路中的具有病態條件的Hessian矩陣
為海森矩陣。
這裡我們關注的條件數,因為這個量反映了誤差的曲面特徵,如區域性最小值、鞍點等。
,
條件數越大,病態問題越嚴重。
如果網路的的條件數很大,則網路是病態的(ill-conditioning),可能呈現如下形式。
當海森條件數很差時,梯度下降法也會表現的很差。這是因為一個方向上倒數增加的很快,而另一個方向上增加的很慢。梯度下降不知道倒數的這種變化,所以它不知道應該優先探索倒數長期為負的方向,病態條件也導致很難選擇合適的步長。步長必須足夠小,以免衝過最小而向具有較強正曲率的方向上升。這通常意味著步長太小,以至於在其他較小曲率的方向上進展不明顯。
參考:
《深度學習》 Ian Goodfellow.