深度学习第二章-线性代数笔记

本章主要介绍与深度学习相关的线性代数知识。

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乘积,记为 AB
  • 两个维数相同的向量 x y 点积(dot product),可看作矩阵乘积 xTy 。表示对应元素相乘后求和得到标量。

2.3单位矩阵和逆矩阵

  • 单位矩阵(identity matrix):所有沿主对角线的元素都是1,其他位置元素为0,表示为 In 。任意向量和单位矩阵相乘,都不会改变。latex矩阵写法,latex矩阵写法[]

    100010   001133641223486   672288=133641223486   672288(4)

  • 矩阵 A 的逆记作 A1 ,其定义为: A1A=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 范 数:
      x1=i|xi|(6)
    • p= ,最大范数(max norm),表示最大幅值的元素绝对值:
      x=maxx|xi|(7)
    • 深度学习中,衡量矩阵大小用Frobenius范数(Frobenius norm):
      AF=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)
    即:
    A1=AT(11)

2.7 特征分解

  • 特征向量和特征值查看如何理解特征值,理解了之后具体看计算例子特征值计算。
    在这里说一下特征向量(eigenvector) v ,矩阵 A 特征值(标量) λ 。满足:

    Av=λv(11)

    举例: A=[2231] ,按特征值计算,解得

    λ=1,4
    (具体参考上文第二篇[特征值计算](http://blog.csdn.net/u010182633/article/details/45921929)),当 λ=1v=[11] ,所以形式上:
    [2231][11]=λ[11]
    可以计算得到上式左侧结果为 [11] ,和 [11] 在方向上相同,只是乘了长度**特征值 λ **

  • 特征分解(eigendecomposition):

    A=Vdiag(λ)V1
    ,根据如何理解特征值描述:

    特征值就是运动的速度
    特征向量就是运动的方向
    深度学习第二章-线性代数笔记_第1张图片

    结合上文看,在求解特征值时用到了特征分解。

  • 所有特征值都是非负数的矩阵称为半正定(positive semidefinite)

    x,xTAx0

  • 所有特征值都是正数的矩阵称为正定(positive definite)

    x,xTAx0 ,且若 xTAx=0 x=0

  • 所有特征值都是负数的矩阵称为负定(negative definite)

  • 所有特征值都是非负数的矩阵称为半负定(negative semidefinite)

2.8奇异值分解

与特征分解类似,奇异值分解(singular value decomposition,SVD),将矩阵分解成奇异向量(singular vector)和奇异值(singular value),将 A 分解为三个矩阵的乘积:

A=UDVT
假设 A m×n ,那么 U m×m V n×n D 对角线上的元素称为矩阵 A 奇异值 U V 分别为 左奇异向量,右奇异向量

2.9 Moore-Penrose伪逆

由于非方矩阵没有逆矩阵定义。利用2.8节奇异值分解,对矩阵 A 的伪逆:

A+=VD+UT
其中 D+ 是通过 D 对角矩阵非零元素取倒数之后转置得到。可求:
x=A+y

  • 若矩阵 A 行数大于列数,一般逆方法没有解,通过伪逆使得 Ax y 的欧几里得距离 Axy2 最小。
  • 若矩阵 A 列数大于行数,可能有多个解,通过 x=A+y 的解欧几里得距离 x2 最小。

2.10 迹运算

迹运算返回矩阵对角的和:

Tr(A)=iAi,i

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 反射

随时补充。

你可能感兴趣的:(深度学习笔记)