1. 程式人生 > >神經網路優化:病態矩陣與條件數

神經網路優化:病態矩陣與條件數

一、病態矩陣

求解方程組時如果對資料進行較小的擾動,則得出的結果具有很大波動,這樣的矩陣稱為病態矩陣。

病態矩陣是一種特殊矩陣。指條件數很大的非奇異矩陣。病態矩陣的逆和以其為係數矩陣的方程組的界對微小擾動十分敏感,對數值求解會帶來很大困難。

例如:

現在有線性方程組: Ax = b, 解方程

                                                     

很容易得到解為: x1 = -100, x2 = -200. 如果在樣本採集時存在一個微小的誤差,比如,將 A 矩陣的係數 400 改變成 401: 

                                                    

則得到一個截然不同的解: x1 = 40000, x2 = 79800

.

當解集 x 對 A 和 b 的係數高度敏感,那麼這樣的方程組就是病態的 (ill-conditioned).

 

二、條件數

判定矩陣是否病態以及衡量矩陣的病態程度通常是看矩陣A的條件數K(A)的大小

            K(A)=\frac{\left \| A^{-1} \right \|}{\left \| A \right \|}

 K(A) 稱為 A 的條件數,它很大時,稱 A 為病態,否則稱良態; K(A) 愈大, A 的病態程度就愈嚴重。

三、神經網路中的具有病態條件的Hessian矩陣

H=\bigtriangledown ^{2}E為海森矩陣。

這裡我們關注H的條件數,因為這個量反映了誤差E的曲面特徵,如區域性最小值、鞍點等。H

的條件數為:

                  \left | \frac{\lambda _{max}}{\lambda _{min}}\right |

條件數越大,病態問題越嚴重。

如果網路的H的條件數很大,則網路是病態的(ill-conditioning),可能呈現如下形式。

當海森條件數很差時,梯度下降法也會表現的很差。這是因為一個方向上倒數增加的很快,而另一個方向上增加的很慢。梯度下降不知道倒數的這種變化,所以它不知道應該優先探索倒數長期為負的方向,病態條件也導致很難選擇合適的步長。步長必須足夠小,以免衝過最小而向具有較強正曲率的方向上升。這通常意味著步長太小,以至於在其他較小曲率的方向上進展不明顯。

參考:

《深度學習》 Ian Goodfellow.