本章主要介绍与深度学习相关的线性代数知识。
2.1 标量、向量、矩阵和张量
- 标量 (scalar) 、向量 (vector)、矩阵 (matrix)
- 张量 (tensor) :一般地,一个数组中的元素分布在若干维坐标的规则网格中,称之为张量。
- 转置 (transpose) : 以主对角线(左上到右下)为轴进行镜像操作。将矩阵
A
转置表示为
AT
,定义如下:
(AT)i,j=Aj,i(1)向量可以看作只有一列的矩阵。
- 两个矩阵相加指矩阵形状相同,对应位置的元素相加: C=A+B ,其中 Ci,j=Ai,j+Bi,j 。
- 标量和矩阵相乘或相加,指标量与矩阵每个元素相乘。
在深度学习中,允许矩阵和向量相加: C=A+b ,表示向量 b 和矩阵 A 的每一行相加(需要列数相同),这种隐式地复制向量 b 到很多位置的方式称为广播(broadcasting)。
import numpy as np A = np.array([[1,2,3],[4,5,6]]) b = [1,1,1] C = A+b print(C) [[2 3 4] [5 6 7]] bb = [1,1] print (A + bb) ValueError: operands could not be broadcast together with shapes (2,3) (2,)
2.2 矩阵和向量相乘
- 元素标准乘积:矩阵
A
的形状是
m×n
,矩阵
B
的形状是
n×p
,那么矩阵
C
的形状是
m×p
,矩阵乘法:
C=AB(2)具体地:Ci,j=∑kAi,kBk,j(3)
- 元素对应乘积(element-wise product)或哈达玛Hadamard乘积,记为 A⊙B
- 两个维数相同的向量 x 和 y 点积(dot product),可看作矩阵乘积 xTy 。表示对应元素相乘后求和得到标量。
2.3单位矩阵和逆矩阵
单位矩阵(identity matrix):所有沿主对角线的元素都是1,其他位置元素为0,表示为 In 。任意向量和单位矩阵相乘,都不会改变。latex矩阵写法,latex矩阵写法[]
⎡⎣⎢⎢⎢⎢⎢10⋮001⋮0⋯ ⋯ ⋱⋯ 00⋮1⎤⎦⎥⎥⎥⎥⎥⎡⎣⎢⎢⎢⎢⎢1336⋮412234⋮86⋯ ⋯ ⋱⋯ 6722⋮88⎤⎦⎥⎥⎥⎥⎥=⎡⎣⎢⎢⎢⎢⎢1336⋮412234⋮86⋯ ⋯ ⋱⋯ 6722⋮88⎤⎦⎥⎥⎥⎥⎥(4)
矩阵 A 的逆记作 A−1 ,其定义为: A−1A=In 。
2.4 线性相关和生成子空间
2.5范数
- Latex输入双竖线:一道杠用 |x| 就行,或 \vert,或者左右分别用 \lvert、\rvert,两道杠用 \Vert,或左右用 \lVert、\rVert
- boldmath 公式加粗斜体但是mathjax不支持? 用\vec加个箭头
-
Lp
范数定义:
∥x⃗ ∥p=(∑i|xi|p)1p(5)
- 当 p=2 时, L2 称为欧几里得范数(Euclidean norm),表示从原点出发到向量 x⃗ 的欧几里得距离,通常简化为 ∥x∥ 。
- 当
p=1
时,
L1
范 数:
∥x∥1=∑i|xi|(6)
- 当
p=∞
,最大范数(max norm),表示最大幅值的元素绝对值:
∥x∥∞=maxx|xi|(7)
- 深度学习中,衡量矩阵大小用Frobenius范数(Frobenius norm):
∥A∥F=∑i,jA2i,j−−−−−−√(8),类似于向量的 L2 范数。
2.6特殊矩阵和向量
- 对角矩阵(diagonal matrix)只在主对角线上有非零元素。
- 单位向量(unit vector)是具有单位犯数(unit norm)的向量:
∥x⃗ ∥2=1(9),
如果 x⃗ Ty⃗ =0 ,则 x⃗ 和 y⃗ 正交(orthogonal),夹角 90∘ 。 - 标准正交(orthonormal):这些向量不仅互相正交,并且范数都为1。
- 正交矩阵(orthogonal matrix)指行向量和列向量是分别标准正交的方阵:
ATA=AAT=I(10)即:A−1=AT(11)
2.7 特征分解
特征向量和特征值查看如何理解特征值,理解了之后具体看计算例子特征值计算。
在这里说一下特征向量(eigenvector) v ,矩阵 A ,特征值(标量) λ 。满足:Av=λv(11)举例: A=[2231] ,按特征值计算,解得
λ=−1,4(具体参考上文第二篇[特征值计算](http://blog.youkuaiyun.com/u010182633/article/details/45921929)),当 λ=−1,v=[−11] ,所以形式上:
[2231][−11]=λ[−11]可以计算得到上式左侧结果为 [1−1] ,和 [−11] 在方向上相同,只是乘了长度**特征值 λ **特征分解(eigendecomposition):
A=Vdiag(λ)V−1,根据如何理解特征值描述:特征值就是运动的速度
特征向量就是运动的方向
结合上文看,在求解特征值时用到了特征分解。
所有特征值都是非负数的矩阵称为半正定(positive semidefinite)
∀x,xTAx≥0
所有特征值都是正数的矩阵称为正定(positive definite)
∀x,xTAx≥0 ,且若 xTAx=0 , x=0
所有特征值都是负数的矩阵称为负定(negative definite)
- 所有特征值都是非负数的矩阵称为半负定(negative semidefinite)
2.8奇异值分解
与特征分解类似,奇异值分解(singular value decomposition,SVD),将矩阵分解成奇异向量(singular vector)和奇异值(singular value),将 A 分解为三个矩阵的乘积:
2.9 Moore-Penrose伪逆
由于非方矩阵没有逆矩阵定义。利用2.8节奇异值分解,对矩阵 A 的伪逆:
- 若矩阵 A 行数大于列数,一般逆方法没有解,通过伪逆使得 Ax 和 y 的欧几里得距离 ∥Ax−y∥2 最小。
- 若矩阵 A 列数大于行数,可能有多个解,通过 x=A+y 的解欧几里得距离 ∥x∥2 最小。
2.10 迹运算
迹运算返回矩阵对角的和:
2.11 行列式
记作 det(A) ,行列式等于矩阵特值的乘积。就是按顺序右下方向元素乘后的和,减去左下方向元素相乘后的和,具体运算查书或者百度。
2.12 实例:主成成分分析(PCA)
主成成分分析(principal components analysis,PCA),有损压缩。
具体原理是减去均值后,根据上述特征向量及特征值的分解,找到信息量最大的某些特征,将其提取,实现了有损压缩。
主成成分分析原理详解,可以结合特征向量和特征值的原理一起看,如2.7节中的几篇特征值和特征向量的解释。
————————————————–
- SVD支持任意矩阵伪逆
- 累计贡献率(方差,即信息量) >85%
- PCA降维、压缩(06年之前)只解决线性,非线性t-SNE(cs231n有介绍,网易云课堂2016年版本 (课时18吧大概)卷积神经网络可视化部分)->流型:非线性方法提取内部结构
- 人工:霍夫曼编码;自动:线性:PCA;非线性:t-SNE(12年Hinton高维可视化);autoencoder
- 矩阵的几何意义,实际上是对坐标的缩放切变旋转等:见博客
- 计算时通常将大矩阵分解成若干个小矩阵,提高计算效率
- 行列式>1 :放大
- 行列式=0 降维,不可逆
- 0<行列式<1 缩小
- 行列式<0 反射
随时补充。