bcjohn's blog
奇異值分解 SVD (1) - 定義與性質
發布於: 2025-12-07 更新於: 2025-12-07 分類於: 線性代數 閱讀次數: 
此為 奇異值分解 SVD 系列文章 - 第 1 篇:
  1. 奇異值分解 SVD (1) - 定義與性質
  2. 奇異值分解 SVD (2) - 實際應用

前言

在前面的文章中,我們學習了多種矩陣分解方法,如 特徵值分解矩陣對角化對稱矩陣的譜分解正定矩陣的 Cholesky 分解 等。然而,這些分解方法都有一個共同的限制:只能作用在方陣上。對於非方陣(如 $m \times n$ 矩陣,其中 $m \neq n$),這些方法都無法直接應用

相較之下,奇異值分解 (Singular Value Decomposition, SVD) 適用於 任意矩陣(包括非方陣),這使得它成為線性代數中最普遍、最實用的分解方法。無論是瘦高矩陣($m > n$)、矮胖矩陣($m < n$),還是方陣($m = n$),SVD 都能提供一個優雅的分解形式

下面我們來學習 SVD 的定義、性質、計算方法以及其代表的幾何意義

定義

對於任意 $m \times n$ 矩陣 $A$,存在分解:

$$A = Q_1\Sigma Q_2^T$$

其中:

  • $Q_1$:$m \times m$ 正交矩陣
  • $\Sigma$:$m \times n$ 對角矩陣(對角線元素稱為奇異值
  • $Q_2$:$n \times n$ 正交矩陣

範例

1. $3 \times 2$ 的矩陣:

$$ A = \begin{bmatrix} 2 & 0 \\ 0 & -3 \\ 0 & 0 \end{bmatrix} $$

經過 SVD 分解後可以寫成:

$$ A = Q_1\Sigma Q_2^T = \begin{bmatrix} 0 & 1 & 0 \\ -1 & 0 & 0 \\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} 3 & 0 \\ 0 & 2 \\ 0 & 0 \end{bmatrix} \begin{bmatrix} 0 & 1 \\ 1 & 0 \end{bmatrix} $$

其中:

$Q_1 = \begin{bmatrix} 0 & 1 & 0 \\ -1 & 0 & 0 \\ 0 & 0 & 1 \end{bmatrix}$、 $\Sigma = \begin{bmatrix} 3 & 0 \\ 0 & 2 \\ 0 & 0 \end{bmatrix}$、 $Q_2 = \begin{bmatrix} 0 & 1 \\ 1 & 0 \end{bmatrix}$

$Q_1$ 及 $Q_2$ 為正交矩陣,$\Sigma$ 為對角矩陣,奇異值為 3 跟 2

2. $3 \times 3$ 的方陣:

$$ A = \begin{bmatrix} 0 & 0 & 0 \\ 0 & 4 & 0 \\ 0 & 0 & 1 \end{bmatrix} $$

經過 SVD 分解後可以寫成:

$$ A = Q_1\Sigma Q_2^T = \begin{bmatrix} 0 & 0 & 1 \\ 1 & 0 & 0 \\ 0 & 1 & 0 \end{bmatrix} \begin{bmatrix} 4 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 0 \end{bmatrix} \begin{bmatrix} 0 & 1 & 0 \\ 0 & 0 & 1 \\ 1 & 0 & 0 \end{bmatrix} $$

其中:

$Q_1 = \begin{bmatrix} 0 & 0 & 1 \\ 1 & 0 & 0 \\ 0 & 1 & 0 \end{bmatrix}$、 $\Sigma = \begin{bmatrix} 4 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 0 \end{bmatrix}$、 $Q_2 = \begin{bmatrix} 0 & 0 & 1 \\ 1 & 0 & 0 \\ 0 & 1 & 0 \end{bmatrix}$

$Q_1$ 及 $Q_2$ 為正交矩陣,$\Sigma$ 為對角矩陣,奇異值為 4 跟 1

奇異值的性質

奇異值 $\sigma_i \geq 0$ 位於 $\Sigma$ 的對角線上,通常按降序排列:

$$\sigma_1 \geq \sigma_2 \geq \cdots \geq \sigma_r > 0$$

其中 $r = \text{rank}(A)$ 是矩陣的

對於 $m \times n$ 矩陣 $A$(假設是 $m > n$ 的瘦高矩陣),$\Sigma$ 的形式為:

$$ \Sigma = \begin{bmatrix} \sigma_1 & 0 & 0 & \cdots & 0 \\ 0 & \sigma_2 & 0 & \cdots & 0 \\ 0 & 0 & \sigma_3 & \cdots & 0 \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & 0 & \cdots & \sigma_n \\ 0 & 0 & 0 & \cdots & 0 \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & 0 & \cdots & 0 \end{bmatrix} $$

當 $m = n$($A$ 為 $n \times n$ 方陣)時,$\Sigma$ 仍然是 $n \times n$ 的對角矩陣,但只有前 $r = \text{rank}(A)$ 個奇異值非零,其餘位置為 0:

