文章目录
前言
机器学习数学基础整理只涉及理解深度学习必须的代数知识。
2.1 标量、向量、矩阵和张量
- 标量(
scalar
)就是一个单独的数,用斜体表示,通常赋予小写的变量名称,eg : n , s n,s n,s - 向量(
vector
)是一列数,这些数是有序排列的,通过次序中的索引可以确定每个单独的数。
通常用粗体的小写变量表示,eg : n \boldsymbol{n} n
明确表示向量中的元素时,可以将元素排列成一个方括号包围的纵列 :
x = [ x 1 x 2 ⋮ x n ] \boldsymbol{x}=\left [ \begin{matrix} x_1 \\ x_2 \\ \vdots \\ x_n \end{matrix} \right] x=⎣⎢⎢⎢⎡x1x2⋮xn⎦⎥⎥⎥⎤
定义集合 S = { 1 , 3 , 6 } S=\{1,3,6\} S={1,3,6},记 x S x_S xS 指定 x 1 , x 3 , x 6 x_1,x_3,x_6 x1,x3,x6
记 x − 1 x_{-1} x−1 指定 x \boldsymbol{x} x 中除 x 1 x_1 x1 外的所有元素
记 x − S x_{-S} x−S 指定 x \boldsymbol{x} x 中除 x 1 , x 3 , x 6 x_1,x_3,x_6 x1,x3,x6 外的所有元素 - 矩阵(
matrix
)是一个二维数组,其中每一个元素由两个索引所确定。通常用粗体的大写变量名称表示。
eg : A \mathbf{A} A - 张量 (
tensor
)是坐标超过两维的数组。一般的,一个数组的元素分布在若干维坐标的规则网格中,称之为张量。
使用字体 A \sf{A} A 来表示张量。张量 A \sf{A} A 中坐标为 ( i , j , k ) (i,j,k) (i,j,k) 的元素记做 A i , j , k \sf{A}_{i,j,k} Ai,j,k - 转置 (
transpose
) 是矩阵的重要操作之一,将矩阵的行列互换得到的新矩阵称为转置矩阵。
( A T ) i , j = A j , i (A^{\sf{T}})_{i,j}=A_{j,i} (AT)i,j=Aj,i
标量可以看做只有一个元素的矩阵,因此,标量的转置等于它本身, a = a T a=a^{\sf{T}} a=aT
只要矩阵形状一样我们可以把两个矩阵相加(对应位置元素相加):
C = A + B \mathbf{C}=\mathbf{A}+\mathbf{B} C=A+B
即 C i , j = A i , j + B i , j C_{i,j}=A_{i,j}+B_{i,j} Ci,j=Ai,j+Bi,j
标量和矩阵相乘,或是和矩阵相加时,我们只需将其与矩阵的每个元素相乘或相加,比如
D = a ⋅ B + c \mathbf{D}=a⋅\mathbf{B}+c D=a⋅B+c
其中 D i , j = a ⋅ B i , j + c D_{i,j}=a⋅B_{i,j}+c Di,j=a⋅Bi,j+c
在深度学习中允许矩阵和向量相加,比如 C = A + b \mathbf{C}=\mathbf{A}+b C=A+b
其中 C i , j = A i , j + b j C_{i,j}=A_{i,j}+b_j Ci,j=Ai,j+bj
换言之,向量 b \mathbf{b} b 和矩阵 A \mathbf{A} A 的每一行相加。 这个简写方法使得无需在加法操作前定义一个将向量 b \mathbf{b} b 复制到每一行而生成的矩阵。 这种隐式地复制向量 b \mathbf{b} b 到很多位置的方式,被称为广播
(broadcasting
)。
2.2 矩阵和向量相乘
矩阵乘法是矩阵运算中最重要的操作之一。 两个矩阵
A
\mathbf{A}
A 和
B
\mathbf{B}
B 的矩阵乘积
(matrix product
)是第三个矩阵
C
\mathbf{C}
C 。 为了使乘法可被定义,矩阵
A
\mathbf{A}
A 的列数必须和矩阵
B
\mathbf{B}
B 的行数相等。 如果矩阵
A
\mathbf{A}
A 的形状是
m
×
n
m\times n
m×n ,矩阵
B
\mathbf{B}
B 的形状是
n
×
p
n\times p
n×p,那么矩阵
C
\mathbf{C}
C 的形状是
m
×
p
m\times p
m×p 。 我们可以通过将两个或多个矩阵并列放置以书写矩阵乘法,例如
C
=
A
B
\mathbf{C}=\mathbf{AB}
C=AB
具体地,该乘法操作定义为
C
i
,
j
=
∑
k
A
i
,
k
B
k
,
j
C_{i,j}=\sum_kA_{i,k}B_{k,j}
Ci,j=k∑Ai,kBk,j
注意
,两个矩阵的标准乘积不是
指两个矩阵中对应元素的乘积。不过那样的矩阵乘积确实存在,称为元素对应乘积(element-wise product
)或者Hadamard 乘积(Hadamard product
),
记做
A
⊙
B
\mathbf{A}\odot\mathbf{B}
A⊙B
矩阵乘积服从分配律
A
(
B
+
C
)
=
A
B
+
A
C
\mathbf{A}(\mathbf{B}+\mathbf{C})=\mathbf{AB}+\mathbf{AC}
A(B+C)=AB+AC
矩阵乘法服从结合律
A
(
B
C
)
=
(
A
B
)
C
\mathbf{A}(\mathbf{BC})=(\mathbf{AB})\mathbf{C}
A(BC)=(AB)C
但矩阵乘法并不满足交换律(
A
B
=
B
A
\mathbf{AB}=\mathbf{B}\mathbf{A}
AB=BA并非总是成立),然而向量点积满足交换律
x
T
y
=
y
T
x
\boldsymbol{x}^{\sf{T}}\boldsymbol{y}=\boldsymbol{y}^{\sf{T}}\boldsymbol{x}
xTy=yTx
矩阵乘积的转置有简单的形式
(
A
B
)
T
=
B
T
A
T
(\mathbf{AB})^{\sf{T}}=\mathbf{B}^{\sf{T}}\mathbf{A}^{\sf{T}}
(AB)T=BTAT
我们可用线性代数符号表示线性方程组
A
x
=
b
\mathbf{A}\boldsymbol{x}=\mathbf{b}
Ax=b
其中
A
∈
R
m
×
n
\mathbf{A}\in\Bbb{R}^{m\times n}
A∈Rm×n 是已知矩阵,
b
∈
R
m
\mathbf{b}\in \Bbb{R}^m
b∈Rm 是已知向量,
x
∈
R
m
\boldsymbol{x}\in \Bbb{R}^m
x∈Rm 是要求解的未知向量。上式可重写为
A
1
,
1
x
1
+
A
1
,
2
x
2
+
⋯
+
A
1
,
n
x
n
=
b
1
A
2
,
1
x
1
+
A
2
,
2
x
2
+
⋯
+
A
2
,
n
x
n
=
b
2
⋯
A
m
,
1
x
1
+
A
m
,
2
x
2
+
⋯
+
A
m
,
n
x
n
=
b
m
\begin{matrix} \mathbf{A}_{1,1}x_1+\mathbf{A}_{1,2}x_2+\cdots+\mathbf{A}_{1,n}x_n=b_1\\ \mathbf{A}_{2,1}x_1+\mathbf{A}_{2,2}x_2+\cdots+\mathbf{A}_{2,n}x_n=b_2\\ \cdots\\ \mathbf{A}_{m,1}x_1+\mathbf{A}_{m,2}x_2+\cdots+\mathbf{A}_{m,n}x_n=b_m \end{matrix}
A1,1x1+A1,2x2+⋯+A1,nxn=b1A2,1x1+A2,2x2+⋯+A2,nxn=b2⋯Am,1x1+Am,2x2+⋯+Am,nxn=bm
2.3 单位矩阵和逆矩阵
单位矩阵(identity matrix
):任意向量和单位矩阵相乘都不会改变,
$ 维向量不变的单位矩阵记做
I
n
\mathbf{I}_n
In ,形式上
∀ x ∈ R n , I n x = x ( I n ∈ R n × n ) \forall{\boldsymbol{x}}\in \Bbb{R}^n,\mathbf{I}_n\boldsymbol{x}=\boldsymbol{x} \quad (\mathbf{I}_n\in \Bbb{R}^{n\times n}) ∀x∈Rn,Inx=x(In∈Rn×n)
单位矩阵的结构很简单,主对角线的元素都是1,其他元素为0
[
1
0
0
0
1
0
0
0
1
]
\left[\begin{matrix} 1\quad0\quad0\\ 0\quad1\quad0\\ 0\quad0\quad1 \end{matrix}\right]
⎣⎡100010001⎦⎤
单位矩阵的一个样例:这是
I
3
\text{单位矩阵的一个样例:这是}\mathbf{I}_3
单位矩阵的一个样例:这是I3
矩阵
A
\mathbf{A}
A 的逆矩阵记作
A
−
1
\mathbf{A}^{−1}
A−1 ,其定义的矩阵满足如下条件:
A
−
1
A
=
I
n
\mathbf{A}^{−1}\mathbf{A}=\mathbf{I}_n
A−1A=In
我们可以通过如下步骤求解
A
x
=
b
\mathbf{A}\boldsymbol{x}=\mathbf{b}
Ax=b
A x = b A − 1 A x = A − 1 b I n x = A − 1 b x = A − 1 b \begin{array}{clr} \mathbf{A}\boldsymbol{x}&=\mathbf{b}\\ \mathbf{A}^{−1}\mathbf{A}\boldsymbol{x}&= \mathbf{A}^{−1}\mathbf{b}\\ \mathbf{I}_{n}\boldsymbol{x}&= \mathbf{A}^{−1}\mathbf{b}\\ \boldsymbol{x}&= \mathbf{A}^{−1}\mathbf{b} \end{array} AxA−1AxInxx=b=A−1b=A−1b=A−1b
当然,这取决于我们能否找到一个逆矩阵 A − 1 \mathbf{A}^{−1} A−1 。
2.4 线性相关和生成子空间
如果逆矩阵
A
−
1
\mathbf{A}^{−1}
A−1 存在,那么
A
x
=
b
\mathbf{A}\boldsymbol{x}=\mathbf{b}
Ax=b 对于每一个向量
b
\mathbf{b}
b 恰好存在一个解,
但是,对于方程组而言,对于向量
b
\mathbf{b}
b 的某些值,有可能不存在解,或者存在无限多个解。
在多于一个解但是少于无限多个解的情况是不可能发生的;因为如果
x
\boldsymbol{x}
x 和
y
\boldsymbol{y}
y 都是某方程组的解,则
z
=
α
x
+
(
1
−
α
)
y
\mathbf{z}=\alpha\boldsymbol{x}+(1−\alpha)\boldsymbol{y}
z=αx+(1−α)y
(其中
α
\alpha
α 取任意实数) 也是该方程组的解。
为了分析方程有多少个解,我们可以将
A
\mathbf{A}
A 的列向量
看作从原点(元素都是零的向量)出发的不同方向,确定有多少种方法可以到达向量
b
\mathbf{b}
b 。 在这个观点下,向量
x
\boldsymbol{x}
x 中的每个元素表示我们应该沿着这些方向走多远,即
x
i
\boldsymbol{x}_i
xi 表示我们需要沿着第
i
i
i 个向量的方向走多远:
A
x
=
∑
i
x
i
A
:
,
i
\mathbf{A}\boldsymbol{x}=\sum_i\boldsymbol{x}_i\mathbf{A}_{:,i}
Ax=i∑xiA:,i
一般而言这种组合称为线性组合(linear combination
)。
一组向量的生成子空间(span
) 是原始向量线性组合后所能抵达的点的集合。
确定
A
x
=
b
\mathbf{A}\boldsymbol{x}=\mathbf{b}
Ax=b 是否有解相当于确定向量
b
\mathbf{b}
b 是否在
A
\mathbf{A}
A 列向量的生成子空间中,这个特殊的生成子空间被称为
A
\mathbf{A}
A 的列空间(column space
)或
A
\mathbf{A}
A 的值域(range
)。
为了使方程 A x = b \mathbf{A}\boldsymbol{x}=\mathbf{b} Ax=b 对于任意向量 b ∈ R m \mathbf{b} \in \Bbb{R}^m b∈Rm 都存在解,我们要求 A \mathbf{A} A 的列空间构成整个 R m \Bbb{R}^m Rm。 如果 R m \Bbb{R}^m Rm中的某个点不在 A \mathbf{A} A 的列空间中,那么该点对应的 b \mathbf{b} b 会使得该方程没有解。
矩阵 A \mathbf{A} A 的列空间是整个 R m \Bbb{R}^m Rm 的要求,意味着 A \mathbf{A} A 至少有 m m m 列,即 n ≥ m n\ge m n≥m。 否则, A \mathbf{A} A 列空间的维数会小于 m m m。 例如,假设 A \mathbf{A} A 是一个 3 × 2 3\times 2 3×2 的矩阵。 目标 b \mathbf{b} b 是3维的,但是 x \boldsymbol{x} x 只有2维。 所以无论如何修改 x \boldsymbol{x} x 的值,也只能描绘出 R 3 \Bbb{R}^3 R3 空间中的二维平面。 当且仅当向量 b \mathbf{b} b 在该二维平面中时,该方程有解。
不等式
n
≥
m
n \ge m
n≥m 仅是方程对每一点都有解的必要条件。 这不是一个充分条件,因为有些列向量可能是冗余的。 假设有一个
R
2
×
2
\Bbb{R}^{2\times 2}
R2×2 中的矩阵,它的两个列向量是相同的。 那么它的列空间和它的一个列向量作为矩阵的列空间是一样的。 换言之,虽然该矩阵有
2
2
2 列,但是它的列空间仍然只是一条线,不能涵盖整个
R
2
\Bbb{R}^2
R2 空间。这种冗余称为线性相关(linear dependence
),如果一组向量中的任意一个向量都不能表示成其他向量的线性组合,那么这组向量称为线性无关。
2.5 范数
在机器学习中经常使用范数来衡量向量大小。
形式上
L
p
L^p
Lp 范数定义如下:
∥
x
∥
p
=
(
∑
i
∣
x
i
∣
p
)
1
p
\left \| x\right \|_p=(\sum_i |x_i|^p)^{\frac{1}{p}}
∥x∥p=(i∑∣xi∣p)p1
其中
p
∈
R
,
p
≥
1
p\in \Bbb{R},p\ge 1
p∈R,p≥1。
范数是将向量映射到非负值得函数,直观上说向量 x \boldsymbol{x} x 的范数衡量从原点到点 x \boldsymbol{x} x 的距离。严格上说范数是满足以下条件的任意函数:
- f ( x ) = 0 ⟹ x = 0 f(\boldsymbol{x})=0\Longrightarrow \boldsymbol{x}=0 f(x)=0⟹x=0
-
f
(
x
+
y
)
≤
f
(
x
)
+
f
(
y
)
f(\boldsymbol{x}+\boldsymbol{y})\le f(\boldsymbol{x})+f(\boldsymbol{y})
f(x+y)≤f(x)+f(y)(三角不等式(
triangle inequality
)) - ∀ α ∈ R , f ( α x ) = ∣ α ∣ f ( x ) \forall\alpha\in \Bbb{R},f(\alpha\boldsymbol{x})=|\alpha|f(\boldsymbol{x}) ∀α∈R,f(αx)=∣α∣f(x)
机器学习中常用的范数
当
p
=
2
p=2
p=2时,
L
2
L^2
L2 范数称为欧几里得范数(Euclidean norm
),经常简化表示为
∥
x
∥
\left \| x\right\|
∥x∥, 略去了下标2
平方 L 2 L^2 L2范数也经常用来衡量向量的大小,可以简单的通过点积 x T x \boldsymbol{x}^{\sf{T}}\boldsymbol{x} xTx 计算。在数学和计算上都比 L 2 L^2 L2 范数本身更方便,但它在原点附近增长十分缓慢,
当 p = 1 p=1 p=1时, L 1 L^1 L1 范数可以简化为 ∥ x ∥ 1 = ∑ i ∣ x i ∣ \left\|x\right\|_1=\sum_i |x_i| ∥x∥1=∑i∣xi∣(在各个位置斜率相同)
当
p
=
∞
p=\infty
p=∞时,
L
∞
L^\infty
L∞ 范数称为最大范数(max norm
),这个范数表示向量中具有最大幅值的元素的绝对值:
∥
x
∥
∞
=
max
i
∣
x
i
∣
\left\|x\right\|_\infty = \max\limits_{i} |x_i|
∥x∥∞=imax∣xi∣
衡量矩阵的大小深度学习中,常用Frobrnius范数(Frobenius norm
):
∥
A
∥
F
=
∑
i
,
j
A
i
,
j
2
\left\|\mathbf{A}\right\|_F=\sqrt{\sum_{i,j}A_{i,j}^2}
∥A∥F=i,j∑Ai,j2
两个向量的点积可以用范数来表示,具体如下:
x
T
y
=
∥
x
∥
2
∥
y
∥
2
cos
θ
\boldsymbol{x}^{\sf{T}}\boldsymbol{y}=\|\boldsymbol{x}\|_2\|\boldsymbol{y}\|_2\cos\theta
xTy=∥x∥2∥y∥2cosθ
其中
θ
\theta
θ 表示
x
和
y
\boldsymbol{x} \text{和} \boldsymbol{y}
x和y 的夹角
2.6 特殊类型的矩阵和向量
对角矩阵(diagonal matrix
):只有主对角线上含有非零元素。
用
d
i
a
g
(
v
)
diag(\boldsymbol{v})
diag(v) 表示对角元素由向量
v
\boldsymbol{v}
v 中元素给定的一个对角方阵。
d
i
a
g
(
v
)
x
=
v
⊙
x
diag(\boldsymbol{v})\boldsymbol{x} = \boldsymbol{v}\odot\boldsymbol{x}
diag(v)x=v⊙x
对角方阵的逆矩阵存在,当且仅当对角元素都是非零值,在这种情况下
d
i
a
g
(
v
)
−
1
=
d
i
a
g
(
[
1
/
v
1
,
⋯
 
,
1
/
v
n
]
T
)
diag(\boldsymbol{v})^{-1}=diag([1/\Bbb{v_1},\cdots,1/\Bbb{v_n}]^{\sf{T}})
diag(v)−1=diag([1/v1,⋯,1/vn]T)
对称矩阵(symmetric matrix
) 是转置和自己相等的矩阵。即
A
=
A
T
\mathbf{A}=\mathbf{A}^{\sf{T}}
A=AT
单位向量(unit vector
)是具有单位范数的向量,即
∥
x
∥
2
=
1
\|\boldsymbol{x}\|_2=1
∥x∥2=1
如果
x
T
y
=
0
\boldsymbol{x}^{\sf{T}}\boldsymbol{y}=0
xTy=0 那么向量
x
\boldsymbol{x}
x 和
y
\boldsymbol{y}
y 相互正交(orthogonal
),如果这些向量相互正交且范数为1,则称为标准正交(orthonormal
)
正交矩阵(orthogonal matrix
)指行向量和列向量是分别标准正交的方阵,即
A
T
A
=
A
T
A
=
I
\mathbf{A}^{\sf{T}}\mathbf{A}=\mathbf{A}^{\sf{T}}\mathbf{A}=\mathbf{I}
ATA=ATA=I
这意味着
A
−
1
=
A
T
\mathbf{A}^{-1}=\mathbf{A}^{\sf{T}}
A−1=AT
2.7 特征分解
特征分解(eigendecomposition
)是使用最广的矩阵分解之一,即将矩阵分解为一组特征向量和特征值。
方阵
A
\mathbf{A}
A 的特征向量(eigenvector
)是指与
A
\mathbf{A}
A 相乘后相当于对该向量进行缩放的非零向量
v
\boldsymbol{v}
v :
A v = λ v \mathbf{A}\boldsymbol{v}=\lambda\boldsymbol{v} Av=λv
其中标量
λ
\lambda
λ 称为这个特征向量的特征值(eigenvalue
).
假设矩阵 A \mathbf{A} A 有 n 个线性无关的特征向量 { v ( 1 ) , ⋯   , v ( n ) } \{\boldsymbol{v}^{(1)},\cdots ,\boldsymbol{v}^{(n)}\} {v(1),⋯,v(n)} ,对应着特征值 { λ 1 , ⋯   , λ n } \{\lambda_1,\cdots,\lambda{n}\} {λ1,⋯,λn}。我们将特征向量连接成一个矩阵,使得每一列是一个特征向量: V = [ v ( 1 ) , ⋯   , v ( n ) ] \mathbf{V}=[\boldsymbol{v}^{(1)},\cdots ,\boldsymbol{v}^{(n)}] V=[v(1),⋯,v(n)] ,同理将特征值连接成一个向量 λ = [ λ 1 , ⋯   , λ n ] T \boldsymbol{\lambda}=[\lambda_1,\cdots,\lambda_n]^{\sf{T}} λ=[λ1,⋯,λn]T,因此 A \mathbf{A} A 的特征分解可以记作
A = V d i a g ( λ ) V − 1 \mathbf{A}=\mathbf{V}diag(\boldsymbol{\lambda})\mathbf{V}^{−1} A=Vdiag(λ)V−1
每一个实对称矩阵都可以分解成实特征向量和实特征值:
A = Q Λ Q T \mathbf{A}=\mathbf{Q\Lambda Q}^{\sf{T}} A=QΛQT
其中 Q \mathbf{Q} Q 是 A \mathbf{A} A 的特征向量组成的正交矩阵, Λ \mathbf{\Lambda} Λ 是对角矩阵。特征值 Λ i , i \Lambda_{i,i} Λi,i对应的特征向量是矩阵 Q \mathbf{Q} Q 的第 i i i 列,记作 Q : , i \mathbf{Q}_{:,i} Q:,i
正定(positive definite
):所有特征值都是正数的矩阵
半正定(positive semidefinite
):所有特征值都是非负数的矩阵
负定(negative definite
):所有特征值都是负数的矩阵
半负定(negative semidefinite
):所有特征值都是非正数的矩阵
对于半正定矩阵,保证
∀
x
,
x
T
A
x
≥
0
\forall \boldsymbol{x},\boldsymbol{x}^{\sf{T}}\mathbf{A}\boldsymbol{x} \ge 0
∀x,xTAx≥0,
此外,正定矩阵还保证
x
T
A
x
=
0
⇒
x
=
0
\boldsymbol{x}^{\sf{T}}\mathbf{A}\boldsymbol{x} = 0\Rightarrow \boldsymbol{x}=\mathbf{0}
xTAx=0⇒x=0,
2.8 奇异值分解
奇异值分解(singular value decomposition,SVD
):将矩阵分解为奇异向量(singular value vector
)和奇异值(singular value
)。每一个实数矩阵都有一个奇异值分解,但不一定都有特征分解。非方阵的矩阵没有特征分解,只能使用奇异值分解
奇异值分解将矩阵分解为三个矩阵的乘积:
A
=
U
D
V
T
\mathbf{A}=\mathbf{UDV}^{\sf{T}}
A=UDVT
假设
A
\mathbf{A}
A 是一个
m
×
n
m\times n
m×n 的矩阵,那么
U
\mathbf{U}
U 则是一个
m
×
m
m\times m
m×m 的矩阵,
D
\mathbf{D}
D 是一个
m
×
n
m\times n
m×n 的矩阵,
V
\mathbf{V}
V 是一个
n
×
n
n\times n
n×n 的矩阵。矩阵
U
\mathbf{U}
U 和
V
\mathbf{V}
V 都定义为正交矩阵,而
D
\mathbf{D}
D 定义为对角矩阵。
D
\mathbf{D}
D 不一定是方阵
对角矩阵
D
\mathbf{D}
D 对角线上的元素称为矩阵
A
\mathbf{A}
A 的奇异值,矩阵
U
\mathbf{U}
U 的列向量称为左奇异向量(left singular vector
),矩阵
V
\mathbf{V}
V 的列向量称为右奇异向量(right singular vector
)。
A
\mathbf{A}
A 的左奇异向量是
A
A
T
\mathbf{AA}^{\sf{T}}
AAT 的特征向量
A
\mathbf{A}
A 的右奇异向量是
A
T
A
\mathbf{A}^{\sf{T}}\mathbf{A}
ATA 的特征向量
A
\mathbf{A}
A 的非零奇异值是
A
A
T
\mathbf{AA}^{\sf{T}}
AAT 和
A
T
A
\mathbf{A}^{\sf{T}}\mathbf{A}
ATA 特征值的平方根
SVD拓展矩阵求逆到非方阵矩阵上
2.9 Moore-Penrose伪逆
矩阵 A \mathbf{A} A 的伪逆定义为
A + = lim a → 0 ( A T A + α I ) − 1 A T \mathbf{A}^+=\lim\limits_{a\rightarrow 0}(\mathbf{A}^{\sf{T}}\mathbf{A}+\alpha\mathbf{I})^{−1}\mathbf{A}^{\sf{T}} A+=a→0lim(ATA+αI)−1AT
计算伪逆的实际算法没有基于这个定义,而是使用下面的公式:
A + = V D + U T \mathbf{A}^+=\mathbf{VD}^+\mathbf{U}^{\sf{T}} A+=VD+UT
其中矩阵 U 、 D 和 V \mathbf{U、D} \text{和} \mathbf{V} U、D和V是矩阵 A \mathbf{A} A 奇异值分解后得到的矩阵,对角矩阵 D \mathbf{D} D 的伪逆 D + \mathbf{D}^+ D+ 是其非零元素取倒数之后转置得到的。
当矩阵
A
\mathbf{A}
A 的列数多于行数
时,使用伪逆求解线性方程是众多可能解法中的一种。且
x
=
A
+
y
\boldsymbol{x}=\mathbf{A}^+\boldsymbol{y}
x=A+y 是方程所有可行解中欧几里得范数
∥
x
∥
2
\|\boldsymbol{x}\|_2
∥x∥2 最小的一个
当矩阵
A
\mathbf{A}
A 的行数多于列数
时,可能没有解。在这种情况下,通过伪逆得到的
x
\boldsymbol{x}
x 使得
A
x
和
y
\mathbf{A}\boldsymbol{x} \text{和} \boldsymbol{y}
Ax和y 的欧几里得距离
∥
A
x
−
y
∥
2
\|\mathbf{A}\boldsymbol{x}-\boldsymbol{y}\|_2
∥Ax−y∥2 最小
2.10 迹运算
迹运算返回的是矩阵对角元素的和:
Tr ( A ) = ∑ i A i , i \operatorname{Tr}(\mathbf{A})=\sum\limits_i\mathbf{A}_{i,i} Tr(A)=i∑Ai,i
矩阵迹的一些性质:
迹运算提供了另一种描述矩阵Frobenius范数的方法
∥ A ∥ F = Tr ( A A T ) \|\mathbf{A}\|_F=\sqrt{\operatorname{Tr}{(\mathbf{AA}^{\sf{T}})}} ∥A∥F=Tr(AAT)
迹运算在转置运算下是不变的
Tr ( A ) = Tr ( A T ) \operatorname{Tr}(\mathbf{A})=\operatorname{Tr}(\mathbf{A^{\sf{T}}}) Tr(A)=Tr(AT)
多个矩阵相乘得到的方阵的迹,和将这些矩阵总的最后一个挪到最前面之后相乘的迹是相同的,(需考虑挪动次序后矩阵乘积依然定义良好)
Tr ( A B C ) = Tr ( C A B ) = Tr ( B C A ) \operatorname{Tr}{(\mathbf{ABC})}=\operatorname{Tr}{(\mathbf{CAB})}=\operatorname{Tr}{(\mathbf{BCA})} Tr(ABC)=Tr(CAB)=Tr(BCA)
更一般的:
Tr ( ∏ i = 1 n F ( i ) ) = Tr ( F ( n ) ∏ i = 1 n − 1 F ( i ) ) \operatorname{Tr}(\prod\limits_{i=1}^n\mathbf{F}^{(i)})=\operatorname{Tr}(\mathbf{F}^{(n)}\prod\limits_{i=1}^{n-1}\mathbf{F}^{(i)}) Tr(i=1∏nF(i))=Tr(F(n)i=1∏n−1F(i))
例如矩阵 A ∈ R m × n \mathbf{A}\in \Bbb{R}^{m\times n} A∈Rm×n ,矩阵 B ∈ R n × m \mathbf{B}\in \Bbb{R}^{n\times m} B∈Rn×m,可以得到
Tr ( A B ) = Tr ( B A ) \operatorname{Tr}{(\mathbf{AB})}=\operatorname{Tr}{(\mathbf{BA})} Tr(AB)=Tr(BA)
尽管 A B ∈ R m × m \mathbf{AB}\in \Bbb{R}^{m\times m} AB∈Rm×m 和 B A ∈ R n × n \mathbf{BA}\in \Bbb{R}^{n\times n} BA∈Rn×n。
标量在迹运算后仍然是它自己
a = Tr ( a ) a=\operatorname{Tr}(a) a=Tr(a)
2.11 行列式
行列式记作
det
(
A
)
\det(\mathbf{A})
det(A) ,是一个将方阵
A
\mathbf{A}
A 映射到实数的函数。行列式的值等于矩阵特征值的乘积。
行列式的绝对值可以用来衡量矩阵参与矩阵乘法后空间扩大或者缩小了多少。
如果行列式是0
,那么空间至少沿着某一维完全收缩了使其失去了所有的体积。
如果行列式是1
,那么这个转换保持空间体积不变。