如果矩阵 A 的形状是 m × n,矩阵 B 的形状是 n × p,那么两者相乘得到的矩阵 C 的形状是 m×p。
C = A B C = AB C=AB
具体地,该乘法操作定义为
C i , j = ∑ k A i , k B k , j C_{i,j}=\sum_{k}A_{i,k}B_{k,j} Ci,j=k∑Ai,kBk,j
可以理解为 A 中第 i 行与 B 中第 j 列的点积( x T y = y T x x^Ty = y^Tx xTy=yTx)
元素对应乘积(element-wise product) 或者叫 Hadamard 乘积(Hadamard product),记为 A ⊙ B A ⊙ B A⊙B。为 A 与 B 对应元素的乘积(A,B 矩阵大小一致)
C i , j = A i , j B i , j C_{i,j}=A_{i,j}B_{i,j} Ci,j=Ai,jBi,j
有以下线性方程组(A 为 m×n 矩阵):
A x = b Ax = b Ax=b
将 A 的每一列看作从原点(元素都是零的向量)出发的不同方向,确定有多少种方法可以到达向量 b,那么方程就有多少个解。向量 x 中的每个元素表示应该沿着对应方向走多远,即 x i x_i xi 表示需要沿着第 i 个方向走多远:
A x = ∑ i x i A : , i Ax = \sum_{i}x_iA_{:,i} Ax=i∑xiA:,i
A : , i A_{:,i} A:,i表示 A 的第 i 列
这种操作被称为 线性组合(linear combination)。一组向量的 生成子空间(span) 是原始向量线性组合之后所能抵达点的集合
确定 A x = b Ax = b Ax=b 是否有解相当于确定向量 b 是否在 A 列向量的生成子空间中。这个特殊的生成子空间被称为 A 的列空间或者 A 的值域(range)
为了使方程 A x = b Ax = b Ax=b 对于任意向量 b ∈ R m b ∈ R^m b∈Rm 都存在解,我们要求 A 的列空间构成整个 R m R^m Rm。如果 R m R^m Rm 中的某个点不在 A 的列空间中,那么该点对应的 b 会使得该方程没有解。矩阵 A 的列空间是整个 R m R^m Rm 的要求,意味着 A 至少有 m 列,即 n ≥ m。否则, A 列空间的维数会小于 m。例如,假设 A 是一个 3 × 2 的矩阵。目标 b 是 3 维的,但是 x 只有 2 维。所以无论如何修改 x 的值,也只能描绘出 R 3 R^3 R3 空间中的二维平面。当且仅当向量 b 在该二维平面中时,该方程有解。
如果一个矩阵的列空间涵盖整个 R m R^m Rm,那么该矩阵必须包含至少一组 m 个线性无关的向量,这是对于每一个向量 b 的取值都有解的充分必要条件
一个列向量线性相关的方阵被称为 奇异的( singular)
方阵 A 的 特征向量 是指与 A 相乘后相当于对该向量进行缩放的非零向量 v v v:
A v = λ v Av = λv Av=λv
标量 λ 被称为这个特征向量对应的 特征值。
如果 v v v 是 A 的特征向量,那么任何缩放后的 向量 s v sv sv(s∈R,s≠0) 也是 A 的特征向量, s v sv sv 和 v v v 有相同的特征值,因此,通常只考虑单位特征向量
假设矩阵 A 有 n 个线性无关的特征向量,对应特征值 [ λ 1 , . . . , λ n ] T [λ_1,...,λ_n]^T [λ1,...,λn]T 记为 λ。矩阵 V 的每一列都是一个特征向量, A 的特征分解可以记为(diag表示对角矩阵)
A = V d i a g ( λ ) V − 1 A = Vdiag(λ)V^{-1} A=Vdiag(λ)V−1
每个实对称矩阵都可以分解成实特征向量和实特征值
A = Q Λ Q ⊤ A = QΛQ⊤ A=QΛQ⊤
Q 是 A 的特征向量组成的正交矩阵,Λ 是对角矩阵。
所有特征值都是正数的矩阵被称为正定( positive definite);所有特征值都是非负数的矩阵被称为半正定( positive semidefinite)。同样地,所有特征值都是负数的矩阵被称为 负定( negative definite);所有特征值都是非正数的矩阵被称为 半负定( negative semidefinite)。 半正定矩阵受到关注是因为它们保证对于任意 x x x, x T A x ≥ 0 x^TAx ≥ 0 xTAx≥0。此外,正定矩阵还保证 x T A x = 0 x^TAx = 0 xTAx=0 当且仅当 x = 0 x = 0 x=0。
矩阵行列式等于矩阵特征值的乘积
每个实数矩阵都有一个奇异值分解,但不一定都有特征分解,例如,非方阵的矩阵没有特征分解,这时我们只能使用奇异值分解(参考 PCA的数学原理)
任何 m × n m×n m×n 实矩阵 A, A ∈ R m × n A ∈R^{m×n} A∈Rm×n 的奇异值分解一定存在,表示为三个矩阵的乘积:
A = U Σ V T A=UΣV^\mathsf{T} A=UΣVT
其中 U 是 m 阶正交矩阵,V 是 n 阶正交矩阵; Σ 是 m×n 矩形对角矩阵,其对角线元素称为奇异值,值非负,且按降序排列,这种分解方式称为矩阵的完全奇异值分解
在实际应用中,SVD 被用来对矩阵做近似表示,也即 U Σ V T UΣV^\mathsf{T} UΣVT 得到的结果并不需要与 A 完全相同,只要值尽量相同即可。这时就可以取 Σ 中最大的 k 个奇异值,得到矩阵的截断奇异值分解,这时有
A ≈ U k Σ k V k T A≈U_kΣ_kV^\mathsf{T}_k A≈UkΣkVkT
其中 U k U_k Uk是 m×k 矩阵, V k V_k Vk是 n×k 矩阵, Σ k Σ_k Σk 是 k 阶对角矩阵; 矩阵 U k U_k Uk由完全奇异值分解中 U 的前 k 列得到、矩阵 V k V_k Vk由完全奇异值分解中 V 的前 k 列得到、矩阵 Σ k Σ_k Σk 由 Σ Σ Σ 的前 k 个对角元素得到
SVD 最有用的一个性质可能是拓展矩阵求逆到非方矩阵上
1 The Matrix Cookbook(Petersen and Pedersen, 2006)
2 希洛夫[苏]Shilov G.E. Linear Algebra_(Dover,1977)
深度学习