病態問題和條件數

2022-02-20 09:54:17 字數 3842 閱讀 9327

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...