最近才开始看《深度学习》草丛书, 现在写下ML中需要用到的线性代数的概念
一、数学概念
-
标量、向量、矩阵和张量
-
标量: 一个单独的数。 介绍标量时,会明确这个数是数据什么数, “令x属于R(实数)表示一条直线的斜率”
-
向量:一列数, 这列数是有序排列的名。可以根据数据顺序来确定数字,可以理解为java数组、python列表,都是有顺序的,可以通过索引访问具体数据。简单表示: , 矩阵表示: ,理解为Python列表 a= [x, y, z](图来自百度百科“向量”关键词)
-
矩阵:二维数组,有两个索引确定,常用大写表示A (Ai,j 表示 第i行,第j列)
-
张量:多维数组,一个数组的元素分布在多维空间中,张量A记做Ai,j,k (三个维度 i,j和k)
二、线性代数
-
矩阵和向量
-
向量
CS里,向量是一组有序的数/列表,如:
其含义是,点从原点(0,0)出发,沿着X轴走1个单位,再沿着Y轴走2个单位,到达终点(下图粗略表示下)。
-
线性组合、张成空间与基
线性组合: 任意向量可以由基向量表示
如下: s = av + bw (a,b属于实数R)
张成空间:线性组合组成的空间
例如 s = av + bw (a,b属于实数R) 中,不同a和b生成的S向量不同,这些向量会组成如下结果:
A. 若v向量和 w向量共线(线性相关), 那么张量空间就是这条直线
B. 若S为一个原点(0,0),那么张量空间就是一个点
C. 若v和w不共线, 张量空间就是一个平面
由上述二维空间,可以推理三维空间内的,张量空间是一组平面(平面束)
-
矩阵
注: 上面这两个图来自 3Blue1Brown的线性代数视频, 地址:
https://www.bilibili.com/video/av6731067/?p=3
-
矩阵的转置和逆矩阵
-
矩阵的转置: 矩阵的转置是以对角线(主对角线,左上角到右下角)为轴做镜像
如下图所示:
主对角线数据(1,4,8)如下图红线, 以主对角线为轴,做镜像.
原始:a[0][1] = 3, 转置后: a[1][0] = 3
原始:a[0][2] = 6, 转置后: a[2][0] = 6
-
矩阵的逆(逆矩阵):
定义:
(注:图来自数学乐对逆矩阵的简介)
单位矩阵 I:单位矩阵就是主对角线各值都为1的方阵(1×1, 2×2, 3×3,....., n×n)
矩阵A=
, 如何求逆矩阵? 调换 a和d的位置,且b和c前加负号(-),再除以矩阵A的行列式。
问题换了,如何计算矩阵的行列式:
举例:
有如下2×2矩阵,
, 要计算这个矩阵的行列式:3×8-6×9 = 24-54=- 30, 那么这个矩阵的逆矩阵:
(-1/30) ×
得到结果,结果这就不写了。
如何验证对不对? 逆矩阵 × 矩阵 =? 单位矩阵 来判断
3.矩阵、向量运算
-
矩阵和矩阵乘法
矩阵乘法要求 矩阵A的列数 = 矩阵B的行数
设有如下2×2矩阵A和矩阵B
,
解释如下:
“ 矩阵A的列数 = 矩阵B的行数” 解释,比如是如下矩阵,就不能相乘:
矩阵乘法的性质:
矩阵具有分配率 A(B + C) = AB + AC, 矩阵乘积也服从: A(BC) = (AB)C
矩阵不具有交换律 A×B ≠ B×A
矩阵乘积的转置等于矩阵转置的乘积:(AB).T = A.T ×B.T ( 用的是python numpy矩阵转置的写法 np.array.T)
向量点积的性质:
交换律: x.T y = y.T x
“向量点积为标量,标量转置为自身”得到:x.T y = (x.T y).T = y.T x
-
矩阵×向量:
例如有如下矩阵A和向量B, 向量的矩阵表示法就是如下B所示
A矩阵 3×2,向量B为 2乘以1 , 相乘结果为3×1的矩阵,结果如下
-
矩阵 + 向量
矩阵 A + 向量b = 矩阵 A 行数据 + 向量 b 行数据
A[0][x] + b[0] [ A[0][0] + b[0], A[0][1] + b[0], ..... , A[0][n] + b[0],
A + b = A[1][x] + b[1] => A[1][0] + b[1], A[1][1] + b[1], .... , A[1][n] + b[1],
A[2][x] + b[2] A[n][0] + b[n], A[n][1] + b[n], ... , A[n][n] + b[n] ]
-
线性方程的矩阵表示
一元线性方程,就可以表示为 Ax = b , A属于R的m×n维度的矩阵,b是属于R的向量,x为要解的未知向量。
那么多远方程怎么表示? 如下:
如何求解Ax = b,就要用到前面说的逆矩阵,推到如下:
两边乘以矩阵A的逆矩阵, 然后左侧成为单位矩阵I × x,单位矩阵I ×X = X,得到如下最后的结果 X=A-1b
4.线性相关和生成子空间
X=A-1b, 当且A的逆矩阵A-1存在时,对于确定的向量b,式子才有解。但有些方程组而言,对于一些b,不存在解/存在无数个解,存在(1,+∞
)个解不会发生,因为x和y都是某方程组的解,则有:在 z= αx + (1-α)y (α为任意实数R)也是方程组的解。
将A矩阵的列向量看做从原点出发的不同方向,确定有多少种方法可以达到b
可以这样理解,假设上图 a向量、c向量和d向量是矩阵A的列向量, 那么就会有三个常数,使得
所以就成
为线性组合,(每个向量×标量系数)的和。
-
生成子空间: 一组向量的生成子空间,指原始向量线性组合后所能抵达的点的集合
确定Ax=b有没有解,就是判断b是不是在A的列向量的生成子空间中,这个特殊的生成子空间被称为A的列空间/A的值域。
-
线性无关:矢量空间的一组元素中,若没有矢量可用有限个其他矢量的线性组合表示,则为线性无关,反之线性相关
要使矩阵可逆,必须保证Ax=b对于每个b值最多有1个解,为此,必须保证A矩阵组多含有m个列向量,意味着 矩阵A必须为方阵(m = n),且所有列向量都是线性无关的。
一个列向量线性相关的的方阵被称为奇异的,若矩阵A不是方阵或者是一个奇异的方阵,方城仍有可能有解。
(上面是抄书的,似懂非懂的。。。)
5.范数
范数: 范式是衡量向量的大小, 是将向量映射到非负值的函数。
范数是满足如下条件的函数:
A. f(x) = 0 => x = 0
B. f(x + y) ≤ f( x)+ f ( y ) (三角不等式 )
C. 存在α属于实数R, f(αx) = |α| f(x)
-
L0范数: p = 0, 非零元素的个数
-
L1 范数 : p=1时, 向量绝对值之和
-
欧几里得范数(L2范数): p = 2时, 为欧几里得范数, 表示从原点出发到向量的欧几里得距离
-
L∞ 最大范数:
-
L-∞ 最小范数:
-
Frobenius范数(深度学习常用的衡量矩阵大小的范数):
6. 特殊矩阵和向量
-
对角矩阵:主对角线含有非零元素,其他都为0。 对于i×j维度的对角矩阵D, 当且仅当 对于 i≠j, Dij = 0.(单位矩阵也是对角矩阵)
示例:
-
单位向量:具有单位范数的向量,即:
如果x.T y = 0 , 那么 向量x与向量y正交, 夹角90°。若向量x与y都为单位向量x.T y = 0,且则称其为标准正交
-
正交矩阵:
则有:
(特征分解、奇异值分解、迹运算、行列式、主成分分析 后面再补)