$$ \Sigma = \begin{bmatrix} \sigma_1 & 0 & \cdots & 0 & 0 & \cdots & 0 \\ 0 & \sigma_2 & \cdots & 0 & 0 & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & \sigma_r & 0 & \cdots & 0 \\ 0 & 0 & \cdots & 0 & 0 & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & 0 & 0 & \cdots & 0 \end{bmatrix} $$

從 $A^TA$ 和 $AA^T$ 出發

為什麽任意形狀的矩陣 $A$ 都可以經過 SVD 分解成兩個正交矩陣與一個對角矩陣的乘積呢?要了解這件事,我們需要先從這兩個矩陣出發:

  1. $A^TA$($n \times n$ 矩陣)
  2. $AA^T$($m \times m$ 矩陣)

下面讓我們來了解這兩個矩陣的七大關鍵性質,在深刻了解這些性質後我們就能輕鬆地了解為什麼 SVD 分解的形式長這樣

1. 矩陣的大小

對於 $m \times n$ 矩陣 $A$,我們可以構造兩個重要的矩陣:

  • $A^TA$:$n \times n$ 方陣(將 $A^T$ 與 $A$ 相乘)
  • $AA^T$:$m \times m$ 方陣(將 $A$ 與 $A^T$ 相乘)

這兩個矩陣都是方陣,因此我們可以對它們應用前面學過的方陣分解方法(如特徵值分解、對角化等),這正是推導 SVD 的關鍵步驟

2. 對稱矩陣

我們證明 $A^TA$ 和 $AA^T$ 都是 對稱矩陣

證明 $A^TA$ 是對稱矩陣:

根據 轉置矩陣的性質

$$(A^TA)^T = A^T(A^T)^T = A^TA$$

$A^TA$ 的轉置為自己,這表明 $A^TA$ 是對稱矩陣

證明 $AA^T$ 是對稱矩陣:

同樣地:

$$(AA^T)^T = (A^T)^TA^T = AA^T$$

因此 $AA^T$ 也是對稱矩陣

3. 零空間

我們證明 $A^TA$ 和 $A$ 有相同的 零空間,而 $AA^T$ 與 $A^T$ 有相同的 左零空間

證明:$A^TA$ 和 $A$ 有相同的零空間:

$$\text{Null}(A^TA) = \text{Null}(A)$$

我們需要證明兩個方向都成立:

方向 1:$\text{Null}(A) \subseteq \text{Null}(A^TA)$

如果 $\mathbf{x} \in \text{Null}(A)$,即 $A\mathbf{x} = \mathbf{0}$,將等式左乘以 $A^T$,則:

$$A^TA\mathbf{x} = A^T(A\mathbf{x}) = A^T\mathbf{0} = \mathbf{0}$$

因此 $\mathbf{x} \in \text{Null}(A^TA)$

方向 2:$\text{Null}(A^TA) \subseteq \text{Null}(A)$

如果 $\mathbf{x} \in \text{Null}(A^TA)$,即 $A^TA\mathbf{x} = \mathbf{0}$,將等式左乘以 $\mathbf{x}^T$,則:

$$\mathbf{x}^TA^TA\mathbf{x} = \mathbf{x}^T\mathbf{0} = 0$$

根據 向量內積與範數的關係

$$\mathbf{x}^TA^TA\mathbf{x} = (A\mathbf{x})^T(A\mathbf{x}) = \|A\mathbf{x}\|^2$$

因此:

$$\|A\mathbf{x}\|^2 = 0$$

這意味著 $A\mathbf{x} = \mathbf{0}$,即 $\mathbf{x} \in \text{Null}(A)$

結論: 由於兩個方向都成立,我們得到 $\text{Null}(A) = \text{Null}(A^TA)$,即兩者有相同的零空間

證明:$AA^T$ 和 $A^T$ 有相同的左零空間:

$$\text{Null}(AA^T) = \text{Null}(A^T)$$

方向一: $\text{Null}(A^T) \subseteq \text{Null}(AA^T)$

假設 $\mathbf{y} \in \text{Null}(A^T)$,即 $A^T\mathbf{y} = \mathbf{0}$,將等式左乘 $A$,則:

$$AA^T\mathbf{y} = (AA^T)\mathbf{y} = (AA^T)^T\mathbf{y} = A\mathbf{0} = \mathbf{0}$$

因此 $\mathbf{y} \in \text{Null}(AA^T)$

方向二: $\text{Null}(AA^T) \subseteq \text{Null}(A^T)$

假設 $\mathbf{y} \in \text{Null}(AA^T)$,即 $AA^T\mathbf{y} = \mathbf{0}$,將等式左乘 $\mathbf{y}^T$:

$$\mathbf{y}^TAA^T\mathbf{y} = \mathbf{0}$$

注意到:

$$\mathbf{y}^TAA^T\mathbf{y} = (A^T\mathbf{y})^T(A^T\mathbf{y}) = \|A^T\mathbf{y}\|^2$$

因此:

$$\|A^T\mathbf{y}\|^2 = 0$$

這意味著 $A^T\mathbf{y} = \mathbf{0}$,即 $\mathbf{y} \in \text{Null}(A^T)$

