以下图片截自李宏毅线性代数课程
文章目录
1. 向量内积
- 这幅图确实对辅助记忆那个公式很有帮助
Given two matrices A and B , the ( i , j ) -entry of A B is the inner product of row i of A and column j of B \begin{align*} \text{Given two matrices } A \text{ and } B, \text{the } (i,j)\text{-entry of } AB \text{ is the inner product of row } i \text{ of } A \text{ and column } j \text{ of } B \end{align*} Given two matrices A and B,the (i,j)-entry of AB is the inner product of row i of A and column j of B
A B = [ a 11 a 12 ⋯ a 1 n a 21 a 22 ⋯ a 2 n ⋮ ⋮ ⋱ ⋮ a m 1 a m 2 ⋯ a m n ] [ b 11 b 12 ⋯ b 1 p b 21 b 22 ⋯ b 2 p ⋮ ⋮ ⋱ ⋮ b n 1 b n 2 ⋯ b n p ] = [ ∑ k = 1 n a 1 k b k 1 ∑ k = 1 n a 1 k b k 2 ⋯ ∑ k = 1 n a 1 k b k p ∑ k = 1 n a 2 k b k 1 ∑ k = 1 n a 2 k b k 2 ⋯ ∑ k = 1 n a 2 k b k p ⋮ ⋮ ⋱ ⋮ ∑ k = 1 n a m k b k 1 ∑ k = 1 n a m k b k 2 ⋯ ∑ k = 1 n a m k b k p ] \begin{align*} AB = \begin{bmatrix} a_{11} & a_{12} & \cdots & a_{1n} \\ a_{21} & a_{22} & \cdots & a_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{m1} & a_{m2} & \cdots & a_{mn} \end{bmatrix} \begin{bmatrix} b_{11} & b_{12} & \cdots & b_{1p} \\ b_{21} & b_{22} & \cdots & b_{2p} \\ \vdots & \vdots & \ddots & \vdots \\ b_{n1} & b_{n2} & \cdots & b_{np} \end{bmatrix} \\ = \begin{bmatrix} \sum_{k=1}^{n} a_{1k}b_{k1} & \sum_{k=1}^{n} a_{1k}b_{k2} & \cdots & \sum_{k=1}^{n} a_{1k}b_{kp} \\ \sum_{k=1}^{n} a_{2k}b_{k1} & \sum_{k=1}^{n} a_{2k}b_{k2} & \cdots & \sum_{k=1}^{n} a_{2k}b_{kp} \\ \vdots & \vdots & \ddots & \vdots \\ \sum_{k=1}^{n} a_{mk}b_{k1} & \sum_{k=1}^{n} a_{mk}b_{k2} & \cdots & \sum_{k=1}^{n} a_{mk}b_{kp} \end{bmatrix} \end{align*} AB= a11a21⋮am1a12a22⋮am2⋯⋯⋱⋯a1na2n⋮amn b11b21⋮bn1b12b22⋮bn2⋯⋯⋱⋯b1pb2p⋮bnp = ∑k=1na1kbk1∑k=1na2kbk1⋮∑k=1namkbk1∑k=1na1kbk2∑k=1na2kbk2⋮∑k=1namkbk2⋯⋯⋱⋯∑k=1na1kbkp∑k=1na2kbkp⋮∑k=1namkbkp
2.向量的线性组合(linear combination)视角
① AB是A的列向量的线性组合
举个例子
假设我们有两个矩阵 ( A ) 和 ( B ),它们的乘积为矩阵 ( C ):
A = [ 1 2 3 4 ] , B = [ 5 6 7 8 ] A = \begin{bmatrix} 1 & 2 \\ 3 & 4 \end{bmatrix}, \quad B = \begin{bmatrix} 5 & 6 \\ 7 & 8 \end{bmatrix} A=[1324],B=[5768]
矩阵A的列是 [ 1 3 ] \begin{bmatrix} 1 \\ 3 \end{bmatrix} [13] 和 [ 2 4 ] \begin{bmatrix} 2 \\ 4 \end{bmatrix} [24],矩阵B的列是 [ 5 7 ] \begin{bmatrix} 5 \\ 7 \end{bmatrix} [57]和 [ 6 8 ] \begin{bmatrix} 6 \\ 8 \end{bmatrix} [68]。
矩阵乘法的结果C的每一列是矩阵A的列的线性组合,其中组合的系数由矩阵B 的相应列提供。计算乘积矩阵C如下:
A = [ 1 2 3 4 ] , B = [ 5 6 7 8 ] C = A B = [ 5 ⋅ [ 1 3 ] + 7 ⋅ [ 2 4 ] 6 ⋅ [ 1 3 ] + 8 ⋅ [ 2 4 ] ] = [ 19 22 43 50 ] \begin{align*} & A = \begin{bmatrix} 1 & 2 \\ 3 & 4 \end{bmatrix}, \quad B = \begin{bmatrix} 5 & 6 \\ 7 & 8 \end{bmatrix} \\ & C = AB = \begin{bmatrix} 5 \cdot \begin{bmatrix} 1 \\ 3 \end{bmatrix} + 7 \cdot \begin{bmatrix} 2 \\ 4 \end{bmatrix} & 6 \cdot \begin{bmatrix} 1 \\ 3 \end{bmatrix} + 8 \cdot \begin{bmatrix} 2 \\ 4 \end{bmatrix} \end{bmatrix} \\ & \quad = \begin{bmatrix} 19 & 22 \\ 43 & 50 \end{bmatrix} \end{align*} A=[1324],B=[5768]C=AB=[5⋅[13]+7⋅[24]6⋅[13]+8⋅[24]]=[19432250]
这样就能比较明显地看出图中那种形式了
再来一个例子
A = [ 1 2 3 4 5 6 ] , B = [ 7 8 9 10 11 12 ] C = A B = [ 7 ⋅ [ 1 4 ] + 9 ⋅ [ 2 5 ] + 11 ⋅ [ 3 6 ] 8 ⋅ [ 1 4 ] + 10 ⋅ [ 2 5 ] + 12 ⋅ [ 3 6 ] ] = [ 58 64 139 154 ] \begin{align*} & A = \begin{bmatrix} 1 & 2 & 3\\ 4 & 5 & 6 \end{bmatrix}, \quad B = \begin{bmatrix} 7 & 8\\ 9 & 10\\ 11 & 12 \end{bmatrix} &\\ & C = AB = \begin{bmatrix} 7 \cdot \begin{bmatrix} 1 \\ 4 \end{bmatrix} + 9 \cdot \begin{bmatrix} 2 \\ 5 \end{bmatrix} + 11 \cdot \begin{bmatrix} 3 \\ 6 \end{bmatrix} & 8 \cdot \begin{bmatrix} 1 \\ 4 \end{bmatrix} + 10 \cdot \begin{bmatrix} 2 \\ 5 \end{bmatrix} + 12 \cdot \begin{bmatrix} 3 \\ 6 \end{bmatrix} \end{bmatrix} &\\ & \quad = \begin{bmatrix} 58 & 64\\ 139 & 154 \end{bmatrix} & \end{align*} A=[142536],B= 791181012 C=AB=[7⋅[14]+9⋅[25]+11⋅[36]8⋅[14]+10⋅[25]+12⋅[36]]=[5813964154]
② AB是B的行向量的线性组合
这种视角下上面给的两个例子也可以写成如下形式:
A
=
[
1
2
3
4
]
,
B
=
[
5
6
7
8
]
C
=
A
B
=
[
1
⋅
[
5
6
]
+
2
⋅
[
7
8
]
3
⋅
[
5
6
]
+
4
⋅
[
7
8
]
]
A
=
[
1
2
3
4
5
6
]
,
B
=
[
7
8
9
10
11
12
]
C
=
A
B
=
[
1
⋅
[
7
8
]
+
2
⋅
[
9
10
]
+
3
⋅
[
11
12
]
4
⋅
[
7
8
]
+
5
⋅
[
9
10
]
+
6
⋅
[
11
12
]
]
\begin{align*} & A = \begin{bmatrix} 1 & 2 \\ 3 & 4 \end{bmatrix}, \quad B = \begin{bmatrix} 5 & 6 \\ 7 & 8 \end{bmatrix} &\\ & C = AB = \begin{bmatrix} 1\cdot\begin{bmatrix} 5 & 6 \end{bmatrix} + 2\cdot\begin{bmatrix} 7 & 8 \end{bmatrix} \\ 3\cdot\begin{bmatrix} 5 & 6 \end{bmatrix} + 4\cdot\begin{bmatrix} 7 & 8 \end{bmatrix} \end{bmatrix} & \\ & A = \begin{bmatrix} 1 & 2 & 3\\ 4 & 5 & 6 \end{bmatrix}, \quad B = \begin{bmatrix} 7 & 8\\ 9 & 10\\ 11 & 12 \end{bmatrix} &\\ & C = AB = \begin{bmatrix} 1\cdot\begin{bmatrix} 7 & 8 \end{bmatrix} + 2\cdot\begin{bmatrix} 9 & 10 \end{bmatrix} + 3\cdot\begin{bmatrix} 11 & 12 \end{bmatrix} \\ 4\cdot\begin{bmatrix} 7 & 8 \end{bmatrix} + 5\cdot\begin{bmatrix} 9 & 10 \end{bmatrix} + 6\cdot\begin{bmatrix} 11 & 12 \end{bmatrix} \end{bmatrix} & \end{align*}
A=[1324],B=[5768]C=AB=[1⋅[56]+2⋅[78]3⋅[56]+4⋅[78]]A=[142536],B=
791181012
C=AB=[1⋅[78]+2⋅[910]+3⋅[1112]4⋅[78]+5⋅[910]+6⋅[1112]]
3. multiple input
这里,矩阵A 被看作是一个操作或函数,它作用于矩阵B 的每一列 b 1 , b 2 , … , b p b_1, b_2, \ldots, b_p b1,b2,…,bp。结果是矩阵 C的每一列 c 1 , c 2 , … , c p c_1, c_2, \ldots, c_p c1,c2,…,cp,其中每一列 c i c_i ci是矩阵A作用在B的列 b i b_i bi上的结果。
在这个视角中,可以将矩阵乘法看作是对一组输入向量的批处理操作,矩阵A将每一个输入向量 b i b_i bi转换为输出向量 c i c_i ci。这种理解方式对于数据处理尤其有用,例如,在机器学习中,矩阵A可以代表一层网络的权重,矩阵B的列可以代表不同的输入数据,矩阵C的列则是对应的输出。
A = [ a 11 ⋯ a 1 n ⋮ ⋱ ⋮ a m 1 ⋯ a m n ] , B = [ b 11 ⋯ b 1 p ⋮ ⋱ ⋮ b n 1 ⋯ b n p ] C = A B = [ A [ b 11 ⋮ b n 1 ] ⋯ A [ b 1 p ⋮ b n p ] ] % 假设 A 是一个 m x n 矩阵, B 是一个 n x p 矩阵 A = \begin{bmatrix} a_{11} & \cdots & a_{1n} \\ \vdots & \ddots & \vdots \\ a_{m1} & \cdots & a_{mn} \end{bmatrix}, \quad B = \begin{bmatrix} b_{11} & \cdots & b_{1p} \\ \vdots & \ddots & \vdots \\ b_{n1} & \cdots & b_{np} \end{bmatrix}\\ % C 的列是 A 乘以 B 的每一列 C = AB = \begin{bmatrix} A\begin{bmatrix} b_{11} \\ \vdots \\ b_{n1} \end{bmatrix} & \cdots & A\begin{bmatrix} b_{1p} \\ \vdots \\ b_{np} \end{bmatrix} \end{bmatrix} A= a11⋮am1⋯⋱⋯a1n⋮amn ,B= b11⋮bn1⋯⋱⋯b1p⋮bnp C=AB= A b11⋮bn1 ⋯A b1p⋮bnp
我们将B的每一列 b i b_i bi 视为一个独立的输入向量,矩阵 A 作用在每一个 b i b_i bi 上,结果 A b i Ab_i Abi 形成了C的列。这种表示清晰地展示了矩阵乘法中多个输入向量被同一个操作A转换的过程(A可以看成一个system)
4. composition的视角
将两个矩阵 ( A ) 和 ( B ) 的乘法视为两个函数或变换的序列操作。首先,向量 ( x ) 通过矩阵 ( B ) 转换成新的向量 ( v ),然后向量 ( v ) 再通过矩阵 ( A ) 转换成最终的向量 ( y )。这个过程可以表述为:
[ v = B x ] [ y = A v ] [v = Bx ]\\ [ y = Av] [v=Bx][y=Av]
这两个操作的组合可以用一个矩阵乘法来表示:
[ y = A ( B x ) = ( A B ) x ] [ y = A(Bx) = (AB)x ] [y=A(Bx)=(AB)x]
因此,矩阵乘积 ( AB ) 代表了先应用 ( B ) 然后应用 ( A ) 的复合变换。在这种视角下,如果你有多个变换或操作,它们可以被组合成一个单一的操作,这在多步骤的过程中非常有用,比如在解决多层次的线性方程组,或者在计算机图形学中的连续变换。
A = [ … … … … … … ] , B = [ … … … … … … ] x = [ … … ] v = B x y = A v y = A ( B x ) = ( A B ) x C = A B = [ … … … … … … ] \begin{align*} & A = \begin{bmatrix} \ldots & \ldots & \ldots \\ \ldots & \ldots & \ldots \\ \end{bmatrix}, \quad B = \begin{bmatrix} \ldots & \ldots & \ldots \\ \ldots & \ldots & \ldots \\ \end{bmatrix} & \\ & x = \begin{bmatrix} \ldots \\ \ldots \\ \end{bmatrix} & \\ & v = Bx & \\ & y = Av & \\ & y = A(Bx) = (AB)x & \\ & C = AB = \begin{bmatrix} \ldots & \ldots & \ldots \\ \ldots & \ldots & \ldots \\ \end{bmatrix} & \end{align*} A=[………………],B=[………………]x=[……]v=Bxy=Avy=A(Bx)=(AB)xC=AB=[………………]
5.矩阵和的视角 summation of matrices
这幅图展示了矩阵乘法可以被视作是矩阵分解的和。在这种表示中,我们将矩阵 A 的列向量
a
1
,
a
2
,
…
,
a
n
a_1, a_2, \ldots, a_n
a1,a2,…,an 和矩阵 B 的行向量
b
1
T
,
b
2
T
,
…
,
b
n
T
b_1^T, b_2^T, \ldots, b_n^T
b1T,b2T,…,bnT的外积看作是构成乘积矩阵 AB 的块。
具体来说,如果 A 是一个 m × n m \times n m×n 矩阵,B 是一个 ( n \times p ) 矩阵,那么A 的第 i i i列和 B 的第 i i i 行的转置 b i T b_i^T biT的外积将产生一个 m × p m \times p m×p的矩阵,这个矩阵的每个元素都是 a i a_i ai 的对应元素与 b i T b_i^T biT的对应元素的乘积。
我们将A的每一列与 B 的每一行的转置相乘,得到 n 个这样的 m × p m \times p m×p 矩阵,然后将这些矩阵相加,最终得到 AB 。这个求和过程可以表示为:
A B = a 1 b 1 T + a 2 b 2 T + … + a n b n T AB = a_1b_1^T + a_2b_2^T + \ldots + a_nb_n^T AB=a1b1T+a2b2T+…+anbnT
这里的 a i b i T a_ib_i^T aibiT是一个秩为(至多是)1的矩阵,因为它是从两个向量的外积产生的,这两个向量分别是A 的列和 B 的行。所有这些秩为1的矩阵的和就给出了最终的乘积矩阵 ( AB )。这个视角不仅在数学上很有用,而且在理解算法和进行计算优化时也很有用,特别是在处理大型矩阵时,可以将问题分解为更小、更易于管理的部分。
还是举个例子
A = [ 1 2 3 4 5 6 ] , B = [ 7 8 9 10 11 12 ] A = \begin{bmatrix} 1 & 2 & 3\\ 4 & 5 & 6 \end{bmatrix}, \quad B = \begin{bmatrix} 7 & 8\\ 9 & 10\\ 11 & 12 \end{bmatrix} A=[142536],B= 791181012
首先,我们找出矩阵A的列向量和矩阵B的行向量:
a 1 = [ 1 4 ] , a 2 = [ 2 5 ] , a 3 = [ 3 6 ] b 1 T = [ 7 9 11 ] , b 2 T = [ 8 10 12 ] a_1 = \begin{bmatrix} 1 \\ 4 \end{bmatrix}, \quad a_2 = \begin{bmatrix} 2 \\ 5 \end{bmatrix}, \quad a_3 = \begin{bmatrix} 3 \\ 6 \end{bmatrix} \\ b_1^T = \begin{bmatrix} 7 & 9 & 11 \end{bmatrix}, \quad b_2^T = \begin{bmatrix} 8 & 10 & 12 \end{bmatrix} a1=[14],a2=[25],a3=[36]b1T=[7911],b2T=[81012]
然后,我们计算每对 a i a_i ai和 b i T b_i^T biT的外积:
a 1 b 1 T = [ 1 4 ] [ 7 8 ] = [ 1 ⋅ 7 1 ⋅ 8 4 ⋅ 7 4 ⋅ 8 ] = [ 7 8 28 32 ] a_1b_1^T = \begin{bmatrix} 1 \\ 4 \end{bmatrix}\begin{bmatrix} 7 & 8 \end{bmatrix} = \begin{bmatrix} 1 \cdot 7 & 1 \cdot 8 \\ 4 \cdot 7 & 4 \cdot 8 \end{bmatrix} = \begin{bmatrix} 7 & 8 \\ 28 & 32 \end{bmatrix} a1b1T=[14][78]=[1⋅74⋅71⋅84⋅8]=[728832]
a 2 b 2 T = [ 2 5 ] [ 9 10 ] = [ 2 ⋅ 9 2 ⋅ 10 5 ⋅ 9 5 ⋅ 10 ] = [ 18 20 45 50 ] a_2b_2^T = \begin{bmatrix} 2 \\ 5 \end{bmatrix}\begin{bmatrix} 9 & 10 \end{bmatrix} = \begin{bmatrix} 2 \cdot 9 & 2 \cdot 10 \\ 5 \cdot 9 & 5 \cdot 10 \end{bmatrix} = \begin{bmatrix} 18 & 20 \\ 45 & 50 \end{bmatrix} a2b2T=[25][910]=[2⋅95⋅92⋅105⋅10]=[18452050]
a 3 b 3 T = [ 3 6 ] [ 11 12 ] = [ 3 ⋅ 11 3 ⋅ 12 6 ⋅ 11 6 ⋅ 12 ] = [ 33 36 66 72 ] a_3b_3^T = \begin{bmatrix} 3 \\ 6 \end{bmatrix}\begin{bmatrix} 11 & 12 \end{bmatrix} = \begin{bmatrix} 3 \cdot 11 & 3 \cdot 12 \\ 6 \cdot 11 & 6 \cdot 12 \end{bmatrix} = \begin{bmatrix} 33 & 36 \\ 66 & 72 \end{bmatrix} a3b3T=[36][1112]=[3⋅116⋅113⋅126⋅12]=[33663672]
最后,我们将这些外积相加,得到C
C = a 1 b 1 T + a 2 b 2 T + a 3 b 3 T = [ 7 8 28 32 ] + [ 18 20 45 50 ] + [ 33 36 66 72 ] = [ 7 + 18 + 33 8 + 20 + 36 28 + 45 + 66 32 + 50 + 72 ] = [ 58 64 139 154 ] \begin{align*} C &= a_1b_1^T + a_2b_2^T + a_3b_3^T \\ &= \begin{bmatrix} 7 & 8 \\ 28 & 32 \end{bmatrix} + \begin{bmatrix} 18 & 20 \\ 45 & 50 \end{bmatrix} + \begin{bmatrix} 33 & 36 \\ 66 & 72 \end{bmatrix} \\ &= \begin{bmatrix} 7+18+33 & 8+20+36 \\ 28+45+66 & 32+50+72 \end{bmatrix} \\ &= \begin{bmatrix} 58 & 64 \\ 139 & 154 \end{bmatrix} \end{align*} C=a1b1T+a2b2T+a3b3T=[728832]+[18452050]+[33663672]=[7+18+3328+45+668+20+3632+50+72]=[5813964154]