【深度学习(deep learning)】花书第二章 线性代数 读书笔记


第二章 线性代数

  • 【深度学习(deep learning)】花书第二章 线性代数 读书笔记
  • 前言
  • 一、基本概念
  • 二、矩阵运算
  • 三、特殊矩阵与向量
  • 四、范数
  • 五、特征分解与奇异值分解
  • 1.特征分解
  • 2.奇异值分解(SVD)
  • 3.伪逆
  • 六、主成分分析 PCA
  • 参考资料



前言


打基础,阅读花书,感觉一次性啃不动。看一点算一点,写一点笔记留作纪念。以便日后查看与回顾。第一章引言就不写了,从第二章开始。第二章回顾线性代数等数学基础。 日期:2020.11.17-2020.11.18


以下是正式内容。

一、基本概念

  1. 标量(scalar):一个数,小写+斜体表示。
  2. 向量(vector):一组数(通常是列向量,也就是一列数,可以看作是只有一列的矩阵)。有序排列,大小为数的个数,用n表示,可以按照标号索引。可以使用标号的子集 S或者标号的子集的补集 -S 同时索引多个元素。小写+粗体表示。向量中的元素用小写+斜体+脚标表示。
  3. 矩阵(matrix):二维数组。二维索引,分成 行 与 列。符号“:”代表整行或者整列。标量可以看作是1*1的矩阵。
    花书的深度学习 花书 deep learning_花书的深度学习
  4. 张量(tensor):三维及以上的数组(三维及以上的索引)。二维的张量是矩阵,一维的是向量。

二、矩阵运算

  1. 转置:以对角线为轴的镜像翻转。特别地,对于标量a,
    花书的深度学习 花书 deep learning_matrix_02
  2. 矩阵加法:对应元素相加。
  3. 广播:矩阵加向量,将向量分别和矩阵的每一行相加。
  4. 数乘:矩阵乘/加标量,每个元素都进行乘/加操作。
  5. 矩阵乘积:矩阵乘法。可以分解为行和列的点积。
  6. 矩阵元素对应乘积(Hadamard 乘积):矩阵对应元素相乘。
    花书的深度学习 花书 deep learning_线性代数_03
  7. 点积:向量对应元素相乘后求和。即 花书的深度学习 花书 deep learning_花书的深度学习_04
  8. 矩阵乘积的性质:分配律,结合律,不满足交换律。点积满足交换律。
  9. 求逆(逆矩阵运算):满足
    花书的深度学习 花书 deep learning_线性代数_05
  10. 行列式:将方阵映射到实数的函数。记作花书的深度学习 花书 deep learning_深度学习_06
    行列式的绝对值可以衡量矩阵参与乘法后空间扩大或收缩的程度,如果为0,则说明空间至少沿着某一维完全收缩(不满秩,对应向量组存在线性相关)。如果为1,则保持空间体积不变。
  11. 迹运算:矩阵对角元素之和。特别地,矩阵连乘中,循环变换矩阵位置,运算结果矩阵的迹不变。 标量的迹是其本身。
    花书的深度学习 花书 deep learning_matrix_07花书的深度学习 花书 deep learning_线性代数_08
  12. 正交:两个向量的内积为0,则两向量相互正交。
  13. 标准正交:两向量正交,且都为模都为1.

三、特殊矩阵与向量

  • 单位矩阵:主对角元素为1,其余为0.
    花书的深度学习 花书 deep learning_花书的深度学习_09
  • 对角矩阵:主对角元素含非零元素,其余为0.
    花书的深度学习 花书 deep learning_线性代数_10
  • 对称矩阵:
    花书的深度学习 花书 deep learning_matrix_11
  • 实对称矩阵:元素为实数,且对称。
  • 单位向量:模(范数)为1的向量。长度为1.
    花书的深度学习 花书 deep learning_花书的深度学习_12
  • 正交矩阵:行向量和列向量分别标准正交的方阵。求逆很好求。
    花书的深度学习 花书 deep learning_机器学习_13花书的深度学习 花书 deep learning_matrix_14
  • 正定矩阵:所有特征值全都是正数的矩阵。保证:
    花书的深度学习 花书 deep learning_花书的深度学习_15花书的深度学习 花书 deep learning_机器学习_16
  • 半正定矩阵:所有特征值都是非负数的矩阵。保证:
    花书的深度学习 花书 deep learning_花书的深度学习_15
  • 负定(半负定)矩阵:所有特征值都是负数(非正数)的矩阵。

四、范数