結論: 由於兩個方向都成立,我們得到 $\text{Null}(AA^T) = \text{Null}(A^T)$,即兩者有相同的左零空間

4. 正定矩陣或半正定矩陣

我們證明 $A^TA$ 和 $AA^T$ 都是正定矩陣或半正定矩陣

$A^TA$ 的正定性

我們考慮 $A^TA$ 的 二次型

$$\mathbf{x}^T(A^TA)\mathbf{x} = \mathbf{x}^TA^TA\mathbf{x} = (A\mathbf{x})^T(A\mathbf{x}) = \|A\mathbf{x}\|^2$$

接著根據 秩-零化度定理零空間(Null space) 的維度為:

$$\dim(\text{Null}(A)) = n - \text{rank}(A)$$

當 $\text{rank}(A) = n$,也就是 行滿秩 時:

$$\dim(\text{Null}(A)) = n - n = 0$$

這意味著 $\text{Null}(A) = {\mathbf{0}}$,即 $A\mathbf{x} = \mathbf{0}$ 只有當 $\mathbf{x}$ 是零向量時成立

=> 而這給出了 $A^TA$ 的二次型恆正的結論,也就是說 $A^TA$ 是正定矩陣

$$\mathbf{x}^T(A^TA)\mathbf{x} = \|A\mathbf{x}\|^2 \gt 0$$

另一方面當 $\text{rank}(A) < n$ 也就是 $r < n$ 時:

$$\dim(\text{Null}(A)) = n - r > 0$$

此時 $\text{Null}(A) \neq {\mathbf{0}}$,也就是說存在某些向量 $\mathbf{x}$ 可以使得 $A\mathbf{x} = \mathbf{0}$

=> 而這給出了 $A^TA$ 的二次型非負的結論,也就是說 $A^TA$ 是半正定矩陣

$$\mathbf{x}^T(A^TA)\mathbf{x} = \|A\mathbf{x}\|^2 \ge 0$$
$AA^T$ 的正定性

我們考慮 $AA^T$ 的二次型:

$$\mathbf{x}^T(AA^T)\mathbf{x} = \mathbf{x}^TAA^T\mathbf{x} = (A^T\mathbf{x})^T(A^T\mathbf{x}) = \|A^T\mathbf{x}\|^2$$

同樣我們可以計算 左零空間的維度 為:

$$\dim(\text{Null}(A^T)) = m - \text{rank}(A)$$

當 $\text{rank}(A) = m$,也就是 列滿秩 時:

$$\dim(\text{Null}(A^T)) = m - m = 0$$

這意味著 $\text{Null}(A^T) = {\mathbf{0}}$,即 $A^T\mathbf{x} = \mathbf{0}$ 只有當 $\mathbf{x}$ 是零向量時成立

=> 而這給出了 $AA^T$ 的二次型恆正的結論,也就是說 $AA^T$ 是正定矩陣

$$\mathbf{x}^T(AA^T)\mathbf{x} = \|A^T\mathbf{x}\|^2 \gt 0$$

另一方面當 $\text{rank}(A) < m$ 也就是 $r < m$ 時:

$$\dim(\text{Null}(A^T)) = m - r > 0$$

此時 $\text{Null}(A^T) \neq {\mathbf{0}}$,也就是說存在某些向量 $\mathbf{x}$ 可以使得 $A^T\mathbf{x} = \mathbf{0}$

=> 而這給出了 $AA^T$ 的二次型非負的結論,也就是說 $AA^T$ 是半正定矩陣

$$\mathbf{x}^T(AA^T)\mathbf{x} = \|A^T\mathbf{x}\|^2 \ge 0$$
小結
矩陣 條件 正定性 原因
$A^TA$ $A$ 行滿秩($\text{rank}(A) = n$) 正定 $\text{Null}(A) = {\mathbf{0}}$ $\Rightarrow$ $||A\mathbf{x}||^2 > 0$ 對所有非零 $\mathbf{x}$
$A^TA$ $A$ 非行滿秩($\text{rank}(A) < n$) 半正定 存在非零 $\mathbf{x}$ 使得 $A\mathbf{x} = \mathbf{0}$ $\Rightarrow$ $||A\mathbf{x}||^2 = 0$
$AA^T$ $A$ 列滿秩($\text{rank}(A) = m$) 正定 $\text{Null}(A^T) = {\mathbf{0}}$ $\Rightarrow$ $||A^T\mathbf{x}||^2 > 0$ 對所有非零 $\mathbf{x}$
$AA^T$ $A$ 非列滿秩($\text{rank}(A) < m$) 半正定 存在非零 $\mathbf{x}$ 使得 $A^T\mathbf{x} = \mathbf{0}$ $\Rightarrow$ $||A^T\mathbf{x}||^2 = 0$

5. 相同的特徵值

我們證明 $A^TA$ 和 $AA^T$ 擁有相同的特徵值

假設 $\lambda \neq 0$ 是 $A^TA$ 的特徵值,對應的特徵向量為 $\mathbf{x}$,即:

