矩阵基础(Matrix Preliminary)
在数学意义上,存在多行多列数值的结构称为矩阵。
演化过程:集合(Sets)
⟹
\Longrightarrow
⟹标量(Scalars)
⟹
\Longrightarrow
⟹向量(Vectors)
⟹
\Longrightarrow
⟹矩阵(Matrices)
⟹
\Longrightarrow
⟹张量(Tensors)
矩阵类型(Matrix Types)
(1)从数据分布来说
行矩阵(行向量)(Row Matrix/Vector)
列矩阵(列向量)(Column Matrix/Vector)
方阵(Square Matrix)
对角矩阵(Diagonal Matrix):主对角线之外的元素数值都为0;
标量矩阵(Scalar Matrix):所有对角元素数值相同的对角矩阵;
单位矩阵(Identity Matrix):所有对角元素数值都为1的对角矩阵,记为
I
I
I;
零矩阵(虚无矩阵)(Zero/Null Matrix):所有元素都为0的矩阵;
对称矩阵(Symmetric Matrix):沿主对角线对称的矩阵;
上三角矩阵(Upper Triangular Matrix)
下三角矩阵(Lower Triangular Matrix)
分块矩阵(Block Matrix):每个元素都是一个矩阵(主要用于简化表示);
分割矩阵(Partitioned Matrix):与分块矩阵类似;
稀疏矩阵(Sparse Matrix)
稠密矩阵(Dense Matrix)
托普利兹矩阵(Toeplitz/Diagonal-Constant Matrix):每条从左到右递减的对角线都是常数;
范特蒙德矩阵(Vandermonde Matrix):每一行都有几何级数项;
置换矩阵(Permutation Matrix):一个方阵,在每行和每列中都有一个元素1,其它元素为0,一般记为
P
P
P;
黑森贝格矩阵(Hessenberg Matrix):一种特殊的方阵,与三角阵很相似;上黑森贝格矩阵与下黑森贝格矩阵;
(2)从运算属性来说
奇异矩阵(Singular Matrix):
非奇异矩阵(Non-singular Matrix):
伴随矩阵(Adjugate Matrix):
共轭矩阵(Conjugate Matrix):在复数域中,相对原始矩阵
A
A
A,存在
A
‾
\overline{A}
A;
转置矩阵(Tranposed Matrix):相对原始矩阵
A
A
A,行列互换后的矩阵,记为
A
T
A^{T}
AT;
斜对称矩阵(反对称矩阵)(Skew-Symmetric Matrix):相对原始矩阵
A
A
A,其为
−
A
T
-A^{T}
−AT;
正交矩阵(Orthogonal Matrix):相对原始方阵
A
A
A,存在
A
T
=
A
−
1
A^{T}=A^{-1}
AT=A−1以及
A
T
A
=
A
A
T
=
I
A^{T}A=AA^{T}=I
ATA=AAT=I;
埃尔米特矩阵(米特矩阵)(Hermitian Matrix):在复数域中,相对原始矩阵
A
A
A,存在
A
=
A
T
‾
=
A
H
A=\overline{A^{T}}=A^{H}
A=AT=AH关系;
酉矩阵(Unitary Matrix):在复数域中,相对原始方阵
U
U
U,存在
U
H
U
=
U
U
H
=
U
U
−
1
=
I
U^{H}U=UU^{H}=UU^{-1}=I
UHU=UUH=UU−1=I关系;
定矩阵(Definite Matrix):
半正定矩阵(Positive Semi-Definite Matrix):
拉普拉斯矩阵(Laplacian Matrix) :
雅可比矩阵/一阶导数矩阵(Jacobian Matrix):
海森矩阵/黑塞矩阵/二阶导数矩阵(Hessian Matrix):
矩阵运算(Matrix Operations)
(1)基本运算(Fundamental Operations)
矩阵加法(Matrix Addition)
矩阵减法(Matrix Subtraction)
标量乘法(Scalar Multiplication):
B
=
k
A
B=kA
B=kA
矩阵乘法(Matrix Mulitplication):
C
=
A
B
C=AB
C=AB
矩阵转置(Matrix Transposition):
B
=
A
T
B=A^{T}
B=AT
矩阵求逆(Matrix Inversion):一般通过
A
−
1
=
adj
(
A
)
/
det
(
A
)
A^{-1}=\text{adj}(A)/\text{det}(A)
A−1=adj(A)/det(A)运算,存在
A
A
−
1
=
A
−
1
A
=
I
AA^{-1}=A^{-1}A=I
AA−1=A−1A=I关系;
哈马达乘积/逐元素乘法(Hadamard Product/Element-wise Multiplication):
C
=
A
⨀
B
C=A\bigodot B
C=A⨀B
矩阵的迹(Matrix Trace):针对原始方阵
A
A
A,
Tr
=
∑
i
=
1
n
A
i
i
\text{Tr}=\sum^{n}_{i=1}A_{ii}
Tr=∑i=1nAii
矩阵行列式(Matrix Determinant):
det
(
A
)
\text{det}(A)
det(A)
矩阵的秩(Matrix Rank):矩阵中线性无关的行或列的最大数目;
矩阵的特征值与特征向量(Eigenvalue & Eigenvector):
A
v
=
λ
v
Av=\lambda v
Av=λv,
u
A
=
λ
u
uA=\lambda u
uA=λu;左特征向量
v
v
v与右特征向量
u
u
u;
(2)矩阵范数(Matrix Norm):量化矩阵大小或长度的数学度量
L1范数(L1-Norm/Column-Sum Norm):
∥
A
∥
1
=
∑
i
,
j
=
1
n
∣
a
i
j
∣
\Vert A \Vert_{1}=\sum^{n}_{i,j=1}\vert a_{ij} \vert
∥A∥1=∑i,j=1n∣aij∣
欧式范数(Frobenius/Euclidean Norm),属于L2范数:
∥
A
∥
=
∑
i
j
∣
A
i
j
∣
2
=
Tr
(
A
A
H
)
\Vert \mathbf{A} \Vert = \sqrt{\sum_{ij}\vert A_{ij}\vert^2}=\sqrt{\text{Tr}(\mathbf{AA^H})}
∥A∥=∑ij∣Aij∣2=Tr(AAH)
Schur范数,属于L2范数:
Hilbert-Schmidt范数,属于L2范数:
谱范数(Spectral Norm),属于L2范数:
无穷范数(Infinite Norm,或
∞
\infty
∞-Norm):
Schatten Norm:
核范数(Ky Fan Norm/Nuclear Norm):
(3)线性变换(2D Linear Transformation)[可扩展至三维]
欧式变换(Euclidean Transformation):
平移矩阵(Translation Matrix):
缩放矩阵(Scaling Matrix):
旋转矩阵(Rotation Matrix):
剪切矩阵(Shearing Matrix):
辅助变换(Householder transformation):
(4)其它变换(Other Transformations)
傅里叶/傅立叶变换(Fourier Transformation):由法国数学家(Jean Baptiste Joseph Fourier)提出,最初是作为研究热传导理论的工具而被提出;
傅里叶变换是拉普拉斯变换的特例;线性变换;
能将满足一定条件的函数表示为三角函数或它们的积分的线性组合;
傅里叶矩阵;
离散余弦变换(Discrete Cosine Transformation):它是傅里叶变换的一种变形;应用于音频和图像压缩(Data Compression);MDCT(一种DCT的变形)是目前音频文件压缩的黄金标准;
DCT变体:DCT-I, DCT-II, DCT-III, DCT-IV;
阿达玛变换(Hadamard Transformation):
小波/子波变换(Wavelet Transformation):
矩阵微积分(Matrix Calculus)
(1)求导法则
矩阵微分(Matrix Differentiation):
Basic Rules
Product Rules
Derivatives of Determinants
The Chain Rule
Derivatives of Traces
Derivatives of Frobenius Norm
(2)导数公式(Derivative Formula)
Derivatives of a Determinant
Derivatives of an Inverse
Derivatives of Eigenvalues
Derivatives of Matrices, Vectors and Scalar Forms
Derivatives of Traces
Derivatives of vector norms
Derivatives of matrix norms
Derivatives of Structured Matrices
∂ a T X b ∂ X = a b T \begin{aligned} \frac{\partial\mathbf{a^TXb}}{\partial\mathbf{X}}=\mathbf{a}\mathbf{b^T} \end{aligned} ∂X∂aTXb=abT ∂ a T X T b ∂ X = b a T \begin{aligned} \frac{\partial\mathbf{a^TX^Tb}}{\partial\mathbf{X}}=\mathbf{ba^T} \end{aligned} ∂X∂aTXTb=baT ∂ A = 0 \begin{aligned} \partial\mathbf{A}=0 \end{aligned} ∂A=0 ∂ ( X + Y ) = ∂ X + ∂ Y \begin{aligned} \partial(\mathbf{X+Y})= \partial\mathbf{X}+\partial\mathbf{Y}\end{aligned} ∂(X+Y)=∂X+∂Y ∂ ( α X ) = α ∂ X \begin{aligned} \partial(\alpha\mathbf{X})=\alpha\partial\mathbf{X} \end{aligned} ∂(αX)=α∂X ∂ ( α X ∘ Y ) = ( ∂ X ) ∘ Y + X ∘ ( ∂ Y ) \begin{aligned} \partial(\alpha\mathbf{X\circ Y})=(\partial\mathbf{X})\circ\mathbf{Y}+\mathbf{X}\circ(\partial\mathbf{Y}) \end{aligned} ∂(αX∘Y)=(∂X)∘Y+X∘(∂Y) ∂ ( X Y ) = ( ∂ X ) Y + X ( ∂ Y ) \begin{aligned} \partial(\mathbf{XY})=(\partial\mathbf{X})\mathbf{Y}+\mathbf{X}(\partial\mathbf{Y}) \end{aligned} ∂(XY)=(∂X)Y+X(∂Y) ∂ ( X ⊗ Y ) = ( ∂ X ) ⊗ Y + X ⊗ ( ∂ Y ) \begin{aligned} \partial(\mathbf{X\otimes Y})=(\partial\mathbf{X})\otimes\mathbf{Y}+\mathbf{X}\otimes(\partial\mathbf{Y}) \end{aligned} ∂(X⊗Y)=(∂X)⊗Y+X⊗(∂Y) ∂ ( det ( X ) ) = det ( X ) Tr ( X − 1 ∂ X ) \begin{aligned} \partial(\text{det}(\mathbf{X}))=\text{det}(\mathbf{X})\text{Tr}(\mathbf{X}^{-1}\partial\mathbf{X}) \end{aligned} ∂(det(X))=det(X)Tr(X−1∂X) ∂ ( ln ( det ( X ) ) ) = Tr ( X − 1 ∂ X ) \begin{aligned} \partial(\text{ln}(\text{det}(\mathbf{X})))=\text{Tr}(\mathbf{X}^{-1}\partial\mathbf{X}) \end{aligned} ∂(ln(det(X)))=Tr(X−1∂X)
Assume
F
(
X
)
\begin{aligned} F(\mathbf{X}) \end{aligned}
F(X) is an element-wise differentiable function.
f() is the scalar derivative of F().
∂ Tr ( F ( X ) ) ∂ X = f ( X ) T \begin{aligned} \frac{\partial\text{Tr}(F(\mathbf{X}))}{\partial\mathbf{X}}=f(\mathbf{X})^T \end{aligned} ∂X∂Tr(F(X))=f(X)T ∂ ∂ X Tr ( X A ) = A T \begin{aligned} \frac{\partial}{\partial\mathbf{X}}\text{Tr}(\mathbf{XA})=\mathbf{A}^T \end{aligned} ∂X∂Tr(XA)=AT ∂ ∂ X Tr ( A X B ) = A T B T \begin{aligned} \frac{\partial}{\partial\mathbf{X}}\text{Tr}(\mathbf{AXB})=\mathbf{A}^T\mathbf{B}^T \end{aligned} ∂X∂Tr(AXB)=ATBT ∂ ∂ X Tr ( A X T B ) = B A \begin{aligned} \frac{\partial}{\partial\mathbf{X}}\text{Tr}(\mathbf{AX^TB})=\mathbf{BA} \end{aligned} ∂X∂Tr(AXTB)=BA ∂ ∂ X Tr ( X T A ) = A \begin{aligned} \frac{\partial}{\partial\mathbf{X}}\text{Tr}(\mathbf{X^TA})=\mathbf{A} \end{aligned} ∂X∂Tr(XTA)=A ∂ ∂ X Tr ( X 2 ) = 2 X T \begin{aligned} \frac{\partial}{\partial\mathbf{X}}\text{Tr}(\mathbf{X^2})=2\mathbf{X^T} \end{aligned} ∂X∂Tr(X2)=2XT
矩阵分解(Matrix Decomposition/Factorization)
分解目的与分解手段
(1)求解线性系统(Sovling Linear Systems)
可以简化求解线性方程系统,即
A
x
=
b
Ax=b
Ax=b的线性系统。
这个线性方程也称为
n
n
n元线性方程组或举证方程。
其中,
A
A
A矩阵一般不是方阵,假设大小为
m
×
n
m\times n
m×n,存在
m
=
n
m=n
m=n、
m
<
n
m<n
m<n或
m
>
n
m>n
m>n等形式;
x
x
x为为列向量,大小一般为
n
×
1
n\times 1
n×1,称为决策变量或未知向量;
b
b
b为列向量,大小一般为
n
×
1
n\times 1
n×1。
分解手段:LU分解(LU Decomposition), LU Reduction, Block LU Decomposition, QR分解(QR Decomposition), RRQR Factorization, 乔里斯基/柯列斯基分解(Cholesky Decomposition), Rank Factorization, Interpolative Decomposition;
(2)分析特征值与特征向量(Eigenvalue & Eigenvector)
设A是n阶矩阵,若存在常数
λ
\lambda
λ和
n
n
n维非零向量X,使得
A
X
=
λ
X
AX=\lambda X
AX=λX,则称
λ
\lambda
λ为矩阵
A
A
A的一个特征值,
X
X
X为矩阵
A
A
A对应于当前特征值的一个特征向量(
n
×
1
n\times 1
n×1)。
分解手段:Eigen Decomposition, Jordan Decomposition, Schur Decomposition, Real Schur Decompostion, QZ Decomposition, Takagi’s Factorization, 奇异值分解(Singular Value Decomposition (SVD)), Scale-Invariant Decomposition;
(3)其它分解手段
Polar-Decomposition, Algebraic Polar Decomposition, Mostow’s Decomposition, Sinkhorn Normal Form, Sectoral Decomposition, William’s Normal Form, 双共轭分解(Biconjugate Decomposition);
(4)其它分解目的:
数值稳定性(Numerical Stability)[Matrix Decompositions can enhance the numerical stability of algorithms], 数据压缩与降维(Data Compression & Dimensionality Reduction)[help in capturing the most significant features of a dataset], 优化与二次型(Optimization & Quadratic Form), 信号处理(Signal Processings), 高效计算(Computational Efficiency), 数值分析与估计(Numerical Analysis & Approximation), 应用于数值分析(Numerical Analysis)、数据分析与统计(Data Analysis & Statistics)、图论(Graph Theory)、优化(Optimization)、物理与工程(Physics & Engineering)。
分解手段细说
(1)LU分解(LU Decomposition)
LU分解是高斯消元法(Gaussian Elimination Method)的矩阵形式。
并不是所有的矩阵都可以进行LU分解。
此时假定矩阵
A
A
A为方阵,则需要分解为两个矩阵的乘积记为
A
=
L
U
A=LU
A=LU。
其中,
L
L
L为一个下三角矩阵,而
U
U
U为一个上三角矩阵。
针对线性方程组而言,可以写为
A
x
=
b
⟹
L
U
x
=
b
Ax=b\Longrightarrow LUx=b
Ax=b⟹LUx=b。
若引入部分主元(Partial Pivoting)的方法,在数值线性代数中,该方法用于避免因主对角线元素过小而导致的数值不稳定问题。
此时,针对线性方程组而言,可以写为
P
A
x
=
P
b
⟹
A
x
=
P
L
U
x
=
P
b
PAx=Pb\Longrightarrow Ax=PLUx=Pb
PAx=Pb⟹Ax=PLUx=Pb,其中
P
P
P为置换矩阵。
若引入完整主元(Full Pivoting)的方法,在
A
A
A前后都乘上一个置换矩阵,即
P
A
Q
=
L
U
PAQ=LU
PAQ=LU,其中
P
P
P与
Q
Q
Q为置换矩阵。
还存在一种LDU分解方法,即将
A
A
A分解为
A
=
L
D
U
A=LDU
A=LDU的形式,其中D为对角矩阵。
(2)乔里斯基/柯列斯基分解(Cholesky Decomposition)
将一个米特正定矩阵(Hermitian Positive-Definite Matrix)
A
A
A分解为一个下三角矩阵L与L的共轭转置矩阵的乘积,即
A
=
L
L
H
=
L
L
∗
A=LL^{H}=LL^{*}
A=LLH=LL∗。每个米特正定矩阵(或实数域的对称正定矩阵)都有唯一的乔里斯基分解。
类似的LDL分解方法,即将
A
A
A分解为
A
=
L
D
L
H
=
L
D
L
∗
A=LDL^{H}=LDL^{*}
A=LDLH=LDL∗的形式卡其棕D为对角矩阵,也可以写成
A
=
L
D
L
∗
=
L
D
1
/
2
(
D
1
/
2
)
∗
L
∗
=
L
D
1
/
2
(
L
D
1
/
2
)
∗
A=LDL^{*}=LD^{1/2}(D^{1/2})^{*}L^{*}=LD^{1/2}(LD^{1/2})^{*}
A=LDL∗=LD1/2(D1/2)∗L∗=LD1/2(LD1/2)∗。
(3)QR分解(QR Decomposition)
将一个矩阵
A
A
A分解为
A
=
Q
R
A=QR
A=QR的形式,其中,
Q
Q
Q为一个正交矩阵,
R
R
R为一个上三角矩阵。
QR分解方法主要用于求解线性最小二乘法问题(Linear Least Square Problem)。
(4)奇异值分解(Singular Value Decomposition (SVD))
将针对方阵求取特征值与特征向量的方法推广到任意矩阵。
将一个
m
×
n
m\times n
m×n的矩阵
M
M
M分解为
M
=
U
Σ
V
∗
M=U\Sigma V^{*}
M=UΣV∗,其中,
U
U
U为一个
m
×
m
m\times m
m×m的酉矩阵,
Σ
\Sigma
Σ为一个
m
×
n
m\times n
m×n的具有非负实数的矩形对角矩阵,
V
V
V为一个
n
×
n
n\times n
n×n的酉矩阵。
Σ
\Sigma
Σ对角线元素即为
M
M
M的奇异值(Singular Value),非零的奇异值个数等于
M
M
M的秩。
U
U
U与
V
V
V的所有列向量分别称为
M
M
M的左奇异向量与右奇异向量。
应用举例01 - Eigen库
网址:https://eigen.tuxfamily.org/
标语:Eigen is a C++ template library for linear algebra: matrices, vectors, numerical solvers, and related algorithms.
以下仅各个模块以及头文件信息进行摘录:
模块 | 头文件 | 内容 |
---|---|---|
Core | #include <Eigen/Core> | Matrix与Array类,基本线性代数运算以及数组运算 |
Geometry | #include <Eigen/Geometry> | 变换、平移、缩放、旋转(2D与3D)[需要三维几何、世界坐标、相机坐标等知识] |
LU | #include <Eigen/LU> | 求逆、行列式、LU分解等求解器 |
Cholesky | #include <Eigen/Cholesky> | LLT以及LDLT乔里斯基/柯列斯基分解等求解器 |
Householder | #include <Eigen/Householder> | 辅助变换 |
SVD | #include <Eigen/SVD> | SVD分解以及最小二乘求解器 |
QR | #include <Eigen/QR> | QR分解等求解器 |
Eigenvalues | #include <Eigen/Eigenvalues> | 特征值与特征向量求解器 |
Sparse | #include <Eigen/Sparse> | 稀疏矩阵存储以及基本的线性代数运算 |
#include <Eigen/Dense> | 汇总头文件,包括Core、Geometry等头文件 | |
#include <Eigen/Eigen> | 汇总头文件,包括针对稠密与稀疏矩阵操作的所有头文件(实际编程时仅需引用此文件) |
应用举例02 - MATLAB如何求解线性方程Ax=B
网址:https://www.mathworks.com/help/matlab/ref/mldivide.html
MATLAB内置算法针对不同情况采用了不同的矩阵分解方式。
以下直接下载了针对稠密矩阵与稀疏矩阵的的算法流程。
(1)针对稠密矩阵(Dense Matrix)的算法流程:
(2)针对稀疏矩阵(Sparse Matrix)的算法流程:
参考
[1] Wikipedia, https://en.wikipedia.org/wiki/Matrix_calculus
[2] Petersen K B, Pedersen M S. The matrix cookbook[J]. Technical University of Denmark, 2008, 7(15): 510.
[3] Thomas P. Minka, Old and New Matrix Algebra Useful for Statistics, December 28, 2000.