ML中的数学
这里把对应的基础概念进行了总结,后面会一些概念进行补充,后面会对这些概念进行工程上的使用,后面会用pytorch进行实现。
线性代数
线性代数面对的是连续数学而不是离散数学,在机器学习中占有很大的比重,线性代数的数学概念比大学所接触的要多很多概念,大学那些线性代数是不足以去满足机器学习要求的。
标量,矩阵,张量
这里只是写一些基础概念,对于大学甚至考研期间经常用的一些的基础知识就不进行赘述。
标量
标量是一个单独的数字,不是1*1的矩阵
向量
- 向量:是n*1,或者1×n,如果我们把向量看成空间上的点,那么每个数字就是对应坐标轴的坐标
x = [ x 1 x 2 . x i ] x = \begin{bmatrix}x_1\\x_2\\.\\x_i \end{bmatrix} x=⎣⎢⎢⎡x1x2.xi⎦⎥⎥⎤
- 向量的下标表示指引,我们通常会把向量进行重组,或者根据序列号进行索引, 代码中我们也会用
x
−
1
x_{-1}
x−1来表示最后一位, 用下面表示除了集合S以外所有的向量
x − S x_{-S} x−S
矩阵,张量
-
一个n*n的数组,每个元素由两个索引进行确定,标记为大写字母,其中有一个矩阵的概念,转置进行镜像翻转
-
通常我们把超过二维的称之为张量
A i , j , k A_{i,j,k} Ai,j,k -
广播🚡 把向量b和A的每一行相加
C i , j = A i , j + b j C_{i,j} = A_{i,j}+b_{j} Ci,j=Ai,j+bj
线性相关与生成子空间-用于矩阵间的互相表示
方程组的解
如果A的逆矩阵存在,那么对于任意b,Ax=b恰好存在一个解
对于方程组而言b却不一定完全有解或者有多个解
如果x,y都是方程组的解,那么
z
=
α
x
+
(
1
−
α
)
y
z = \alpha x+(1-\alpha)y
z = αx+(1−α)y
一定是方程组的解,A分解为向量的线性组合,就是生成子空间,所以这里的主要就是解方程
范数-用于描述矩阵(向量)的大小xuexi
我们用范数去衡量一个向量的大小,而不是n维时候的行列式,对于
L
P
L^P
LP
∣
∣
x
∣
∣
p
=
(
∑
i
n
∣
x
i
∣
p
)
1
p
||x||_p = (\sum_i^n|x_i|^p)^{1\over p}
∣∣x∣∣p=(i∑n∣xi∣p)p1
然后我们就可以用一些数学的方法对其进行使用,比如一些不等式运算,满足线性,其中p=2的时候,称之为欧几里得范数。
p
=
∞
p=\infty
p=∞时候,称xiangliang之为最大范数。 深度学习中我们也会用到Frobenius范数来衡量矩阵的大小
∣
∣
x
∣
∣
F
=
∑
i
,
j
n
A
i
,
j
2
||x||_{F} = \sqrt {\sum_{i,j}^nA_{i,j}^2}
∣∣x∣∣F=i,j∑nAi,j2
特征分解
也就是矩阵里面的特征值运算,分解为几个可以表示矩阵的量,其中A的特征向量这么运算
A
v
=
λ
v
Av = \lambda v
Av=λv
我们把
λ
\lambda
λ称之为特征值(标量),v为特征向量。
奇异值分解
我们还有另外一种分解向量的办法,分为奇异向量和奇异值(奇异种子233333),也会得到和特征分解一样的信息。然而,奇异值分解更广泛。
这个是特征值分解,其中V是特征向量构成的矩阵,r是特征值构成的向量矩阵
A
=
V
d
i
a
g
(
λ
)
V
−
1
A= Vdiag(\lambda)V^{-1}
A=Vdiag(λ)V−1
对于奇异分解:其中U和V都是正交矩阵,D为对角矩阵
A
=
U
D
V
T
A = UDV^T
A=UDVT
- 左奇异矩阵:U的列向量,是 A A T AA^T AAT的特征向量
- 右奇异矩阵:V的列向量,是 A T A A^TA ATA的特征向量
Moore-Penrose 伪逆
对于非方矩阵A,我们就无法计算 A − 1 A^{-1} A−1,也无法解一些方程
这里定义伪逆的概念
A
+
=
l
i
m
α
−
0
(
A
T
A
+
α
I
)
−
1
A
T
A^+ = lim_{\alpha-0} (A^TA+\alpha I)^{-1}A^T
A+=limα−0(ATA+αI)−1AT
由于计算的时候比较困难,引入极限,所以计算时候基本使用如下的计算方式,这里的参数对应奇异分解的矩阵
A
+
=
V
D
+
U
T
A^+ = VD^+U^T
A+=VD+UT
迹
我们把对角线之和称之为逆
T
r
(
A
)
=
∑
i
A
i
,
i
Tr(A) = \sum_i A_{i,i}
Tr(A)=i∑Ai,i
迹运算也有很多用,比如用于Frobenius范数:
∣
∣
A
∣
∣
F
=
T
r
(
A
T
A
)
||A||_F = \sqrt {Tr(A^TA)}
∣∣A∣∣F=Tr(ATA)
这里就是全部的线性代数的基础概念