$$A^TA\mathbf{x} = \lambda\mathbf{x}, \quad \mathbf{x} \neq \mathbf{0}$$

我們要證明 $\lambda$ 也是 $AA^T$ 的特徵值

步驟 1:在等式兩邊左乘 $A$

$$A(A^TA\mathbf{x}) = A(\lambda\mathbf{x})$$

步驟 2:套用乘法結合律,將 $A\mathbf{x}$ 單獨放在括號中

$$AA^T(A\mathbf{x}) = \lambda(A\mathbf{x})$$

步驟 3:結論

由步驟 2 可以觀察出,當我們把 $A\mathbf{x}$ 看作 $AA^T$ 的特徵向量,即可得證 $AA^T$ 與 $A^TA$ 擁有同樣的特徵值 $\lambda$:

$$AA^T(A\mathbf{x}) = \lambda(A\mathbf{x})$$

零特徵值的情況

需要注意的是,由於 $A^TA$ 和 $AA^T$ 矩陣的大小不一樣,即使他們擁有同樣的特徵值 $\lambda$,但其餘的特徵值數量是不一致的,所以兩者可能有不同數量的零特徵值:

  • 如果 $m > n$(瘦高矩陣),$AA^T$ 至少有 $m - n$ 個零特徵值
  • 如果 $m < n$(矮胖矩陣),$A^TA$ 至少有 $n - m$ 個零特徵值
  • 如果 $\text{rank}(A) = r < \min(m,n)$,兩者都有額外的零特徵值

範例

考慮 $3 \times 2$ 的瘦高矩陣 $A$(秩為 2):

  • $A^TA$ 是 $2 \times 2$,有 2 個非零特徵值,0 個零特徵值
  • $AA^T$ 是 $3 \times 3$,有 2 個非零特徵值(與 $A^TA$ 相同),1 個零特徵值

6. 特徵向量的對應關係

從上述求證相同特徵值的章節中可以看出,如果:

  • $\mathbf{v_i}$ 是 $A^TA$ 的某個特徵向量,對應特徵值 $\lambda_i$
  • $\mathbf{u_i}$ 是 $AA^T$ 的某個特徵向量,對應相同特徵值 $\lambda_i$

則有以下特徵向量的對應關係:

$$\mathbf{u_i} = A\mathbf{v_i}$$

單位化

需要注意的是,$A\mathbf{v_i}$ 通常不是單位向量。為了得到單位特徵向量,我們需要進行正規化

假設 $\mathbf{v_i}$ 已經是單位向量( $\|\mathbf{v_i}\| = 1$),我們計算 $\|A\mathbf{v_i}\|$: $$ \begin{align*} \|A\mathbf{v_i}\|^2 &= (A\mathbf{v_i})^T(A\mathbf{v_i}) \\ &= \mathbf{v_i}^TA^TA\mathbf{v_i} \\ &= \mathbf{v_i}^T(\lambda_i\mathbf{v_i}) \quad (\text{因為 } A^TA\mathbf{v_i} = \lambda_i\mathbf{v_i}) \\ &= \lambda_i\mathbf{v_i}^T\mathbf{v_i} \\ &= \lambda_i \end{align*} $$

因此:

$$\|A\mathbf{v_i}\| = \sqrt{\lambda_i}$$

單位化後的特徵向量為:

$$\mathbf{u_i} = \frac{A\mathbf{v_i}}{\|A\mathbf{v_i}\|} = \frac{A\mathbf{v_i}}{\sqrt{\lambda_i}}$$

7. 矩陣對角化

基於前面的結果,我們可以將對稱矩陣 $A^TA$ 和 $AA^T$ 進行 正交對角化

$A^TA$ 的對角化

由於 $A^TA$ 是對稱矩陣,它可以被對角化為:

$$A^TA = Q_2\Lambda Q_2^T$$

其中:

$Q_2$ 是由 $A^TA$ 的單位特徵向量組成的 $n \times n$ 正交矩陣

$$ Q_2 = \begin{bmatrix} | & | & & | \\ \mathbf{v}_1 & \mathbf{v}_2 & \cdots & \mathbf{v}_n \\ | & | & & | \end{bmatrix} $$

$\Lambda$ 是由特徵值組成的 $n \times n$ 對角矩陣

$$ \Lambda = \begin{bmatrix} \lambda_1 & 0 & \cdots & 0 \\ 0 & \lambda_2 & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & \lambda_n \end{bmatrix} $$

其中 $\lambda_1 \geq \lambda_2 \geq \cdots \geq \lambda_n \geq 0$(按降序排列)

$AA^T$ 的對角化

同樣地,$AA^T$ 也是對稱矩陣,可以被對角化為:

$$AA^T = Q_1\Lambda Q_1^T$$

其中:

$Q_1$ 是由 $AA^T$ 的單位特徵向量組成的 $m \times m$ 正交矩陣

$$ Q_1 = \begin{bmatrix} | & | & & | \\ \mathbf{u}_1 & \mathbf{u}_2 & \cdots & \mathbf{u}_m \\ | & | & & | \end{bmatrix} $$

