Python深度学习 - 基于TensorFlow:线性代数阅读笔记

垃圾内容,勿读
想要了解线性代数本质,请翻墙看3Blue1Brown的视频

3Blue1Brown 线性代数本质

这一系列的章节安排如下图所示:
在这里插入图片描述

Linear transformations and matrices

这个视频首先介绍了线性变换的几个要点,然后以视频的形式介绍一个二阶矩阵如何在二维坐标系中承担起转换的角色。

Linear transformation有两个属性需要保持:

  • all lines must remain lines, without getting curved
  • and the origin must remain fixed in place.

例如对象向量 v ⃗ = − 1 × i + 2 × j \vec v = -1 \times i + 2 \times j v =1×i+2×j来说,我们可以通过基向量 i i i j j j来定义任意向量。也就是

[ 1 0 0 1 ] [ − 1 2 ] = − 1 × [ 1 0 ] + 2 × [ 0 1 ] \begin{bmatrix} 1 && 0\\ 0 && 1\\ \end{bmatrix} \begin{bmatrix} -1 \\ 2 \\ \end{bmatrix} = -1 \times \begin{bmatrix} 1 \\ 0 \\ \end{bmatrix} + 2 \times \begin{bmatrix} 0 \\ 1 \\ \end{bmatrix} [1001][12]=1×[10]+2×[01]

但是经过linear transformation以后, i i i j j j也会发生变化,我们基于变换后的 i i i j j j就可以组成变换后的向量。 i i i本来是 [ 1 0 ] [\begin{array}{cc} 1 \\ 0 \\ \end{array}] [10]变换成了 [ 3 1 ] [\begin{array}{cc} 3 \\ 1 \\ \end{array}] [31] j j j [ 0 1 ] [\begin{array}{cc} 0 \\ 1 \\ \end{array}] [01]变换成了 [ 1 2 ] [\begin{array}{cc} 1 \\ 2 \\ \end{array}] [12]。但是我们依然可以通过 i i i j j j来表示变换后的变量。

[ 3 1 1 2 ] [ − 1 2 ] = [ − 1 3 ] \begin{bmatrix} 3 && 1\\ 1 && 2\\ \end{bmatrix} \begin{bmatrix} -1 \\ 2 \\ \end{bmatrix} = \begin{bmatrix} -1 \\ 3 \\ \end{bmatrix} [3112][12]=[13]
图形
注:上图来源于3Blue1Brown

所以只要抓住 i i i j j j,那么我们就可以理解linear transformations。而矩阵则代表了具体的变换,矩阵 × \times × 向量,就意味着在向量上应用这个变换。

然后第二章的视频引出了linearly depedent也就是线性相关的概念。
线性相关
对于下面的线性变换来说, i i i j j j上的变换其实线性相关的,最后所有二维面上的点都转换到了一条线上,也就是俗称的“降维打击”。后面我们会发现是否“降维打击”其实和秩密切相关
[ 2 − 2 1 − 1 ] \begin{bmatrix} 2 && -2\\ 1 && -1\\ \end{bmatrix} [2121]

矩阵乘法作为组合变换的形式以理解

这一章的视频主要介绍了矩阵的乘积意味着什么,并直观的展示了为什么矩阵乘积不满足交换律。

前面我们已经知道了矩阵可以表示一个变换,而两个矩阵的乘积则表示两个变换的综合效果,例如下图中的 M 1 M_1 M1 M 2 M_2 M2乘积可以看做两次变换的结合。
矩阵乘积

三维线性变换

知道了二维变换的本质以后,推广到高维就比较简单了。
三维
而矩阵的乘积起到的效果和需要满足的约束与二维相同。

The determinant(行列式)

这一章视频的核心是直观地展示行列式的本质意义,而矩阵的行列式本质上描述了(二维的是面积,三维是体积)矩阵所代表的的变换对空间的伸缩程度

Exactly how much are things being stretched.

理解该本质的最直观的方式还是通过基向量 i i i j j j,对于对于变换 [ 3 0 0 2 ] \begin{bmatrix} 3 && 0\\ 0 && 2\\ \end{bmatrix} [3002]来说,下面两张图就展示了图形是如何伸缩的。

变换前
变换后
而由于线性变换的属性保证了其它区域会按照基向量 i i i j j j进行等比例的伸缩变换。而“降维打击”在这里就相当于把体积降维到面积,将面积降维到0
降维打击
但是这里还有一个问题需要解释,就是行列式可能为负数,负数的绝对值可以理解为伸缩程度,但是负号表示了什么。对于二维空间来说,负数表示了整个坐标系的反转,例如一张纸被拉扯并且被翻转到另一面了

对于三维空间的变换来说,它和二维变换很类似,除了基向量 i i i j j j k k k经过变换后是平行六面体,而不是二维空间中由基向量 i i i j j j围起来的平行四边形。而负数意味着是可以通过左手表示坐标系转换到由右手来表示坐标系来表示(或者相反)。3Blue1Brown的视频中有非常直观的展示。

Dot Products(点积)和Duality

