引言
前面我們在矩陣分解 (加法篇)裡面分析的加法下的矩陣分解。 這裡我們來看看乘法下矩陣分解的要點。
對角和三角矩陣
首先, 我們總結下, 在矩陣加法分解中出現了三種矩陣: 上三角矩陣, 下三角矩陣 和 對角陣。 這三種矩陣在乘法的分解中也會遇到。
那麼是不是乘法矩陣中有這三種矩陣就夠了呢? 不是的!
正交矩陣
還有一種經典的矩陣, 叫正交矩陣, 什麼叫正交矩陣呢?其實某種意義上, 鄭正交矩陣也是通過矩陣乘法來定義的。 如果一個矩陣和它的轉置矩陣的乘積為單位矩陣, 那麼這個矩陣就是正交矩陣。
有了正交矩陣之後, 很容易得到一個結論就是正交矩陣的轉置就是它的逆矩陣。
那麼很容易就知道, 單位矩陣本身就是正交矩陣。
為什麼叫正交矩陣呢?因為如果我們把這個矩陣寫成向量的形式, 那麼這些向量除了自己和自己的點積為1, 其他任意兩個不同向量之間的點積全部為0. 而向量點積為0的情況叫正交。 正交矩陣是因此得名的。
為什麼要講正交矩陣呢?還記得在矩陣的加法分解裡面, 有求逆矩陣的情況麼? 試想一下,如果不要求逆矩陣了, 而是求解轉置矩陣的話, 那是不是異常方便? 對的, 這就是正交矩陣的強大的優勢。
那麼, 常見的LU, LDL, QR,SVD分解到底是什麼? 我們已經知道, 首先他們全是乘法分解。
常見乘法分解
LU分解
LU分解, 故名思議就是, 把矩陣分成下三角矩陣(Lower)和上三角矩陣(Upper)的一種分解。 所以LU分解只用到了三角矩陣。
當然更進一步, 可以要求是一個稍微特殊點的三角矩陣, 就是下三角矩陣L對角線全1, 或者上三角矩陣U對角線元素全部為1.
下面有個具體的例子, 大家可以試試:
LDU分解
在LU的基礎上, 如果我們再進一步,引入對角矩陣(Diagonal)D, 那麼LU分解就變成了LDU分解。 是不是很直觀?
而從LU分解到LDU分解是很容易做到的,只要把對角線的元素提取出來作為對角矩陣, 然後其他除以對角線元素進行等比例縮放。
這也很容易去解釋, 為什麼LU分解可以寫成對角線全1的三角矩陣, 因為可以提取出一個對角矩陣, 然後乘到左邊下三角矩陣或者右邊上三角矩陣去。 因此, 從本質上來說LDU分解和LU分解沒有差別。 所以常常把LDU分解忽略, 直接用LU分解來說明。
LDL分解
既然有了LDU分解, 那麼LDL分解的字面上的意思就比較明確了, 就是下三角形L乘以對角矩陣, 再乘以下三角矩陣。 對麼? 說對, 也對。 說不對也不對。
我們來看一下, 其實最右邊不是下三角矩陣,依然是上三角矩陣。 但是這個上三角矩陣, 是最左邊的下三角矩陣的轉置, 所以依然是最左邊的下三角矩陣。 所以右邊這個L的含義是左邊的L的轉置。
既然一個矩陣A能夠這麼分解, 那麼我們知道A的轉置和A是一樣的, 因為LDL的轉置剛好是它本身。
舉個LDL的例子:
所以本質上來看, 對稱矩陣的LDL分解就是LDU分解的一種特例。 那麼前面我們提到, LDU分解是LU分解的另外一種表達。 那麼, 對稱矩陣也可以進行LL分解的。
對應到上面的例子:
LDL 和LL分解合起來稱為喬裡斯基分解Cholesky decomposition。 它是由法國數學家Cholesky發明的。
那麼哪裡去找到對稱矩陣呢?其實很多時候, 是用來對(A^T)A進行分解的。
我們知道協方差矩陣就是經常寫成(A^T)A這種形式,因此LDL和LL分解在相關性分析裡面經常使用。
另外一個Cholesky分解的特點就是, 因為它的元素的對稱性限制, 所以計算起來更快!
QR分解
前面的分解都沒有用到正交矩陣, 而QR分解和SVD分解就要利用到正交矩陣。 Q是一個正交矩陣, 而R是一個上三角矩陣。
前面我們提到單位矩陣也是正交矩陣, 所以正交矩陣可以看成是坐標系的轉換。 所以有時候, QR分解也可以表示成如下形式。
所以QR分解,是正交矩陣和三角矩陣的乘法分解。
SVD分解
SVD分解稱為Singular value decomposition奇異值分解, 它是正交矩陣和對角矩陣的乘法分解。
所以, 從形式上, SVD可以表示成如下:
乘法分解的形式小結
所以乘法分解就是把矩陣表示稱為三角陣, 對角陣, 和正交矩陣的。
其中:
1) LU, LL是分解為三角矩陣的乘法
2) LDU, LDL 是分解為三角矩陣、和對角矩陣的乘法
3) QR 是分解為正交矩陣和三角矩陣的乘法
4) SVD 是分解為正交矩陣 和 對角矩陣的乘法
如果把三角矩陣、對角矩陣 和 正交矩陣稱為因子矩陣, 為什麼要分解成這些因子矩陣呢?
因子矩陣的幾何含義
對角矩陣
乘以一個對角矩陣,好比對每個坐標軸進行縮放!
正數的乘法: 正數好比在原方向上的縮放, 大於1,表示伸長, 小於1,表示縮小。
負數的乘法:負數表示反反向。
零的乘法:零表示空間壓縮。
所以, 對角矩陣就是縮放,包括方向,和壓縮。
三角矩陣
和對角矩陣相比, 三角矩陣要多一些角上的元素, 那麼這些元素有什麼作用呢?
上三角矩陣: 上三角矩陣的作用好比進行右上的切變, 水平的斜拉。
下三角矩陣:同樣是切邊, 不過是往左下切邊, 垂直方向的下拉。
所以三角矩陣的作用就是切變。
正交矩陣
類似的, 我們可以看一下正交矩陣的作用, 我們找可以利用一個正交矩陣, 找到對應乘法後的點的變化。
我們可以看到正交矩陣, 並不改變物體的形狀, 但是進行了旋轉。
矩陣分解的幾何意義
綜上所述, 矩陣因子的作用就是要把縮放, 切邊, 和旋轉分解出來理解一個矩陣的作用。
在這種情況下, 矩陣乘法的分解就是連續進行幾次變化的綜合!
我們知道LU/LDU/LL/LDL分解和QR/SVD分解裡面, 都有三角陣部分。 那麼三角陣到底有什麼優勢呢?
三角陣進行方程求解的優勢
我們知道三角陣在進行高斯消元法的時候, 很容易進行化簡, 逐層迭代進行計算求解。
所以三角陣除了有明確的幾何含義,還有方程求解的極大便利性!這就是為什麼三角陣這麼受歡迎的原因!
LU分解的意義
LU分解使得矩陣AX=b的求解分成了LU兩部分。
而三角矩陣的好處是可以很容易進行連續代入求解! 這樣可以先進行下三角矩陣的求解:
然後再進行上三角矩陣的求解。
這樣能夠快速進行求解。 所以, LU分解把矩陣變成橫向的切邊和豎直方向的切變後, 能夠帶來計算上的極大的便利性。 同時這種分解, 存儲空間大小上幾乎沒有太多影響!
類似,我們可以理解LDU,LL, LDL的好處了。
QR分解的意義
從幾何上QR分解,就是先進行旋轉, 然後再進行切變的過程。
同時, 利用正交矩陣的旋轉性, 可以同樣很容易化解到三角矩陣乘法去求解。
這個過程中, 並不需要進行求逆運算, 只需要進行轉置運算和乘法運算。 然後就可以利用三角不等式逐層迭代求解的便利性。
SVD分解的意義
按照前面給出的幾何含義, SVD 分解可以看成先旋轉, 然後進行分別縮放, 然後再旋轉的過程。
類似的, 同樣計算上還帶來了極大的便利性!
矩陣分解的應用
除了計算上帶來的極大便利性, 分解因子的幾何意義還使得矩陣乘法分解有其他很多應用。
相關性分析
LL相關的分析很容易就被用到相關性分析上去。
特徵值和特徵向量求解
SVD分解還可以用來做特徵值和特徵向量的求解。
小結:
通過對分解因子的幾何含義的描述, 分析了LU, LDU, LL, LDL, QR, SVD分解帶來的計算便利性和幾何含義。 稍微拓展了下應用。
相關話題:
參考:
https://sites.google.com/site/igorcarron2/matrixfactorizations
http://fourier.eng.hmc.edu/e176/lectures/ch0/node8.html