條件數、奇異值與海森矩陣

問題

CS231n: Convolutional Neural Networks for Visual Recognition  / Lecture7: Training Neural Networks, Part 2 在講到 Optimization: Problems with SGD 時,有這樣一段話:html

As we go up and down in this landscape, now our loss is very sensitive to changes in the vertical direction. By the way, this is referred to as the loss having a bad condition number at this point, which is the ratio between the largest and smallest singular values of the Hessian matrix at that point.
在這裏插入圖片描述web

第一次遇見這段話的時候,我一頭霧水,condition number是什麼?singular values又是什麼??還有這個Hessian matrix是個啥子東西???我又退回去看了好幾遍,傻傻地覺得多看幾遍就能看懂,但最後仍是沒搞明白。後來我上網查了一些資料,瞭解了條件數、奇異值、海森矩陣的一些知識後,算是能夠看懂這段話了。這篇博客主要是關於我對這段話的理解。算法

知識點

條件數(Condition Number)

Danifree: 機器學習中的矩陣方法(附錄A):病態矩陣與條件數
總結Danifree的博客:
    矩陣A的條件數K(A)定義
在這裏插入圖片描述
其中,矩陣 A A 範數特指無窮範數(Infinity Norm),無窮範數其定義爲:假設 A A 是規格爲 m × n m \times n 的矩陣;對於 A A 的每一行 r i r_i r i r_i n n 個元素;對於 r i r_i 的每個元素 r i j r_{ij} ,咱們取其絕對值 r i j |r_{ij}| ;並對 r i j |r_{ij}| 關於 j j 求累加和,即 j = 1 n r i j \sum_{j=1}^n|r_{ij}| ;咱們對每一行都像這樣求得一個「元素絕對值累加和」,最後咱們會獲得m個「行元素絕對值累加和」,而這m個「行元素絕對值累加和」中最大的那個數,即爲矩陣 A A 的無窮範數。例子能夠參考Danifree的博客
在這裏插入圖片描述
                A = [ 2 3 7 5 4 2 7 3 6 ] \left[\begin{matrix}2&3&-7\\5&4&-2\\7&-3&6\end{matrix}\right] , b = [ 3 7 11 ] \left[\begin{matrix}3\\-7\\11\end{matrix}\right] app

奇異值(Singular Value)

Deepshuai: 奇異值分解(SVD)原理
總結Deepshuai的博客:
    奇異值是特徵值的通常狀況,特徵值是奇異值的特殊狀況,當矩陣 A A 爲方陣時,奇異值等於特徵值。
    在特徵值分解中,咱們但願將矩陣 A A 表示爲如下形式:
在這裏插入圖片描述
在奇異值分解中,咱們也但願將矩陣 A A 表示爲相似的形式:
在這裏插入圖片描述
其中 A A 是規格爲 m × n m \times n 的矩陣; U U 是規格爲 m × m m \times m 的矩陣, U U 中的向量是相互正交的, U U 中的向量稱爲左奇異向量 Σ \Sigma 是規格爲 m × n m \times n 的矩陣, Σ \Sigma 中非對角線元素的值都爲 0 0 ,對角線元素的值稱爲奇異值 V T V^T 是規格爲 n × n n \times n 的矩陣, V V 中的向量也是相互正交地, V V 中的向量稱爲右奇異向量
    奇異值分解方法是,首先咱們求方陣 A T A A^TA 的特徵值
在這裏插入圖片描述
其中 v i v_i 就是右奇異向量此外
在這裏插入圖片描述
其中 σ i \sigma_i 就是奇異值 u i u_i 就是左奇異向量
    奇異值和特徵值同樣,在矩陣Σ中也是按從大到小的順序排列,並且奇異值 σ i \sigma_i 的值減少的特別快,在大多數的狀況下前 10 % 10\% 甚至 1 % 1\% 的奇異值的和就佔了所有奇異值之和的 99 % 99\% 以上。也就是說,咱們能夠利用前r個大的奇異值來近似的描述矩陣,這裏給出奇異值分解定義
在這裏插入圖片描述機器學習

海森矩陣(Hessian Matrix)

Jacobian矩陣和Hessian矩陣,LM最優化方法
總結
    海森矩陣定義爲:
在這裏插入圖片描述
    粗略地講,在二次方程中,橢球面的形狀受海森矩陣的條件數影響,長軸與短軸分別對應海森矩陣最小特徵值和最大特徵值的特徵向量的方向,其軸長與特徵值的平方根成反比。最大特徵值與最小特徵值相差越大,橢球面越扁,優化路徑須要走的路徑越彎,計算效率很低。
    咱們來逐句試着驗證一下斜體字的這段話。
    首先它說 「在二次方程中」,因此咱們須要一個二次方程。爲了簡單,咱們這邊只考慮具備兩個維度的二次方程,橢圓。咱們假設橢圓方程 x 2 9 \frac{x^2}{9} + y 2 4 \frac{y^2}{4} = 1