$\Lambda$ 是由特徵值組成的 $m \times m$ 對角矩陣

$$ \Lambda = \begin{bmatrix} \lambda_1 & 0 & \cdots & 0 \\ 0 & \lambda_2 & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & \lambda_m \end{bmatrix} $$

其中 $\lambda_1 \geq \lambda_2 \geq \cdots \geq \lambda_m \geq 0$(按降序排列)

小結:$A^TA$ 和 $AA^T$ 的性質總整理

以上我們推導了 $A^TA$ 和 $AA^T$ 的七大關鍵性質:

$A^TA$ $AA^T$ 說明
1. 矩陣大小 $n \times n$ $m \times m$ 兩者都是方陣
2. 對稱矩陣 $(A^TA)^T = A^TA$ $(AA^T)^T = AA^T$ 兩者都是對稱矩陣
3. 零空間 $\text{Null}(A^TA) = \text{Null}(A)$ $\text{Null}(AA^T) = \text{Null}(A^T)$ 零空間相同
4. 正定矩陣或半正定矩陣 $\mathbf{x}^TA^TA\mathbf{x} \geq 0$ $\mathbf{x}^TAA^T\mathbf{x} \geq 0$ 兩者至少都是半正定矩陣
5. 相同的特徵值 $\lambda_1, \ldots, \lambda_r > 0$ $\lambda_1, \ldots, \lambda_r > 0$ 前 $r$ 個非零特徵值相同
6. 特徵向量的對應關係 $\mathbf{v}_i$ 是特徵向量 $\mathbf{u}_i = \frac{A\mathbf{v}_i}{\sqrt{\lambda_i}}$ 兩者特徵向量間的相關性
7. 矩陣對角化 $A^TA = Q_2\Lambda Q_2^T$ $AA^T = Q_1\Lambda Q_1^T$ 正交對角化性質

這些性質是推導 SVD 的基礎,接著我們將利用它們推導出 $A = Q_1\Sigma Q_2^T$ 的形式

推導奇異值分解的形式

接著我們從 $A^TA$ 和 $AA^T$ 的性質出發,推導出奇異值分解的定義形式

步驟 1:從特徵向量關係出發

6. 特徵向量的對應關係 我們知道:

$$\mathbf{u}_i = \frac{A\mathbf{v}_i}{\sqrt{\lambda_i}}$$

兩邊同乘 $\sqrt{\lambda_i}$:

$$A\mathbf{v}_i = \sqrt{\lambda_i}\mathbf{u}_i$$

這個關係對所有 $i = 1, 2, \ldots, r$($r$ 是秩)都成立

步驟 2:改寫成矩陣形式

對於以上所有的 $A\mathbf{v}_i$,我們可以寫成:

$$ \begin{align*} A\mathbf{v}_1 &= \sqrt{\lambda_1}\mathbf{u}_1 \\ A\mathbf{v}_2 &= \sqrt{\lambda_2}\mathbf{u}_2 \\ &\vdots \\ A\mathbf{v}_n &= \sqrt{\lambda_n}\mathbf{u}_n \end{align*} $$

將這些方程以矩陣形式表示為:

$$ A \begin{bmatrix} | & | & & | \\ \mathbf{v}_1 & \mathbf{v}_2 & \cdots & \mathbf{v}_n \\ | & | & & | \end{bmatrix} = \begin{bmatrix} | & | & & | \\ \mathbf{u}_1 & \mathbf{u}_2 & \cdots & \mathbf{u}_m \\ | & | & & | \end{bmatrix} \begin{bmatrix} \sqrt{\lambda_1} & 0 & \cdots & 0 & 0 & \cdots & 0 \\ 0 & \sqrt{\lambda_2} & \cdots & 0 & 0 & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & \sqrt{\lambda_r} & 0 & \cdots & 0 \\ 0 & 0 & \cdots & 0 & 0 & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & 0 & 0 & \cdots & 0 \end{bmatrix} $$

其中最右邊的對角矩陣是 $m \times n$ 的矩陣 $\Sigma$,這個矩陣的特點是:

  • 對角線元素:為特徵值的平方根 $\sqrt{\lambda_i}$,就是一開始定義的 奇異值 ($\sigma_i$),從左上開始由大到小排列
  • 非對角線元素:全部為零
  • 矩陣形狀:維度為 $m \times n$,由原矩陣 $A$ 的維度決定
  • :前 $r$ 個奇異值為正數($r = \text{rank}(A)$),其餘為零

步驟 3:使用正交矩陣表示

7. 矩陣對角化 可知:

$$ Q_2 = \begin{bmatrix} | & | & & | \\ \mathbf{v}_1 & \mathbf{v}_2 & \cdots & \mathbf{v}_n \\ | & | & & | \end{bmatrix} $$ $$ Q_1 = \begin{bmatrix} | & | & & | \\ \mathbf{u}_1 & \mathbf{u}_2 & \cdots & \mathbf{u}_m \\ | & | & & | \end{bmatrix} $$

則 步驟 2 所得的式子可以寫成:

$$AQ_2 = Q_1\Sigma$$

步驟 4:得到 SVD 形式

