# 李宏毅_Linear Algebra Lecture 14: Matrix Multiplication ###### tags: `Hung-yi Lee` `NTU` `Linear Algebra Lecture` [課程撥放清單](https://www.youtube.com/playlist?list=PLJV_el3uVTsNmr39gwbyV-0KjULUsN7fW) ## Linear Algebra Lecture 14: Matrix Multiplication [課程連結](https://www.youtube.com/watch?v=yO8lDzf4jMs&list=PLJV_el3uVTsNmr39gwbyV-0KjULUsN7fW&index=14) 課程主要說明矩陣的相乘 ### Matrix Multiplication ![](https://i.imgur.com/aO1O4bg.png) 高中所學的矩陣相乘概念,假設有兩個Matrix-$A, B$,相乘得到新的Matrix-$C$,其中$A$為mxn,而$B$為nxp,相乘之後得到的$C$為mxp。 $C_{ij}$的值,就是將$A$第$i$個row與$B$第$j$個column取出做inner prodoction,也就是將兩個元素兩兩相乘之後加總。 ### Matrix Multiplication ![](https://i.imgur.com/W83fXbt.png) 上面是一個矩陣計算的範例。 ### Matrix Multiplication ![](https://i.imgur.com/WNDVFZa.png) 不過相信畢業之後很多人都忘了高中職所教的矩陣相乘的概念,因此實務上可以如上圖所示的作法。 $AB$相乘,那就將$A$放置$B$放上面,$A$的row與$B$的column延伸出去所交集的點就以該row與該column做inner product就可以得到該位置的值。 ### Matrix Multiplication - 4 ways ![](https://i.imgur.com/o33rO1g.png) 上面是一個矩陣計算的範例。 ### Matrix Multiplication ![](https://i.imgur.com/SUDvAV8.png) 我們可以從Linear Combination的觀點來看待矩陣相乘這件事,即$AB=A\left[b_1 \space b_2 \space ... \space b_p \right]=\left[Ab_1 \space Ab_2 \space ... \space Ab_p \right]$ Matrix與Vector相乘就是將Matrix內的column做linear combination。 因此,矩陣相乘之後的第一個column,就是$A$這個matrix的所有column做linear combination,這個coefficient就是$B$第一個column。相乘之後的第二個column依然是$A$的column做linear combination,只是coefficient是$B$的第二個column。 因此,矩陣相乘就是用不同的coefficient($B$)對同一組vector set($A$)做linear combination。 ### Matrix Multiplication - 4 ways ![](https://i.imgur.com/Oxq68d6.png) 這邊是一個以linear combination計算的範例。 ### Matrix Multiplication - Meaning ![](https://i.imgur.com/9bttfvK.png) $C=AB$,這可以看成一個system-$A$,然後輸入$B$的column-$b_1$就可以得到$C$的$c_1$,反覆的計算,最終得到$c_p=A b_p$,然後將$c_1 \sim c_p$結合起來,就是$C$也就是$AB$。 ### Matrix Multiplication - Meaning ![](https://i.imgur.com/RmsB3Ld.png) 另一種說法,相乘可以視為是兩個線性系統的Composition。 所謂的Composition,假設有兩個function,$f, g$,以這兩個function組成一個新的function,即$g(f(.))$,這就是將兩個function做composition,即$g \circ f$,input先通過$f$再通過$g$。 ### Matrix Multiplication - Meaning ![](https://i.imgur.com/nWgLsCN.png) 將相同的概念套到目前所提到的$C=AB$,也將是將$AB$這兩個system給composition起來得到一個新的function,其coefficient就是$C$。 舉例來說,假設$A$為mxn,$B$為nxp,也就是輸入一個$R^p$的vector經過$B$會得到一個$R^n$的vector,再通過$A$產生一個$R^m$的vector。 但如果是將兩個system給composition起來的話,就直接是輸入一個$R^p$,經過$C$得到$R^m$ ### Matrix Multiplication - Meaning ![](https://i.imgur.com/rsbxHtT.png) ![](https://i.imgur.com/RgTdvE5.png) 要證明這件事不難。之前課程提過,在不知道linear system參數的情況下,可以利用standard vector,來得到該Matrix columns。 我們要證明的就是,將standard vector分別丟到原始$AB$與composition之後的$C$是否相同,即input-$e^1$經過$B$得到的$b_1$再經過$A$得到的$AB_1$會等於$c_1$。相同的道理,$e^2...e^p$的輸入得到的也是一樣。 ### Matrix Multiplication - Meaning ![](https://i.imgur.com/x8Ebm6d.png) 將結果列出來,就可以得到$C=\left[Ab_1 \space Ab_2 \space ... \space Ab_p \right]$,將$A$提出來,將$b_1 \space b_2 \space ... \space b_p$集合起來,就可以得到$C=AB$。 我們現在知道,原本兩個linear system,其coefficient為$A, B$,將兩個linear system compose起來得到一個新的system,其coefficient-$C$就是兩個linear system的兩個matrix相乘。 ### Matrix Multiplication ![](https://i.imgur.com/JvjdcaW.png) 剛才提的是將Matrix Multiplication視為對column做linear combination,這邊說明的是將它視為對row做linear combination。 $AB$相乘,將$A$的每一個row做為coefficient,去乘上$B$的每一個row(固定),也就是相乘的第一個row就是$A$的第一個row去乘上$B$的每一個row。 ### Matrix Multiplication - 4way ![](https://i.imgur.com/8uMNwXV.png) 從範例來看,一個3x2的矩陣乘上2x2的矩陣。 第一個row就是取左邊矩陣第一個row-$\left[1 \space 2 \right]$,乘上右邊的矩陣,第一個元素就乘上右邊矩陣的第一個row,第二個元素就乘上右邊矩陣的第二個row,以此類推。 ### Matrix Multiplication ![](https://i.imgur.com/QbMwBsj.png) 最後一個看待Matrix Multiplication的觀點,就是將它視為一堆matrices的summation。 假設有兩個matrix-$A, B$,$A$的column為$a$,$B$的row為$b$,接下來將$A$的第一個column-$a_1$乘上$B$的第一個row-$b_1^T$,以此類推。 $a_1b_1^T$可以將它視為是兩個矩陣的相乘,其中$a_1$的維度為nx1,而$b_1^T$則是1xp,兩者相乘就得到一個nxp的矩陣,你可以得到n個nxp的矩陣,最後再將它們相加,這就是將矩陣相乘視為一堆矩陣相加的概念。 ### Matrix Multiplication ![](https://i.imgur.com/RItgPXb.png) 上面是一個概念上的範例,可以注意的是,以這種方法計算而得的多個矩陣,它們的rank也會是相同的,因此也可以視為是一堆rank=1的矩陣相加。 這種概念可以推廣到另一個概念,也就是Block Multiplication。 概念上就是,將左邊的matrix以column為單位來看待,右邊的matrix則是row為單位來看待,因此左邊的matrix可以視為一個1x2的矩陣,而右邊的matrix則可以視為一個2x1的矩陣,最終會得到一個1x1的矩陣。 ### Augmentation and Partition ![](https://i.imgur.com/vEGZvgA.png) 之前我們提過矩陣的Augmentation的概念,就是將兩個matrix併在一起得到一個新的matrix。 而矩陣的Partition就是可以用各種的方法來分割它。 ### Block Multiplication ![](https://i.imgur.com/BrKHAnO.png) 如果要做矩陣的相乘,就可以將兩個矩陣分割,然後將每一個分割後的block視為一個單位,再去分割後的單位做相乘。 上面範例,將矩陣分為四個block,這樣就可以將矩陣視為有四個元素的矩陣,只是每個元素裡面就都還是一個矩陣,這樣子就可以將它們視為scalar的計算,唯一要注意的是,雖然將它們視為scalar的計算,但本質上還是矩陣的相乘,因此不能調整順序。 ### Block Multiplication ![](https://i.imgur.com/oM3oTby.png) 上面給出一個範例,不同的顏色代表不同的block之間的計算。分割的時候要注意到維度上的問題,避免造成無法計算。 ### Block Multiplication ![](https://i.imgur.com/lQkmrh2.png) 上面給出一個範例。 ### Not Communicative ![](https://i.imgur.com/bzYfW5F.png) 這邊開始說明矩陣相乘的性質。 1. $AB \neq BA$ ### Not Communicative ![](https://i.imgur.com/zdc8jUg.png) 從維度的角度來看就可以直觀的瞭解兩者交換的結果並不會相同,mxn與nxp相乘為mxp,而nxp與mxn相乘則因為維度問題而無法相乘。 ### Properties ![](https://i.imgur.com/13QM4qp.png) * 假設A、B、C、P、Q皆為矩陣,其維度為kxm,C為mxn而P、Q為nxp,矩陣相乘有以下性質: 1. 對任何的scalar-s而言,其s(AC)=(sA)C=A(sC) 2. (A + B)C = AC + BC 3. C(P + Q) = CP + CQ 4. I~k~A = A = AI~m~ (I為Identity matrix) 5. 任何矩陣乘上zero matrix其結果為zero matrix * 如果有k個相同矩陣相乘,則可以寫為多項式,即A^k^ = AAAA.....A(k個A) * A^1^ = A * A^0^ = I~n~ ### Properties ![](https://i.imgur.com/I9RRg4B.png) * 假設A為kxm,且C為mxn 1. $(AC)^T = C^TA^T$,兩者相乘的維度為kxn,如果都先各自transpose之後為nxm與mxk,相乘之後即為nxk 2. ### Special Matrix ![](https://i.imgur.com/fxnEcCC.png) 1. Diagonal Matrix: 即對角線有值,非對角線的元素皆為0 2. Symmetric Matrix: 對稱矩陣,即$A^T = A$,而$AA^T$與$A^TA$都會是方形,且依然對稱 ### Practical Issue ![](https://i.imgur.com/pWZq5Hm.png) 這邊說明的是,位置的差異會造成計算量的不同。 假設A、B、C、P、Q皆為矩陣,其維度為kxm,C為mxn而P、Q為nxp,其中A(CP) = (AC)P,雖然結果相同,但計算量是不同的。