機器學習:矩陣的秩和矩陣的四個子空間
最近又特意翻看了一下 MIT 的那本經典的《線性代數》,對矩陣的秩和矩陣的四個子空間有了更加深刻的理解。
給定一個矩陣 ,這個矩陣的行列向量可以構成四個子空間,分別是 column space,row space,null space 以及 left-null space,矩陣有行,列兩個維度,如果是列向量,那麼就是 維,如果看成是行向量,就是 維,矩陣的列向量 span 成矩陣的列空間,而矩陣的行向量 span 成行空間,這個直接從矩陣的行列向量就可以得到。
而矩陣的 null space 和 left-null space,就需要進一步的求解了,矩陣的 null space 就是所有使得線性方程組 成立的,所有向量 構成的空間,而 left-null space,是使得線性方程組 成立的所有向量 構成的空間。
在 MIT 的《線性代數》中,對矩陣 的秩,即 rank 有三個層面的解讀:
- 矩陣的秩為 ,表示線性方程組 中有 個 pivot,pivot 表示不可消去的變數,這是從數值的角度理解
- 矩陣的秩為 ,也表示矩陣 有 個線性無關的行向量或者列向量,這是從向量的角度來理解
- 矩陣的秩為 ,也表示矩陣的行空間或者列空間的“維度”為 ,這是最高一層的含義了,從空間的角度來理解。
可能前面的兩個定義還比較好理解,而第三個定義,空間的“維度”,可能一眼看上去不太好理解。我們知道,三維空間的維度是 3,四維空間的維度是 4, 維空間的維度是 ,這裡的維度是我們通常理解的物理定義上的維度,而在數學上,“維度” 還有更廣泛的定義,“維度” 線上性代數裡,更多的時候表示的是 span 該空間所需要的基向量的個數,而基向量,就是我們通常所說的線性無關的向量,矩陣的秩為 ,意味著矩陣的行,列空間裡最多隻有 個線性無關的向量,所以該空間的維度為 。
我們知道矩陣的列向量是 的向量,所以矩陣的列空間是 中的一個子空間,矩陣的行向量是 的向量,所以矩陣的行空間是 中的一個子空間,矩陣的行列空間的維度都是 ,也就是矩陣的秩,而矩陣的 null space 的維度是 ,矩陣的 left-null space 的維度是 。所以總結起來就是,如果 的秩為 ,那麼:
- 矩陣 的列空間 的維度為 ,是 中的一個子空間
- 矩陣 的行空間 的維度為 ,是 中的一個子空間
- 矩陣 的 null 空間 的維度為 ,是 中的一個子空間
- 矩陣 的 left-null 空間 的維度為 ,是 中的一個子空間
矩陣的行空間和矩陣的 null space 是互相垂直的,同理,矩陣的列空間和矩陣的 left-null space 也是互相垂直的。這個比較好理解,假設 有非零解,也就是矩陣的 null space 存在,很顯然, 中的每一行都和 相乘為 0,所以 中 的每一行都和 互相垂直,所以 的行空間與 的 null-space 是互相垂直的,同理也可以得到列空間與 left-null space 是互相垂直的。
下面來看看矩陣的行空間的維度為什麼和矩陣的 null-space 的維度 “互補”,假設矩陣 是一個 的矩陣如下:
的秩為 2,所以矩陣的行空間的“維度”是 2,矩陣的 null space 是 中的一個子空間,假設 null-sapce 的向量為 , 就是我們所說的 pivot,而 就是我們所說的自由變數,我們隨便取值,代入原方程都可以得到相應的解, 是由