在等式兩邊右乘 $Q_2^T$:

$$AQ_2Q_2^T = Q_1\Sigma Q_2^T$$

由於 $Q_2$ 是正交矩陣,有 $Q_2^TQ_2 = I$,所以:

$$A = Q_1\Sigma Q_2^T$$

由此我們得到了奇異值分解(SVD)的標準形式!

$\Sigma$ 矩陣的具體形式

根據矩陣 $A$ 的大小,對角矩陣 $\Sigma$ 也會有不同的表示形式,這部分容易被混淆所以讓我們細看一下

$\Sigma$ 跟 $A$ 一樣都是 $m \times n$ 的矩陣,其形式取決於 $m$ 和 $n$ 的大小關係:

情況 1:$m > n$(瘦高矩陣)
$$ \Sigma = \begin{bmatrix} \sigma_1 & 0 & \cdots & 0 \\ 0 & \sigma_2 & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & \sigma_n \\ 0 & 0 & \cdots & 0 \\ \vdots & \vdots & & \vdots \\ 0 & 0 & \cdots & 0 \end{bmatrix}_{m \times n} $$
情況 2:$m < n$(矮胖矩陣)
$$ \Sigma = \begin{bmatrix} \sigma_1 & 0 & \cdots & 0 & 0 & \cdots & 0\\ 0 & \sigma_2 & \cdots & 0 & 0 & \cdots & 0\\ \vdots & \vdots & \ddots & \vdots & \vdots & & \vdots \\ 0 & 0 & \cdots & \sigma_m & 0 & \cdots & 0 \end{bmatrix}_{m \times n} $$
情況 3:$m = n$(方陣)
$$ \Sigma = \begin{bmatrix} \sigma_1 & 0 & \cdots & 0 \\ 0 & \sigma_2 & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & \sigma_n \end{bmatrix}_{n \times n} $$

需要注意的是只有 $\sigma_1, \sigma_2, … \sigma_r$ => 前 $r$ 個奇異值為正數,$\sigma_{r+1}, \sigma_{r+2}, … \sigma_{n}$ => $\sigma_r$ 之後的奇異數為零

計算矩陣的 SVD

以上我們了解了 SVD 分解的形式,接著我們要問的是,對於矩陣 $A$ 的奇異值分解:

$$A = Q_1\Sigma Q_2^T$$

要如何在已知矩陣 $A$ 的情況下,求得 $Q_1$, $Q_2$ 以及中間的 $\Sigma$ 矩陣呢?

計算方法概述

根據前面的推導,我們有兩種方法可以計算 SVD:

方法 1:從 $A^TA$ 出發(推薦,當 $m \geq n$ 時)

當矩陣 $A$ 是瘦高矩陣($m \geq n$)時,通常從 $A^TA$ 開始計算,因為 $A^TA$ 的維度較小

步驟

  1. 計算 $A^TA$:得到 $n \times n$ 的對稱矩陣
  2. 求 $A^TA$ 的特徵值和特徵向量
    • 特徵值:$\lambda_1 \geq \lambda_2 \geq \cdots \geq \lambda_n \geq 0$
    • 特徵向量:$\mathbf{v}_1, \mathbf{v}_2, \ldots, \mathbf{v}_n$(單位化)
  3. 計算奇異值:$\sigma_i = \sqrt{\lambda_i}$(按降序排列)
  4. 構建 $Q_2$:$Q_2 = [\mathbf{v}_1, \mathbf{v}_2, \ldots, \mathbf{v}_n]$($n \times n$ 正交矩陣)
  5. 構建 $\Sigma$:$m \times n$ 對角矩陣,對角元素為 $\sigma_1, \sigma_2, \ldots, \sigma_n$
  6. 計算 $Q_1$:利用關係式 $\mathbf{u}_i = \frac{A\mathbf{v}_i}{\sigma_i}$(僅對 $\sigma_i > 0$ 的 $i$),然後擴展為完整的正交基

方法 2:從 $AA^T$ 出發(當 $m \leq n$ 時)

當矩陣 $A$ 是矮胖矩陣($m \leq n$)時,適合從維度較小的 $AA^T$ 開始計算

步驟

  1. 計算 $AA^T$:得到 $m \times m$ 的對稱矩陣
  2. 求 $AA^T$ 的特徵值和特徵向量
    • 特徵值:$\lambda_1 \geq \lambda_2 \geq \cdots \geq \lambda_m \geq 0$
    • 特徵向量:$\mathbf{u}_1, \mathbf{u}_2, \ldots, \mathbf{u}_m$(單位化)
  3. 計算奇異值:$\sigma_i = \sqrt{\lambda_i}$(按降序排列)
  4. 構建 $Q_1$:$Q_1 = [\mathbf{u}_1, \mathbf{u}_2, \ldots, \mathbf{u}_m]$($m \times m$ 正交矩陣)
  5. 構建 $\Sigma$:$m \times n$ 對角矩陣,對角元素為 $\sigma_1, \sigma_2, \ldots, \sigma_m$
  6. 計算 $Q_2$:利用關係式 $\mathbf{v}_i = \frac{A^T\mathbf{u}_i}{\sigma_i}$(僅對 $\sigma_i > 0$ 的 $i$),然後擴展為完整的正交基