在這裏插入圖片描述
而後它說 「橢圓面的形狀受海森矩陣的條件數影響」,具體是怎麼影響的呢,它接着解釋 「長軸與短軸分別對應海森矩陣最小特徵值和最大特徵值的特徵向量的方向,其軸長與特徵值的平方根成反比」。因此咱們先寫出咱們的海森矩陣
H ( f ) = [ 2 9 0 0 1 2 ] H(f) = \left[\begin{matrix}\frac{2}{9}&&0\\\\0&&\frac{1}{2}\end{matrix}\right]
根據上文, H ( f ) H(f) 條件數 K ( H ) = H 1 H K(H) = \parallel H^{-1}\parallel\parallel H\parallel ,咱們先求 H 1 H^{-1}
[ H , I ] = [ 2 9 0 1 0 0 1 2 0 1 ] \left[H, I\right] = \left[\begin{matrix}\frac{2}{9}&&0&&1&&0\\\\0&&\frac{1}{2}&&0&&1\end{matrix}\right]
r 2 × 2 r 1 × 9 2 [ 1 0 9 2 0 0 1 0 2 ] = [ I , H 1 ] \xrightarrow[r_2\times 2]{r_1 \times \frac{9}{2}}\left[\begin{matrix}1&&0&&\frac{9}{2}&&0\\\\0&&1&&0&&2\end{matrix}\right] = \left[I, H^{-1}\right]
因此
H 1 = [ 9 2 0 0 2 ] H^{-1} = \left[\begin{matrix}\frac{9}{2}&&0\\\\0&&2\end{matrix}\right]
因此 K ( H ) = 9 2 × 1 2 = 9 4 K(H) = \frac{9}{2} \times \frac{1}{2} = \frac{9}{4}
由於 H ( f ) H(f) 爲方陣,因此 H ( f ) H(f) 有特徵值,且 H ( f ) H(f) 的奇異值此時就是它的特徵值。根據對角矩陣的性質易知, H ( f ) H(f) 特徵值 λ 1 = 2 9 \lambda_1 = \frac{2}{9} λ 2 = 1 2 \lambda_2 = \frac{1}{2} 。半徑爲 3 3 長軸對應 H ( f ) H(f) 最小特徵值 λ 1 \lambda_1 ,半徑爲 2 2 短軸對應 H ( f ) H(f) 最大特徵值 λ 2 \lambda_2 。若是軸長和其對應的特徵值的平方根成反比,則知足 = k 1 軸長 = k \frac{1}{\sqrt{特徵值}} ,的確咱們能夠發現 3 = k 1 1 2 9 3 = k_1 \frac{1}{\sqrt{\frac{2}{9}}} ,解得 k 1 = 2 k_1 = \sqrt{2} 2 = k 2 1 1 2 2 = k_2 \frac{1}{\sqrt{\frac{1}{2}}} ,解得 k 2 = 2 k_2 = \sqrt{2} ;得 k 1 = k 2 k_1 = k_2 。所以,最大特徵值和最小特徵值相差越大,即最大特徵值越大,最大特徵值的平方根的倒數就越小,短軸越短,最小特徵值越小,最小特徵值的平方根的倒數就越大,長軸就越長;短軸越短,長軸越長,橢球面越扁;假如咱們的橢球面其實是一個球面,根據梯度降低算法,咱們每次會沿半徑方向朝圓心走一步(以下圖左),咱們走過的路徑是一條直線;而若是咱們的橢球面實際就是一個橢球面,咱們每次沿與切線垂直的方向向地形的最低處走一步(以下圖右),咱們走過的路徑是一條曲線,並且橢球面越扁,走過的路徑越曲折,優化的效率越低。
在這裏插入圖片描述                                在這裏插入圖片描述
(由於嫌畫同心橢圓麻煩,上圖右借用了百度經驗用matplotlib畫等高線圖像_中學別人畫好的圖,感謝感謝。)ide

理解

至此,咱們補充完全部須要的知識點。
咱們回到咱們的問題,我把它貼下來svg

As we go up and down in this landscape, now our loss is very sensitive to changes in the vertical direction. By the way, this is referred to as the loss having a bad condition number at this point, which is the ratio between the largest and smallest singular values of the Hessian matrix at that point.
在這裏插入圖片描述學習

第一句話「As we go up and down in this landscape, now our loss is very sensitive to changes in the vertical direction」很是好理解,由於對於圖中紅點 P P 而言,「垂直」方向 「等高線」密集「坡度」大;「水平」方向 「等高線」稀疏「坡度」小
第二句話「By the way, this is referred to as the loss having a bad condition number at this point, which is the ratio between the largest and smallest singular values of the Hessian matrix at that point」,首先它說「順便說一句,這表明在這點上損失值有一個 bad condition number」,什麼condition number條件數算是bad呢?課件上給出瞭解釋——high condition numberhigh就是bad條件數越大條件數越bad。而且它告訴咱們,條件數就是海森矩陣最大的奇異值和最小的奇異值的比值。在上面橢圓的例子中,海森矩陣最大的奇異值爲 λ 2 = 1 2 \lambda_2 = \frac{1}{2} ,最小的奇異值爲 λ 1 = 2 9 \lambda_1 = \frac{2}{9} ,二者的比值 λ 2 λ 1 = 1 2 ÷ 2 9 = 1 2 × 9 2 = 9 4 \frac{\lambda_2}{\lambda_1} = \frac{1}{2} \div \frac{2}{9} = \frac{1}{2} \times \frac{9}{2} = \frac{9}{4} ,與咱們先前求得的條件數一致優化

到此,咱們就將這段話理解好了。this