2. 病態的根源
3. 計算條件數的方法
4. 解釋機器學習中的魯棒性
5. 病態矩陣規避:正則化(regularizaiton)
參考資料
病態問題(ill-conditioned problem):問題的解關於條件非常敏感。條件(或資料)中即使存在極微妙的雜訊,也會對問題的解造成劇烈的變化。
反之,關於條件不敏感的問題,我們稱之為良態問題(well-conditioned problem)。
顯然,我們能把這兩個概念拓展至病態/ 良態系統(演算法),「條件」即系統的輸入,「問題的解」即系統的輸出。
舉一些例子:
再延伸至機器學習演算法:
解存在;
解是唯一的;
解連續依賴於輸入(解隨著初始條件的改變而連續改變)(the solution depends continuously on the input)。
只要不滿足其中乙個條件,那麼該問題就是非適定的(ill-posed)。
注意:(非)適定問題既可以是良態的,也可以是病態的。
設有線性方程組\(\mathbf \vec = \vec\),其中\(\mathbf\)是\(n \times n\)方陣,\(\vec\)和\(\vec\)都是\(n \times 1\)列向量。
假設條件\(\vec\)變化了\(\delta}\),解相應地變化了\(\delta}\),即:
\[\mathbf (\vec + \delta}) = \vec + \delta}
\]由於\(\mathbf \vec = \vec\),因此有\(\mathbf \delta} = \delta}\)。
假設\(\mathbf\)是非奇異矩陣,即\(\mathbf\)為方陣且存在逆矩陣\(\mathbf}\),那麼有:
\[\delta} = \mathbf} \cdot \delta}
\]兩邊取範數,根據範數的特性有:
\[\vert \delta} \vert = \vert \mathbf} \cdot \delta} \vert \le \vert \mathbf} \vert \cdot \vert \delta} \vert
\tag\]
對\(\mathbf \vec = \vec\)有相同的操作:
\[\vert \mathbf \vec \vert = \vert \vec \vert \le \vert \mathbf \vert \cdot \vert \vec \vert
\tag\]
結合(1-1)、(1-2)式有:
\[\frac \vert} \vert} \le \vert \mathbf \vert \cdot \vert \mathbf} \vert \cdot \frac \vert} \vert}
\tag\]
有東西!
雖然是不等號,但係數\(\vert \mathbf \vert \cdot \vert \mathbf} \vert\)還是有意義的。我們稱之為矩陣\(\mathbf\)的條件數(condition number),表示為:
\[k(\mathbf) = \vert \mathbf \vert \cdot \vert \mathbf} \vert
\]式中的範數可以是0範數,無窮範數等,要注意矩陣\(\mathbf\)必須是非奇異矩陣。
由(1-3)可得:
因此,條件數是用來衡量系統敏感度的指標,可用於判定病態/ 良態矩陣。
回到前面的注,顯然,病態/ 良態的概念與非適定/ 適定的概念是不一致的。
條件數不小於1:
\[k(\mathbf) = \vert \mathbf \vert \cdot \vert \mathbf} \vert \ge \vert \mathbf \mathbf} \vert = \vert \mathbf \vert = 1
\]病態矩陣的較大條件數,並非其病態的根本原因。其根源在於矩陣列向量相關性過強。
病態矩陣,實際上是奇異矩陣和近奇異矩陣的另乙個說法。
我們舉個例子:
\[\mathbf = \begin
1333 & -131 \\
331 & -31 \\
\end,\ \vec = \begin
1 \\
11 \\
\end
\]解為:
\[\vec = \begin
-120 \\
-13 \\
\end
\]如果我們對輸入條件作微調,則結果會變為:
\[\begin
\begin
\vec &= \begin
1.0097 \\
11.001 \\
\end \longrightarrow \vec &= \begin
-95.2 \\
-6.82 \\
\end \\
\vec &= \begin
1.0024 \\
11.010 \\
\end \longrightarrow \vec y_2 &= \begin
-106.11 \\
-9.52 \\
\end
\end
\end
\]可見,解變化的程度遠遠大於輸入條件變化的程度。並且,矩陣\(\mathbf\)的列向量之間相關性極強。
雖然我們有條件數的定義,但當矩陣為病態矩陣時,其中的求逆結果往往會有很大誤差。因此通常情況下,我們會使用矩陣的特徵值或奇異值來計算條件數。
特徵值較大者,變化自由度高,因此會導致解的劇烈變化。這有點類似於病態矩陣的表現。
參見:一篇博文
通過svd分解,解的不穩定性也能用矩陣的性質加以解釋。參見:一篇博文
若我們取二範數,則條件數為矩陣\(\mathbf\)的最大、最小奇異值之商:
\[k(\mathbf) = \frac}}}}
\]正規陣條件數
當矩陣\(\mathbf\)為正規陣時,條件數為矩陣\(\mathbf\)的最大、最小特徵值的絕對值之商:
\[k(\mathbf) = \frac} \vert}} \vert}
\]酉矩陣條件數
當矩陣\(\mathbf\)為酉矩陣時,條件數為1:
\[k(\mathbf) = 1
\]即當且僅當\(\mathbf\)為酉矩陣時,條件數取得最小值1。
奇異矩陣條件數
當\(\mathbf\)為奇異矩陣時,其逆矩陣不存在:
\[k(\mathbf) \to \infty
\]假設我們要用sgd,用一批\((x,y)\)樣本訓練線性模型:
\[\mathbf \cdot \mathbf = \mathbf
\]變形:
\[\underbrace}_ \cdot \underbrace^}_} = \underbrace^}_}
\]由上面所學的知識,若樣本\(\mathbf\)中存在大量相關(相似)樣本,或矩陣\(\mathbf\)是病態的,那麼當標籤\(\mathbf\)中存在雜訊時,會導致解\(\mathbf\)出現劇烈波動!
而在實際情況中,我們很難避免資料雜訊。因此我們會對樣本進行一些預處理,如異常點檢測和離群點檢測,目的都是為了獲得良態的資料矩陣。
當樣本數遠小於特徵向量維度時,損失函式表示的矩陣往往是稀疏甚至是病態的。
此時我們可以加入正則化項。
正則化項會增加數值解與真實解之間的誤差,但增強了穩定性。
矩陣論基礎知識 病態矩陣與條件數
現在有線性系統 ax b,解方程 很容易得到解為 x1 100,x2 200.如果在樣本採集時存在乙個微小的誤差,比如,將 a 矩陣的係數 400 改變成 401 則得到乙個截然不同的解 x1 40000,x2 79800.當解集 x 對 a 和 b 的係數高度敏感,那麼這樣的方程組就是病態的 il...
深度學習知識點掃盲 病態 病態條件
2.數學解釋 參考資料 先看看花書大致的內容如下 關於病態,書中多次提及這個概念,實際上,在cv領域大部分問題都是非適定問題 ill posed problem 但是書中對其的解釋卻不是很直觀。當 4.2 式的值很大的時候,一種比較有特點的網路就是這個樣子 對於這樣的網路,訓練中存在的問題是對於不同...
矩陣的條件數(condition number)
從優化或者數值計算的角度來說,l2 範數有助於處理 condition number 不好的情況下矩陣求逆很困難的問題。a a a 1 如果方陣 a 是奇異的,那麼 a 的 condition number 就是正無窮大了。實際上,每乙個可逆方陣都存在乙個 condition number。對con...