#机器学习--补充数学基础--线性代数
引言
本系列博客旨在为机器学习(深度学习)提供数学理论基础。因此内容更为精简,适合二次学习的读者快速学习或查阅。
1、张量(Tensor)
一般的,一个数组中的元素分布在若干维坐标的规则网格中,我们称之为张量,张量 A A A 中的坐标为 ( i , j , k ) (i,j,k) (i,j,k) 的元素记作 A i , j , k A_{i,j,k} Ai,j,k
2、广播(broadcasting)
我们允许矩阵和向量相加,产生另一个矩阵: C = A + b C=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 b b 和矩阵 A A A 的每一行相加,这种简写方法使我们无须在加法操作前定义一个将向量 b b b 复制到每一行而生成的矩阵,这种隐式地复制向量 b b b 到很多位置的方式,称为广播。
3、线性变换
在进行线性变换 y = A x y=Ax y=Ax 的时候,若线性变换矩阵 A A A 为正交矩阵则表示对 x x x 进行旋转,若线性变换矩阵 A A A 为对角矩阵则表示对 x x x 进行拉伸。
4、Hadamard乘积
设 A , B ∈ C m ∗ n A,B\in C^{m*n} A,B∈Cm∗n 且 A = { a i j } A=\{a_{ij}\} A={aij} , B = { b i j } B=\{b_{ij}\} B={bij} ,称 m ∗ n m*n m∗n 矩阵 [ a 11 b 11 a 12 b 12 … a 1 n b 1 n a 21 b 21 a 22 b 22 … a 2 n b 2 n ⋮ ⋮ ⋮ a m 1 b m 1 a m 2 b m 2 … a m n b m n ] \begin{bmatrix} a_{11}b_{11} & a_{12}b_{12} & \dots & a_{1n}b_{1n} \\ a_{21}b_{21} & a_{22}b_{22} & \dots & a_{2n}b_{2n} \\ \vdots & \vdots & & \vdots \\ a_{m1}b_{m1} & a_{m2}b_{m2} & \dots & a_{mn}b_{mn} \end{bmatrix} a11b11a21b21⋮am1bm1a12b12a22b22⋮am2bm2………a1nb1na2nb2n⋮amnbmn 为矩阵 A A A 和 B B B 的Hadamard乘积,记作 A ⊙ B A\odot B A⊙B
5、范数(norm)
我们通常使用范数的函数来衡量向量的大小,形式上,
L
p
L^{p}
Lp 范数的定义如下:
∣
∣
x
∣
∣
p
=
(
∑
i
∣
x
i
∣
p
)
1
p
||x||_{p}=\left (\sum_{i}|x_{i}|^{p}\right)^{\frac{1}{p}}
∣∣x∣∣p=(i∑∣xi∣p)p1 其中
p
∈
R
p\in R
p∈R ,
p
≥
1
p\ge1
p≥1 。
当
p
=
2
p=2
p=2 时,
L
2
L^{2}
L2 范数称为欧几里得范数,它表示从原点出发到向量
x
x
x 确定的点的欧几里得距离,简写为
∣
∣
x
∣
∣
||x||
∣∣x∣∣ 。
平方
L
2
L^{2}
L2 范数也经常用来衡量向量的大小,可以简单地通过点积
x
T
x
x^{T}x
xTx 计算,平方
L
2
L^{2}
L2 范数在数学和计算上都比
L
2
L^{2}
L2 范数本身更方便,但其在原点附近增长的十分缓慢。因此当机器学习问题中零和非零元素之间的差异非常重要时,通常会使用
L
1
L^{1}
L1 范数。
另一个经常在机器学习中出现的范数是
L
∞
L^{\infty}
L∞ 范数,也被称为最大范数,这个范数表示向量中具有最大幅值的元素的绝对值:
∣
∣
x
∣
∣
∞
=
max
i
∣
x
i
∣
||x||_{\infty}=\max_{i}|x_{i}|
∣∣x∣∣∞=imax∣xi∣ 有时候我们可能也希望衡量矩阵的大小,通常使用F(Frobenius)范数,即
∣
∣
A
∣
∣
F
=
∑
i
,
j
A
i
,
j
2
||A||_{F}=\sqrt{\sum_{i,j}A^{2}_{i,j}}
∣∣A∣∣F=i,j∑Ai,j2
6、特征分解
我们对12进行分解质因数,即
12
=
2
∗
2
∗
3
12=2*2*3
12=2∗2∗3 ,从而得知12不能被5整除,但可以被3整除。正如我们可以通过分解质因数得出整数的一内在些性质,我们也可以通过分解矩阵来发现矩阵表示成数组元素时不明显的函数性质。
单位特征向量,如果
x
x
x 是
A
A
A 的特征向量,那么任何缩放后的向量
s
x
sx
sx 也是
A
A
A 的特征向量,此外
x
x
x 和
s
x
sx
sx 具有相同的特征值,因此通常我们讨论特征向量时只考虑单位特征向量。
假设矩阵
A
A
A 有
n
n
n 个线性无关的单位特征向量
{
x
1
,
…
,
x
n
}
\{x_{1},\dots,x_{n}\}
{x1,…,xn} ,对应着特征值
{
λ
1
,
…
,
λ
n
}
\{\lambda_{1},\dots,\lambda_{n}\}
{λ1,…,λn} ,我们将特征向量连接成一个矩阵,使得每一列是一个特征向量:
V
=
[
x
1
,
…
,
x
n
]
V=[x_{1},\dots,x_{n}]
V=[x1,…,xn] 。类似地,我们也可以将特征值连接成一个向量
λ
=
[
λ
1
,
…
,
λ
n
]
\lambda=[\lambda_{1},\dots,\lambda_{n}]
λ=[λ1,…,λn] 。因此
A
A
A 的特征分解可以记作
A
=
V
d
i
a
g
(
λ
)
V
T
A=Vdiag(\lambda)V^{T}
A=Vdiag(λ)VT 所有特征值都是正数的矩阵称为正定;所有特征值都是非负数的矩阵称为半正定。同样地,所有特征值都是负数的矩阵称为负定;所有特征值都是非正数的矩阵称为半负定。其中半正定矩阵还满足
∀
x
,
x
T
A
x
≥
0
\forall x,x^{T}Ax\ge0
∀x,xTAx≥0 ,正定矩阵还保证
x
T
A
x
=
0
⇒
x
=
0
x^{T}Ax=0\Rightarrow x=0
xTAx=0⇒x=0 。
7、奇异值分解(singular value decomposition,SVD)
由于特征分解只能适用于方阵,且某些情况下会涉及复数而非实数,因此为了能够对任意实数矩阵进行分解,提出了另一种分解方式,即奇异值分解。与特征分解类似,奇异值分解将矩阵 A A A 分解成三个矩阵的乘积: A = U D V T A=UDV^{T} A=UDVT 其中 A A A 是一个 m ∗ n m*n m∗n 的矩阵, U U U 是一个 m ∗ m m*m m∗m 的正交矩阵, D D D 是一个 m ∗ n m*n m∗n 的对角矩阵, V V V 是一个 n ∗ n n*n n∗n 的正交矩阵,对角矩阵 D D D 对角线上的元素称为矩阵 A A A 的奇异值,矩阵 U U U 的列向量称为左奇异向量,矩阵 V V V 的列向量称为右奇异向量。
8、穆尔-彭罗斯广义逆矩阵(Moore-Penrose generalized inverse matrix)
一般情况下,只有方阵才可能有逆矩阵,但某些情况我们需要求一个非方阵的逆矩阵,因此需要引入穆尔-彭罗斯广义逆矩阵,其定义如下: A + = lim α ↘ 0 ( A T A + α I ) − 1 A T ) A^{+}=\lim_{\alpha\searrow0}(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 U U 、 D D D 和 V V V 是矩阵 A A A 奇异值分解后得到的矩阵,对角矩阵 D D D 的伪逆 D + D^{+} D+ 是其非零元素取倒数之后再转置得到的。
9、迹运算
定义:迹运算返回的是矩阵对角元素的和: T r ( A ) = ∑ i A i , i Tr(A)=\sum_{i}A_{i,i} Tr(A)=i∑Ai,i
性质:
1)
T
r
(
A
)
=
T
r
(
A
T
)
Tr(A)=Tr(A^{T})
Tr(A)=Tr(AT)
2)
∣
∣
A
∣
∣
F
=
T
r
(
A
A
T
)
||A||_{F}=\sqrt{Tr(AA^{T})}
∣∣A∣∣F=Tr(AAT)
3)
d
f
(
x
)
=
d
(
T
r
(
A
x
)
)
=
A
T
df(x) = d(Tr(Ax))=A^{T}
df(x)=d(Tr(Ax))=AT
4) 标量的迹运算结果是它本身:
a
=
T
r
(
a
)
a=Tr(a)
a=Tr(a)
5) 循环置换矩阵乘积,迹运算结果不变:
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)
10、条件数
条件数指的是函数相对于输入的微小变化而变化的快慢程度。条件数越大,变化程度越快,即是病态的。输入被轻微扰动而迅速改变的函数对于科学计算来说可能是有问题的,因为输入中的舍入误差可能导致输出的巨大变化。矩阵的条件数计算如下: c o n d ( A ) = ∣ ∣ A ∣ ∣ × ∣ ∣ A − 1 ∣ ∣ cond(A)=||A||\times ||A^{-1}|| cond(A)=∣∣A∣∣×∣∣A−1∣∣特殊地,如果 A 能够进行特征分解,则: c o n d ( A ) = max i , j ∣ λ i λ j ∣ cond(A)=\max_{i,j}|\frac{\lambda_{i}}{\lambda_{j}}| cond(A)=i,jmax∣λjλi∣
1962

被折叠的 条评论
为什么被折叠?