点积的计算很好理解,但是这个运算的本质是什么,为什么要这样乘?有没有几何上的意义?
[ 4 1 ] ∙ [ 2 − 1 ] = 1 ∗ 3 + 2 ∗ 4 = 11 \begin{bmatrix} 4\\ 1\\ \end{bmatrix} \bullet \begin{bmatrix} 2\\ -1\\ \end{bmatrix} = 1 * 3 + 2 * 4 = 11 [41][21]=13+24=11

如果硬要说的话,几何上的意义就是一个向量在另一个向量投影上的乘积。
点积

但是点积这么简单的形式能够与投影乘积扯上关系呢?

我们可以把上图中的 [ 4 1 ] \begin{bmatrix} 4\\ 1\\ \end{bmatrix} [41]看做一种降维打击转换,也就是将二维转换为一维,对应的转换矩阵是 [ 4 1 0 0 ] \begin{bmatrix} 4 & 1\\ 0 & 0\\ \end{bmatrix} [4010],注意这个变换矩阵两个列是线性相关的。所以乘法也就是:

[ 4 1 0 0 ] [ 2 − 1 ] = [ 7 0 ] \begin{bmatrix} 4 & 1\\ 0 & 0\\ \end{bmatrix} \begin{bmatrix} 2\\ -1\\ \end{bmatrix} = \begin{bmatrix} 7 \\ 0 \\ \end{bmatrix} [4010][21]=[70]

当然这个变换矩阵可以省略写成 [ 4 1 ] \begin{bmatrix} 4 & 1 \end{bmatrix} [41]

理解不到位,暂时搁置

Change of basis(坐标转换)

Cross Product(叉积)

叉积与行列式的区别是,行列式是一个值,而叉积的结果是一个向量。虽然简单来说。

叉积
我们可以用右手定则来确定方向,但另外一种可选的计算叉积的方式如下:
叉积2
就是通过添加基向量来得到最终的结果。所以有人说点积是降维(直接降到一维),而叉积是升维。

特征向量和特征值

A A A是一个 n n n阶方阵,如果存在实数 λ \lambda λ n n n维的非零向量 x x x,满足

A x = λ x Ax = \lambda x Ax=λx

那我们称数 λ \lambda λ称为方阵 A A A的特征值,向量 x x x称为矩阵 A A A对应特征值 λ \lambda λ的特征向量。那么特征向量的本质是什么呢?

首先,要始终牢记矩阵可以看做一个线性变换,而特征向量和特征值的意义可以放在线性变换中来解读。

如果向量在经过线性变换后依然留在了原来的所张成的空间中,那么这个向量就是特征向量,而变换后拉伸或者压缩的值称为特征值。如下图矩阵的特征向量就是 x x x上的向量,它们被拉伸了3倍。
特征值
其实最为直观的还是下图给出的三维空间的旋转,旋转轴的概念最能代表它隐藏的含义。从这个角度来看,特征向量和特征值并不能唯一表征整个线性变换(也就是唯一表征整个矩阵)。
在这里插入图片描述
二维线性空间并不一定有特征向量。

3BLUE1BROWN的视频看完有一种想哭的感觉,越来越感觉,学习最重要的是学习材料,然后是人,然后是思考,然后是时间

视频最后,通过更本质的形式探讨了什么是向量,以及数学中不同的概念与向量的相通性。

行列式

可逆矩阵

构成矩阵的向量组中基向量的个数。定义1
矩阵中所有向量中极大线性无关的元素个数。

降维打击和秩相关,如果线性变换的秩小于向量的维度,那么就是降维打击。

如何理解矩阵的秩中有很多很好的回答。

贴一下增博很早之前的解释矩阵的秩与行列式的几何意义

线性相关

线性相关可以看做去发现矩阵中潜藏的水货。

范数

如何通俗易懂地解释「范数」?
暂时搁置,没有理解到本质

特征值分解

书中给出了numpy如何对矩阵进行特征值分解的API。

import numpy as np
a = np.array([[1,2], [3,4]]) # 示例矩阵
A1 = np.linalg.eigvals(a) # 得到特征值
A2, V1 = np.linalg.eig(a) # 其中A2也是特征值,B为特征向量
print(A1)
print(A2)
print(V1)

其中eigvals()计算矩阵的特征值,而eig()返回包含特征值和对应特征向量的元组。
注:特征向量 eigenvector,特征值 eigenvalue。其中eigen是特征,本征的含义

奇异值分解

矩阵的奇异值与特征值有什么相似之处与区别之处?中赵文和的回答,我比较能够理解。

特征值只表征了缩放旋转效应,所以只能对方阵有效。
而奇异值表征了旋转缩放投影三种效应,所以可以处理非方阵。

暂时搁置,没有找到本质

为什么矩阵特征值之和等于矩阵的迹?

迹可以理解为行列式的导数,所以也就表示了在每个边沿自己的方向变化时,该平行四边形的面积或者平行六面体的体积变化的大小。这实际上和特征值非常相关,迹是特征值的和,行列式是特征值的积。 为什么会定义矩阵的迹? - EvilSpawn的回答 - 知乎

迹、行列式和特征值都是坐标无关的不变量。

主成分分析

如何通俗易懂地讲解什么是 PCA 主成分分析?

暂时搁置,没有搞透

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值