計算流程範例(以方法 1 為例)

假設我們有一個 $3 \times 2$ 矩陣 $A$($m \geq n$ 的瘦高矩陣):

$$ A = \begin{bmatrix} 2 & 0 \\ 0 & -3 \\ 0 & 0 \end{bmatrix} $$

實際計算流程如下:

步驟 1:計算 $A^TA$
$$ \begin{align*} A^TA &= \begin{bmatrix} 2 & 0 & 0 \\ 0 & -3 & 0 \end{bmatrix} \begin{bmatrix} 2 & 0 \\ 0 & -3 \\ 0 & 0 \end{bmatrix} \\ &= \begin{bmatrix} 4 & 0 \\ 0 & 9 \end{bmatrix} \end{align*} $$
步驟 2:對角化 $A^TA$

由於 $A^TA = \begin{bmatrix} 4 & 0 \\ 0 & 9 \end{bmatrix}$ 已經是對角矩陣,我們可以直接讀出特徵值和特徵向量:

特徵值(按降序排列):

  • $\lambda_1 = 9$
  • $\lambda_2 = 4$

特徵向量(標準正交):

  • $\mathbf{v}_1 = \begin{bmatrix} 0 \\ 1 \end{bmatrix}$(對應 $\lambda_1 = 9$)
  • $\mathbf{v}_2 = \begin{bmatrix} 1 \\ 0 \end{bmatrix}$(對應 $\lambda_2 = 4$)
步驟 3:計算奇異值
$$ \begin{align*} \sigma_1 &= \sqrt{\lambda_1} = \sqrt{9} = 3 \\ \sigma_2 &= \sqrt{\lambda_2} = \sqrt{4} = 2 \end{align*} $$
步驟 4:構建 $\Sigma$ 矩陣
$$ \Sigma = \begin{bmatrix} 3 & 0 \\ 0 & 2 \\ 0 & 0 \end{bmatrix}_{3 \times 2} $$
步驟 5:構建 $Q_2$
$$ Q_2 = \begin{bmatrix} \mathbf{v}_1 & \mathbf{v}_2 \end{bmatrix} = \begin{bmatrix} 0 & 1 \\ 1 & 0 \end{bmatrix}_{2 \times 2} $$
步驟 6:構建 $Q_1$

利用關係式 $\mathbf{u}_i = \displaystyle \frac{A\mathbf{v}_i}{\sigma_i}$ 計算前 $r$ 個特徵向量($r = 2$):

$$ \begin{align*} \mathbf{u}_1 &= \frac{A\mathbf{v}_1}{\sigma_1} = \frac{1}{3} \begin{bmatrix} 2 & 0 \\ 0 & -3 \\ 0 & 0 \end{bmatrix} \begin{bmatrix} 0 \\ 1 \end{bmatrix} = \frac{1}{3} \begin{bmatrix} 0 \\ -3 \\ 0 \end{bmatrix} = \begin{bmatrix} 0 \\ -1 \\ 0 \end{bmatrix} \\ \mathbf{u}_2 &= \frac{A\mathbf{v}_2}{\sigma_2} = \frac{1}{2} \begin{bmatrix} 2 & 0 \\ 0 & -3 \\ 0 & 0 \end{bmatrix} \begin{bmatrix} 1 \\ 0 \end{bmatrix} = \frac{1}{2} \begin{bmatrix} 2 \\ 0 \\ 0 \end{bmatrix} = \begin{bmatrix} 1 \\ 0 \\ 0 \end{bmatrix} \end{align*} $$

以上已經找出 $Q_1$ 的 2 組特徵向量,而 $Q_1$ 是 $3 \times 3$ 的矩陣,所以我們還需要找到最後一組特徵向量

幸運的是由於 $Q_1$ 是正交矩陣,正交矩陣的 行向量性質 指明了第三組特徵向量必須與前 2 組特徵向量正交,於是我們需要找到一個與 $\mathbf{u}_1$ 和 $\mathbf{u}_2$ 都正交的單位向量

設 $\mathbf{u}_3 = \begin{bmatrix} a \\ b \\ c \end{bmatrix}$ ,需要滿足以下正交條件:

  • $\mathbf{u}_1^T\mathbf{u}_3 = 0 \Rightarrow -b = 0 \Rightarrow b = 0$
  • $\mathbf{u}_2^T\mathbf{u}_3 = 0 \Rightarrow a = 0$
  • $\|\mathbf{u}_3\| = 1 \Rightarrow c = \pm 1$

取 $\mathbf{u}_3 = \begin{bmatrix} 0 \\ 0 \\ 1 \end{bmatrix}$ ,則:

$$ Q_1 = \begin{bmatrix} \mathbf{u}_1 & \mathbf{u}_2 & \mathbf{u}_3 \end{bmatrix} = \begin{bmatrix} 0 & 1 & 0 \\ -1 & 0 & 0 \\ 0 & 0 & 1 \end{bmatrix}_{3 \times 3} $$
驗證結果

