矩陣分解 (乘法篇)

2021-02-24 AI2ML人工智慧to機器學習

引言

前面我們在矩陣分解 (加法篇)裡面分析的加法下的矩陣分解。 這裡我們來看看乘法下矩陣分解的要點。 

對角和三角矩陣

首先, 我們總結下, 在矩陣加法分解中出現了三種矩陣: 上三角矩陣, 下三角矩陣 和 對角陣。  這三種矩陣在乘法的分解中也會遇到。 

那麼是不是乘法矩陣中有這三種矩陣就夠了呢? 不是的!

正交矩陣

還有一種經典的矩陣, 叫正交矩陣, 什麼叫正交矩陣呢?其實某種意義上, 鄭正交矩陣也是通過矩陣乘法來定義的。 如果一個矩陣和它的轉置矩陣的乘積為單位矩陣, 那麼這個矩陣就是正交矩陣。 

有了正交矩陣之後, 很容易得到一個結論就是正交矩陣的轉置就是它的逆矩陣。 

那麼很容易就知道, 單位矩陣本身就是正交矩陣。 

為什麼叫正交矩陣呢?因為如果我們把這個矩陣寫成向量的形式, 那麼這些向量除了自己和自己的點積為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

相關焦點

  • No.3 矩陣乘法
    所以矩陣加法和減法我們要求兩個矩陣的維數是一摸一樣的,很簡單的推廣,沒啥好說的。下面主要聊聊矩陣乘法。「矩陣除法」(目前看來是錯誤稱呼)我們下次再聊。二、矩陣乘法            我前面舉過一個學生成績的例子。
  • Adreno GPU 矩陣乘法——第1講:OpenCL優化
    在要相乘的矩陣中,例如A和B,每個元素對結果矩陣C的不同分量貢獻多次。因此,為Adreno優化MM算法需要我們利用GPU內存子系統。關於GPU 上的矩陣乘法存在哪些困難?如果我們實現一個GPU加速庫(如BLAS)來做矩陣乘法,那麼輸入矩陣將在CPU虛擬內存空間,並且乘法結果也必須在CPU內存中可用。為了加速GPU上的矩陣乘法,矩陣必須首先被傳輸到GPU內存。傳統方法是將矩陣複製到GPU地址空間,讓GPU執行其計算,然後再將結果複製回CPU。
  • 矩陣乘法的通俗理解
    今天先分享一下矩陣乘法的理解。一、問題引出 - 一道小學生應用題計算題一:小明今天要做飯,消耗2斤肉,1斤蔬菜。肉每斤20元,蔬菜每斤5元,則一共需多少花費?             解法: 20 X 2+ 5 X 1 = 45計算題二:小明第二天有另一種做飯的方法,需要消耗1斤肉,4斤蔬菜,那麼這兩種方法的花費各是多少呢?
  • 拋棄複雜的運算來理解「矩陣乘法」和「行列式」
    這是《機器學習中的數學基礎》系列的第4篇。上一篇我們知道了,矩陣其實就是一個線性變換,矩陣的各列就是由原來的基向量變換而來。在此基礎上,假如我們把兩個矩陣放在一起,也就是說,讓兩個矩陣做乘法,它又有什麼含義呢?矩陣乘法我們還是先從矩陣和向量的乘法看起:矩陣乘以一個向量,得到一個新向量。如果我們把新向量再乘以一個矩陣呢?
  • blender python處理矩陣乘法變更符號
    如果對矩陣對象執行任何乘法,要注意一件事情,Python 的最新版本(當然還有包含Blender內置Python版本)為適當的矩陣乘法實現了新的表示方法。用blender腳本編寫器編寫任何矩陣乘法,乘法* 語法仍然有效,這個只能作為 2.8 中嘗試普通乘法,而不是 2.7 中的矩陣乘法。如果你用在矩陣乘法會報出有趣的錯誤,因為這並不一定會拋出一個錯誤,a * ba @ b想要支持 2.7 和 2.8 的相同矩陣乘法樣式?首先,這似乎是一個類似的挑戰,採用前面幾節中提到的欄位注釋。
  • 線性代數入門——矩陣乘法的定義及其意義
    上一節中我們介紹了矩陣的加法和數乘運算,本節我們來介紹矩陣與矩陣的乘法運算,矩陣乘法在線性代數中非常重要,而且具有一些「奇怪」的性質,例如不滿足交換律等,我們在後面幾節中還會對矩陣乘法的相關內容做深入介紹。
  • 線性代數的第一堂課──矩陣乘法的定義
    這段歷史顯示矩陣乘法──矩陣理論中最重要的一個代數運算──絕對不是如數學課本所述那般理所當然,矩陣乘法定義隱含深層的意義,否則為何眾多優秀的數學家竟然看不出矩陣理當如此相乘。今天我們事後諸葛,已然明了矩陣代數之所以遲至十九世紀中葉才誕生的最主要原因在於人們一直無法確定矩陣的本質與功用究竟為何。
  • 矩陣的乘法在量子計算領域是一種基本操作
    矩陣的乘法在量子計算領域是一種基本操作,正是因為算法本身的簡單,矩陣乘法和導數結合非常容易。至於物理意義就是解一個能量問題,矩陣的結構就是基本原子或者分子電子的排列組合,基於一個組合態的結果,討論算符不知是不是可以算矩陣的非退化算符,即矩陣乘法不是一個主算符,有的只是一個導出算符而已。
  • 十個利用矩陣乘法解決的經典題目
    這裡我們不介紹其它有關矩陣的知識,只介紹矩陣乘法和相關性質。不要以為數學中的矩陣也是黑色屏幕上不斷變化的綠色字符。在數學中,一個矩陣說穿了就是一個二維數組。一個n行m列的矩陣可以乘以一個m行p列的矩陣,得到的結果是一個n行p列的矩陣,其中的第i行第j列位置上的數等於前一個矩陣第i行上的m個數與後一個矩陣第j列上的m個數對應相乘後所有m個乘積的和。
  • 強大的矩陣奇異值分解(SVD)及其應用
    在上篇文章中便是基於特徵值分解的一種解釋。特徵值和奇異值在大部分人的印象中,往往是停留在純粹的數學計算中。而且線性代數或者矩陣論裡面,也很少講任何跟特徵值與奇異值有關的應用背景。奇異值分解是一個有著很明顯的物理意義的一種方法,它可以將一個比較複雜的矩陣用更小更簡單的幾個子矩陣的相乘來表示,這些小矩陣描述的是矩陣的重要的特性。
  • 教程| 從特徵分解到協方差矩陣:詳細剖析和實現PCA算法
    因為我們可以對矩陣中的值統一進行如加法或乘法等運算,所以矩陣是十分高效和有用的。如下所示,如果我們將向量 v 左乘矩陣 A,我們就會得到新的向量 b,也即可以表述說矩陣 A 對輸入向量 v 執行了一次線性變換,且線性變換結果為 b。因此矩陣運算 Av = b 就代表向量 v 通過一個變換(矩陣 A)得到向量 b。
  • cuda入門:如何進行矩陣乘法優化
    所以我們的第二個 CUDA 程序,要做一個確實有(某些)實用價值的程序,也就是進行矩陣乘法。而且,這次我們會使用浮點數。  雖然矩陣乘法有點老套,不過因為它相當簡單,而且也可以用來介紹一些有關 CUDA 的有趣性質。  矩陣乘法  為了單純起見,我們這裡以方形的矩陣為例子。
  • 專題七:矩陣分解
    專題七:矩陣分解矩陣分解分為兩類:和分解與積分解.和分解是將一個矩陣分解為一些矩陣的和.積分解是將一個矩陣分解為一些矩陣的乘積.矩陣分解通常是利用標準形理論.下面例子中矩陣的構造都是基於標準形.其他分解例(華東師範大學,2013)證明:對於實可逆矩陣
  • 奇異值分解和矩陣分解傻傻分不清楚?一文幫你理清兩者差異!
    在推薦系統的相關研究中,我們常常用到兩個相關概念:矩陣分解和奇異值分解。這兩個概念是同一種算法嗎?兩者到底有什麼差別?在本文中,作者梳理了兩種算法的概念、來源和內容,並進行了比較。通過對相關內容的梳理,作者提出,矩陣分解是推薦系統中最初使用的概念,奇異值分解是對該方法的進一步發展。在現在的討論中,一般將兩種方法統一成為奇異值分解。
  • 奇異值、奇異矩陣、SVD分解、正交矩陣
    然後,再看此方陣的行列式|A|是否等於0,若等於0,稱矩陣A為奇異矩陣;若不等於0,稱矩陣A為非奇異矩陣。 同時,由|A|≠0可知矩陣A可逆,這樣可以得出另外一個重要結論:可逆矩陣就是非奇異矩陣,非奇異矩陣也是可逆矩陣。如果A為奇異矩陣,則AX=0有非零解或無解。如果A為非奇異矩陣,則AX=0有且只有唯一零解。
  • 矩陣的特徵值分解的物理意義
    矩陣的特徵值分解目的就是提取出一個矩陣最重要的特徵。這其實是在平面上對一個軸進行的拉伸變換(如藍色的箭頭所示),在圖中,藍色的箭頭是一個最主要的變化方向(變化方向可能有不止一個),如果我們想要描述好一個變換,那我們就描述好這個變換主要的變化方向就好了。
  • 線性代數矩陣方程初等行變換AXB=C.
    #線性代數矩陣方程#湖南省農村方言若變種滅絕則難以挽回,就像三國志魯肅說的漢室不可復興一樣麻木不仁唉。#因式分解#我過度粑粑所言非虛,轉置矩陣乘法解題有通用格式,AXB=C初等行變換...  http://t.cn/A65AsfSX ​​​。。。。。#高等數學[超話]#。。。。。#HLWRC高數#別信數字帝國廣告。
  • 「3X3矩陣」在三維空間中的的幾何描述
    前面討論了二維空間中矩陣的乘法意義,是將二維向量經過線性變換,變成另一種二維向量。現在要將它推到三維空間:和二維空間一樣,三維空間布滿和坐標軸平行等距的網格i j k都是代表方向的單位向量,向量V就可以寫成現在將整個空間繞Y軸旋轉90度,則單位向量i就變成則單位向量j保持不變則單位向量k就變成了如果整個空間繞任意軸旋轉則 i j k值也隨之改變將變換後的單位向量寫到一個矩陣中,這就是線性變換的因子
  • 從此, 實對稱矩陣, 實反稱矩陣, 正交矩陣殊途同歸
    、正交矩陣、實反稱矩陣關於正交相似有很多相同的性質, 這說明它們存在著近進一步的聯繫, 而這種聯繫在酉空間中對於埃爾米特矩陣, 酉矩陣, 反埃爾米特矩陣也都成立, 這一類矩陣統稱為正規矩陣(滿足 AA^H=A^HA, 其中 A^H 為 A 的共軛轉置), 但這在考研當中算是超綱的知識點, 所以現在揚哥只列出關於實正規矩陣(滿足A'A=AA')的終極結論, 而不加以證明:
  • 【每周一庫】-sprs-用Rust實現的稀疏矩陣庫
    sprs是用純Rust實現的部分稀疏矩陣數據結構和線性代數算法 特性 結構 矩陣 三元組矩陣 稀疏向量 運算