范数(norm)来衡量向量的大小。将向量映射到非负值的函数。

  • Lp 范数定义为:p>=1
    花书的深度学习 花书 deep learning_花书的深度学习_18
  • L2范数:欧几里得范数。表示到原点的欧几里得距离。二维图像是一个圆。常计算平方L2范数。
    花书的深度学习 花书 deep learning_matrix_19
  • L1范数:用于区分零与非零元素时常用,希望获得稀疏解的时候使用。作为非零元素数目的替代函数。
    花书的深度学习 花书 deep learning_机器学习_20
  • L0范数:非零元素的个数。不严格的定义。
  • L∞范数:也称最大范数,表示具有最大幅值的元素的绝对值。
    花书的深度学习 花书 deep learning_深度学习_21
  • Frobenius 范数(Frobenius norm):衡量矩阵大小的范数。类似向量的L2范数形式。
    花书的深度学习 花书 deep learning_matrix_22

五、特征分解与奇异值分解

1.特征分解

将矩阵分解成一组特征向量与特征值。
特征方程(特征值λ与特征向量v)的定义:
花书的深度学习 花书 deep learning_线性代数_23
矩阵是奇异的,当且仅当含有零特征值。
将A的n个线性无关的特征向量拼成V,对应的特征值拼成对角矩阵diag(λ),则矩阵A的特征分解记作:
花书的深度学习 花书 deep learning_机器学习_24
实对称矩阵都可以进行特征值分解,分解成实特征值与实特征向量。且特征向量矩阵可为正交矩阵。特征值分解并不唯一,特征方程有重根时,任意一组正交的特征向量都可以。
花书的深度学习 花书 deep learning_线性代数_25

2.奇异值分解(SVD)

将矩阵分解为奇异向量与奇异值。获得信息与特征值类似,但是每一个实数矩阵都具有奇异值分解。(D是对角矩阵,但不一定是方阵,对角元素被称为奇异值)
花书的深度学习 花书 deep learning_matrix_26
U的列向量称为左奇异向量,V的列向量是右奇异向量。A的非零奇异值是A与A的转置的乘积的特征值的平方根,有:
花书的深度学习 花书 deep learning_花书的深度学习_27花书的深度学习 花书 deep learning_matrix_28

3.伪逆

对于不能求逆的矩阵A,依旧希望通过求逆运算,求解方程Ax=y,得到x=By。则希望伪逆运算定义一个将A映射到B的过程。
Moore-Penrose 伪逆:
定义式:
花书的深度学习 花书 deep learning_matrix_29
计算式:
花书的深度学习 花书 deep learning_matrix_30
D+是对角矩阵D非零元素取倒数再转置得到的。
当A的列数多于行数,方程可能有去穷多解,则伪逆运算求得的解是所有可行解中欧几里得范数最小的一个。
当A的行数多于列数,方程可能没有解,这种情况下求得的x使得Ax和y的欧几里得距离最小

六、主成分分析 PCA

对数据进行有损压缩,用一个低维表示去编码。使用矩阵乘法进行编码f(x)=c与解码(重构)g( c)=Dc。PCA是由解码函数而定的。为了使问题有唯一解,固定向量的模,使D的所有列向量都有单位范数。为了计算方便,限制D的列向量彼此正交。

1.如何根据x得到最优编码c*
最小化原始向量与重构向量之间的距离。使用L2距离的平方。
花书的深度学习 花书 deep learning_花书的深度学习_31花书的深度学习 花书 deep learning_线性代数_32
忽略与c无关的x项,再带入g( c)的定义
花书的深度学习 花书 deep learning_线性代数_33
对上式关于c求导,令其为0,得到
花书的深度学习 花书 deep learning_花书的深度学习_34
则PCA的重构操作为:花书的深度学习 花书 deep learning_线性代数_35

2.找到合适的编码矩阵D
最小化原始向量与重构向量之间的距离。花书的深度学习 花书 deep learning_matrix_36
同时考虑所有样本和所有维数,即最小化Frobenius 范数
花书的深度学习 花书 deep learning_matrix_37

考虑一维向量,即D=d,得到最优d的目标是

花书的深度学习 花书 deep learning_线性代数_38


该式通过特征值分解求解,即d应该是其最大特征值对应的特征向量。

这样就得到了第一个主成分。也就是只用一个维度表示信息,且最大保留信息的那个维度。当扩展成l维时,有前L个最大的特征值对应的特征向量组成。

这个推导过程,貌似就是西瓜书PCA部分,注释中提到的 逐一选取最大主成分 的过程。

参考资料

1.机器学习,周志华
2.统计学习方法,第二版,李航
3.https://zhuanlan.zhihu.com/p/38431213
4.https://github.com/MingchaoZhu/DeepLearning
5.https://www.bilibili.com/video/BV1kE4119726?p=5