最後讓我們驗證 $A = Q_1\Sigma Q_2^T$:

$$ \begin{align*} Q_1\Sigma Q_2^T &= \begin{bmatrix} 0 & 1 & 0 \\ -1 & 0 & 0 \\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} 3 & 0 \\ 0 & 2 \\ 0 & 0 \end{bmatrix} \begin{bmatrix} 0 & 1 \\ 1 & 0 \end{bmatrix} \\ &= \begin{bmatrix} 0 & 1 & 0 \\ -1 & 0 & 0 \\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} 0 & 3 \\ 2 & 0 \\ 0 & 0 \end{bmatrix} \\ &= \begin{bmatrix} 2 & 0 \\ 0 & -3 \\ 0 & 0 \end{bmatrix} = A \end{align*} $$

驗證成功!

額外計算:SVD 分解的多種方式

事實上在 步驟 2 與步驟 6 選擇特徵向量 $\mathbf{v}_i$ 與 $\mathbf{u}_i$ 的時候可以有多種組合,以下讓我們看看同一矩陣 $A$ 的另一種 SVD 分解方式

  • $\mathbf{v}_1' = -\mathbf{v}_1 = \begin{bmatrix} 0 \\ -1 \end{bmatrix}$
  • $\mathbf{u}_1' = -\mathbf{u}_1 = \begin{bmatrix} 0 \\ 1 \\ 0 \end{bmatrix}$
  • $\mathbf{v}_2' = \mathbf{v}_2 = \begin{bmatrix} 1 \\ 0 \end{bmatrix}$
  • $\mathbf{u}_2' = \mathbf{u}_2 = \begin{bmatrix} 1 \\ 0 \\ 0 \end{bmatrix}$
  • $\mathbf{u}_3' = -\mathbf{u}_3 = \begin{bmatrix} 0 \\ 0 \\ -1 \end{bmatrix}$ (一樣有保持正交性)

則:

$$ Q_1' = \begin{bmatrix} 0 & 1 & 0 \\ 1 & 0 & 0 \\ 0 & 0 & -1 \end{bmatrix}, \quad Q_2' = \begin{bmatrix} 0 & 1 \\ -1 & 0 \end{bmatrix}, \quad \Sigma = \begin{bmatrix} 3 & 0 \\ 0 & 2 \\ 0 & 0 \end{bmatrix} $$

驗證:

$$ \begin{align*} Q_1'\Sigma (Q_2')^T &= \begin{bmatrix} 0 & 1 & 0 \\ 1 & 0 & 0 \\ 0 & 0 & -1 \end{bmatrix} \begin{bmatrix} 3 & 0 \\ 0 & 2 \\ 0 & 0 \end{bmatrix} \begin{bmatrix} 0 & -1 \\ 1 & 0 \end{bmatrix} \\ &= \begin{bmatrix} 0 & 1 & 0 \\ 1 & 0 & 0 \\ 0 & 0 & -1 \end{bmatrix} \begin{bmatrix} 0 & -3 \\ 2 & 0 \\ 0 & 0 \end{bmatrix} \\ &= \begin{bmatrix} 2 & 0 \\ 0 & -3 \\ 0 & 0 \end{bmatrix} = A \end{align*} $$

結論:以另一組的 $Q_1’$, $Q_2’$ 所構建的 SVD 相乘一樣可以得到矩陣 $A$,這說明了 SVD 分解是有很多種方式的

總結

在本文中,我們詳細介紹了奇異值分解 (SVD) 的定義、性質和計算方法

與前面學習的分解方法(如特徵值分解、矩陣對角化、Cholesky 分解等)不同,SVD 最重要的特點是不受矩陣形狀的限制:無論是瘦高矩陣($m > n$)、矮胖矩陣($m < n$),還是方陣($m = n$),SVD 都能提供一個優雅的分解形式 $A = Q_1\Sigma Q_2^T$。更重要的是,對於任意矩陣 $A$,SVD 分解總是存在,不需要滿足任何特殊條件(如可逆性、對稱性等),這個普遍適用性使得 SVD 成為線性代數中最強大的工具之一,能夠統一處理各種矩陣分解問題

在下一篇文章中,我們將探討 SVD 在實際應用中的重要作用,包括圖像壓縮(利用 SVD 的低秩近似特性,大幅減少圖像存儲空間)以及極分解 (Polar decomposition)(從 SVD 推導極分解,理解線性變換的幾何意義)

相關連結

特徵向量與特徵值
矩陣對角化
矩陣中的軸元與秩
零空間 - Null space
向量的內積與外積
對稱矩陣
轉置矩陣
正交矩陣
正定矩陣與半正定矩陣 (1) - 定義與性質
正定矩陣與半正定矩陣 (3) - Cholesky 分解

參考資料

陳晏笙老師開放課程:單元 15.奇異值分解-線性代數的大一統理論
線代啟示錄 - 奇異值分解 (SVD)
線代啟示錄 - 矩陣分解
Wikipedia - 奇異值分解
Wikipedia - 子集