线性代数是数学的一个分支,应用于科学和工程中。线性代数主要是面向连续数学,而非离散数学。掌握好线性代数对于学习机器学习算法是必要的,尤其是深度学习算法。因此,本章学习必要的线性代数知识。
知识点一:标量、向量、矩阵和张量
标量(scalar): 一个标量就是一个单独的数,不同于线性代数中研究的其他大部分对象。当介绍标量时,会明确标量的类型。
向量(vector): 一个向量是一列数。这些数是有序排列的,通过次序的索引,可以得到每个单独的数。表示为
x
=
(
x
1
x
2
⋮
x
n
)
x = \begin{pmatrix} x_{1}\\ x_{2}\\ \vdots\\ x_{n}\\ \end{pmatrix}
x=⎝⎜⎜⎜⎛x1x2⋮xn⎠⎟⎟⎟⎞
矩阵(matrix): 矩阵是一个二维数组,其中的每一个元素由两个索引确定。一个2行2列的矩阵表示为
A
=
(
A
1
,
1
A
1
,
2
A
2
,
1
A
2
,
2
)
A = \begin{pmatrix} A_{1,1}&A_{1,2}\\ A_{2,1}&A_{2,2}\\ \end{pmatrix}
A=(A1,1A2,1A1,2A2,2)
张量(tensor): 某些情况下,会讨论坐标超过两维的数组。一般地,一个数组中的元素分布在若干维坐标的规则网格中,我们称之为张量。
转置: 矩阵的转置是以对角线为轴的镜像。从左上角到右下角的对角线称为主对角线。表示为
(
A
T
)
i
,
j
=
A
j
,
i
(A^T)_{i,j}=A_{j,i}
(AT)i,j=Aj,i。向量可看作是只有一列的矩阵,那么向量的转置就是只有一行的矩阵。标量的转置等于其本身。
知识点二:矩阵的运算
矩阵相加: 当矩阵形状相同时,矩阵对应位置的元素相加,表示为
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
i
,
j
=
a
∗
B
i
,
j
+
c
D_{i,j}=a*B_{i,j}+c
Di,j=a∗Bi,j+c
矩阵和向量相加: 就是将向量和矩阵的每一行相加。表示为
C
i
,
j
=
A
i
,
j
+
b
j
C_{i,j}=A_{i,j}+b_{j}
Ci,j=Ai,j+bj。这种方法类似于将向量展开成一个与矩阵同维度的矩阵,然后在相加。这种方式称为广播。
矩阵相乘: 矩阵A和B相乘,矩阵A的列数必须和矩阵B的行数相等。表示为
C
i
,
j
=
∑
A
i
,
k
B
k
,
j
C_{i,j}=\sum A_{i,k}B_{k,j}
Ci,j=∑Ai,kBk,j。还有一种是矩阵元素对应乘积,也就是对应元素的乘积。
知识点三:单位矩阵、逆矩阵和特殊类型的矩阵与向量
单位矩阵: 对角线为1,其他位置为0的矩阵,单位矩阵与任何向量相乘,都不会改变。
A
=
(
A
1
,
1
A
1
,
2
A
2
,
1
A
2
,
2
)
A = \begin{pmatrix} A_{1,1}&A_{1,2}\\ A_{2,1}&A_{2,2}\\ \end{pmatrix}
A=(A1,1A2,1A1,2A2,2)
逆矩阵: 矩阵A的逆矩阵记作
A
−
1
A^{-1}
A−1,满足
A
−
1
A
=
I
n
A^{-1}A=I_{n}
A−1A=In。
对角矩阵: 对角矩阵是在主对角线上含有非零元素,其他位置都为零。对角矩阵的逆矩阵就是将对角线元素取倒数。
对称矩阵: 矩阵是转置和自己相等的矩阵。即
A
=
A
T
A=A^T
A=AT。
单位向量: 是具有单位范数的向量。即
∣
∣
x
∣
∣
2
=
1
||x||_{2}=1
∣∣x∣∣2=1。
正交矩阵: 指行向量和列向量是分别标准正交的方阵。标准正交是矩阵中的行向量或者列向量两两相乘等于0,并且范数为1.正交矩阵满足:
A
T
A
=
A
A
T
=
I
A^TA=AA^T=I
ATA=AAT=I
A
−
1
=
A
T
A^{-1}=A^T
A−1=AT
知识点四:范数
范数是用来衡量向量的大小,形式上,
L
p
L^p
Lp范数可以定义为
∣
∣
x
∣
∣
p
=
(
∑
i
∣
x
i
∣
p
)
1
p
||x||_{p}=(\sum_{i} |x_{i}|^p)^{\frac{1}{p}}
∣∣x∣∣p=(i∑∣xi∣p)p1
其中,
p
≥
1
p\geq1
p≥1。范数是将向量映射到非负值的函数。x的范数可以理解为衡量从原点到点x的距离。范数需要满足如下性质:
- f ( x ) = 0 = > x = 0 f(x)=0=>x=0 f(x)=0=>x=0
- f ( x + y ) ≤ f ( x ) + f ( y ) f(x+y)\leq f(x)+f(y) f(x+y)≤f(x)+f(y)
-
∀
α
∈
R
f
(
α
x
)
=
∣
α
∣
f
(
x
)
\forall \alpha \in \mathbb{R}f(\alpha x)=\left | \alpha \right |f(x)
∀α∈Rf(αx)=∣α∣f(x)
L 2 L^2 L2范数: 又叫欧几里得范数,表示从原点到向量x的欧几里得距离。常用来衡量向量的大小。计算公式为:
∥ x ∥ 2 = ∥ x ∥ = ∑ i x i 2 \left \| x \right \|_{2}=\left \| x \right \|=\sqrt{\sum_{i}x_{i}^{2}} ∥x∥2=∥x∥=i∑xi2
L 1 L^{1} L1范数: 当问题中,零和非零元素之间的差异非常重要时,使用 L 1 L^1 L1范数。表示为
∥ x ∥ 1 = ∑ i ∣ x i ∣ \left \| x \right \|_{1}=\sum_{i}\left | x_{i} \right | ∥x∥1=i∑∣xi∣
L 0 L^0 L0范数: 统计向量中非零元素的个数来衡量向量的大小。但是非零元素的数目并不是范数,因为对向量进行缩放,非零元素的个数不变。因此,使用 L 1 L^1 L1范数替代。
L ∝ L^{\propto } L∝范数: 也叫最大范数。表示向量中具有最大幅值的元素的绝对值。表示为
∥ x ∥ ∝ = m a x i ∣ x ∣ i \left \| x \right \|_{\propto }=\underset{i}{max}\left | x \right |_{i} ∥x∥∝=imax∣x∣i
Frobenius范数: 用来衡量矩阵的大小。表示为
∥ A ∥ F = ∑ i , j A i , j 2 \left \| A \right \|_{F}=\sqrt{\sum_{i,j}A^{2}_{i,j} } ∥A∥F=i,j∑Ai,j2
知识点五:特征值分解与奇异值分解
特征分解: 是将矩阵分解为一组特征向量和特征值。
方阵A的特征向量是指与A相乘后相当于对该向量进行缩放的非零向量。表示为
A
v
=
λ
v
Av=\lambda v
Av=λv
其中,
λ
\lambda
λ为特征值,v为特征向量。我们将特征向量连接成一个矩阵,使得每一列是一个特征向量:
V
=
{
v
(
1
)
,
v
(
2
)
,
.
.
.
,
v
(
3
)
}
V=\left \{ v^{(1)},v^{(2)},...,v^{(3)} \right \}
V={v(1),v(2),...,v(3)}。同样,可以将一个特征值连接成一个向量
λ
=
[
λ
1
,
.
.
.
,
λ
n
]
\lambda =\left [ \lambda _{1},...,\lambda _{n} \right ]
λ=[λ1,...,λn]。因此,A的特征分解可以记作
A
=
V
d
i
a
g
(
λ
)
V
−
1
A=Vdiag(\lambda )V^{-1}
A=Vdiag(λ)V−1
并不是所有的矩阵都是可以特征分解的。所有特征值都是正数的矩阵称为正定。
奇异值分解(SVD): 将矩阵分解为奇异向量和奇异值。每个实数矩阵都有一个奇异值分解。但是不一定存在特征值分解。奇异值分解可将矩阵A分解为
A
=
U
D
V
T
A=UDV^{T}
A=UDVT
其中,A是一个
m
×
n
m\times n
m×n的矩阵,U是一个
m
×
m
m\times m
m×m的矩阵,D是一个
m
×
n
m\times n
m×n的矩阵,V是一个
n
×
n
n\times n
n×n的矩阵。矩阵U和V都是正交矩阵。D是对角矩阵。但不一定是方阵,D的对角线上的元素是矩阵A的奇异值。矩阵U的列向量是左奇异向量,矩阵V的列向量是右奇异向量。
知识点六:Moore-Penrose伪逆
当矩阵是非方阵时,是没有逆矩阵的。当我们求解线性方程
A
x
=
y
Ax=y
Ax=y时。使用A的逆矩阵
A
−
1
A^{-1}
A−1来求解。得到
x
=
A
−
1
y
x = A^{-1}y
x=A−1y
但是,如果矩阵A的行数大于列数,那么上述方程没有解。如果矩阵A的行数小于列数,那么上述方程可能有多个解。因此,我们使用Moore-Penrose伪逆解决这个问题。矩阵A的伪逆定义为
A
+
=
l
i
m
α
→
0
(
A
T
A
+
α
I
)
−
1
A
T
A^{+}=\underset{\alpha \rightarrow 0}{lim}(A^{T}A+\alpha I)^{-1}A^{T}
A+=α→0lim(ATA+αI)−1AT
但是,我们使用如下公式计算
A
+
=
V
D
+
U
T
A^{+}=VD^{+}U^{T}
A+=VD+UT
其中,U、D和V时矩阵A奇异值分解后得到的矩阵。对角矩阵D的伪逆
D
+
D^+
D+是其非零元素取倒数之后在转置得到的。使用伪逆求得的x使得Ax和y的欧几里得距离最小。
知识点七:迹运算和行列式
迹运算: 返回的是矩阵对角元素的和
T
r
(
A
)
=
∑
i
A
i
,
i
Tr(A)=\sum_{i}A_{i,i}
Tr(A)=i∑Ai,i
我们可以使用矩阵的迹运算,描述很多运算
- Frobennins范数: ∥ A ∥ F = T r ( A A T ) \left \| A \right \|_{F}=\sqrt{Tr(AA^{T})} ∥A∥F=Tr(AAT)
- 迹运算在转置运算下是不变的: T r ( A ) = T r ( A T ) Tr(A)=Tr(A^{T}) Tr(A)=Tr(AT)
- 多个矩阵相乘得到的方阵的迹。等于把矩阵中最后一个挪到最前面之后相乘的迹: T r ( A B C ) = T r ( C A B ) = T r ( B C A ) Tr(ABC)=Tr(CAB)=Tr(BCA) Tr(ABC)=Tr(CAB)=Tr(BCA)
- 循环置换后矩阵乘积得到的矩阵形状改变,但是迹运算的结果不变: T r ( A B ) = T r ( B A ) Tr(AB)=Tr(BA) Tr(AB)=Tr(BA)
- 标量在迹运算后仍是自己: a = T r ( a ) a=Tr(a) a=Tr(a)
行列式: 记作 d e t ( A ) det(A) det(A),是一个将方阵A映射到实数的函数。行列式等于矩阵特征值的乘积。用来衡量矩阵参与矩阵乘法后空间扩大或者缩小了多少。如果为0,那么空间至少沿着某一维完全收缩。失去了所有的体积。如果行列式是1。则转换空间保持不变。
总结:
线性代数在机器学习中扮演着重要的角色。因此,了解线性代数的知识是必要的。本章只是介绍了线性代数的一些基本知识。如果有精力,还需要仔细学习线性代数的知识。
友情链接:
github主页:https://github.com/guoyuantao
CSDN博客:https://blog.csdn.net/gyt15663668337
个人博客主页:https://guoyuantao.github.io/
QQ讨论群:218803539