分享

如何理解线性与矩阵变换

 InfoRich 2024-12-29 发布于上海

线性代数是机器学习的基石之一,它比你想象的更直观

这里有一道简单的数学题。能将这两个矩阵相乘的请举手:

你当然很快能回答:

知道'为什么'的请在举手。我说的 ”为什么“不是指因为:

虽然这个公式在数学上是正确的,但它更多地描述的是 “如何”,而不是 '为什么'。就公式本身而言,它几乎没有直观性。

然而,矩阵乘法几乎总是这样教的。背诵公式。在考试中使用它。实际生活工作有什么价值吗?这当然是我们共同的经历,无论是在初学线性代数时,还是在一所表面上世界领先的大学攻读数学学士学位时。

再问你一个问题:下面矩阵的行列式是多少?

如果你说是 2,那就也回答正确。不过,我还是要问为什么。我们知道,对于一个 2x2 矩阵,行列式由以下公式给出:

为什么会这样呢?行列式到底是什么?我们知道行列式有一些非常有用的性质,比如,当你尝试用行简化法解线性方程组时,行列式为 0 是一个重要的信号。然而,在我大学学习的两个线性代数必修课中,却从未对行列式的背景或意义做出超出表面层次的讲解或解释。这让我感到困惑,因为虽然我的大学在全球范围内以其卓越的学术研究而闻名,但教学质量却似乎并未达到同样的高度。在课堂上,教学内容更像是为研究型学者设计的,以尽可能广泛和深入地覆盖理论知识为目标,而不是针对学生的实际需求进行细致讲解。这种方式往往让学生在面对复杂的数学工具时缺乏上下文和直观的理解,仅仅记住定义和运算规则,而对其本质和应用一知半解。

从 “如何”到 '为什么

数学是一门依赖于“渐进式”学习的学科——新知识的获取通常是在已有知识的基础上进行的。如果我们的理论基础仅仅是死记硬背公式、机械地将数字代入其中,而没有更深入地理解这些知识在实际中的应用,那么在机器学习这样需要灵活运用数学的领域,这样的基础往往会不堪一击。

谈到这里,我想特别提到,这篇博客的灵感主要来自格兰特·桑德森(Grant Sanderson)及其创作的3Blue1Brown一系列视频。对于不熟悉桑德森作品的人来说,他制作的动画视频非常精美,能将复杂的数学概念以直观的方式展现出来,使受过基础教育的观众也能理解。例如,他的视频中对神经网络和加密货币的讲解,就非常值得一看。

桑德森的“线性代数”系列视频的核心在于通过线性变换及其可视化来介绍、启发并概念化线性代数中的许多基本思想。实践证明,这种方法非常有助于人们掌握核心基础知识。

'这里的目标不是教授一切知识,而是赋予你强烈的直觉……这些直觉将让你今后的学习更有成效。” --格兰特·桑德森

矩阵乘法到底是什么?

在回答这个问题之前,让我们先退一步思考什么是线性变换。为了简单起见,我们还是以二维空间为例,当然以下内容也适用于更高的维度。

线性变换是一种改变 '空间' 形状的方法,其基本约束是:

  • 保持平行线保持平行
  • 保持平行线间距不变
  • 将原点保持不变

总之,我们可以进行三种不同类型的线性变换:

  • 旋转:
Image
image.png
  • 缩放(缩小或增大平行线之间的空间)。注意--这也适用于 x 轴或 y 轴上的反射,只需使用负比例因子即可。
Image
image.png
  • 错位(注意这如何保持平行线之间的距离相等)
  • Image
    image.png

证明向量乘法的合理性

虽然上面的插图是为了说明线性变换会影响整个二维空间,但我们可以根据它们对两个 “单位向量”(分别称为  和 )的影响来描述它们。Image

还有更多细节可以深入探讨,但从本质上讲,这是因为你可以通过    和  的线性组合到达二维平面上的任意一点。

  • 例如,矢量 将简单地等同于 3 个    加上 -2 个   )。Image

1. 旋转

假设我们要考虑一种线性变换,将所有物体逆时针旋转 90度 (如下图)。我们的向量 会发生什么变化呢?

换一种视角,我们可以只用 的变化来描述 的变化。

回想一下:

  1. 初始 ,是由 3 个初始   加上 -2 个初始    得到的。
  2. 旋转后  同样等于 3 个旋转后 加上-2 旋转后的
Image
image.png

向量的数学表达式:

总之:

transformed_v = 3*[0,1] + (-2)*[-1,0]

最直观的表达。

特别是,我们可以把  “变换后的” 和 “变换后的 ” 的向量放在一起,形成一个 矩阵,再参考这个更 “直观” 的视图,看看作用在初始 会发生什么,突然间,我们就证明向量乘法是含义了。Image

2. 反射

那么,我们之前研究过的两个 矩阵的乘法又是怎么回事呢?

我们刚刚证明了一个 2x2 矩阵必然代表二维空间中的某种线性变换。特别是,对于给定的矩阵 [a,b],[c,d]],矢量 [a,c]和 [b,d]分别代表 变换后 和 “变换后 的坐标。

假设我们想先后进行两次线性变换。举例来说,假设我们进行了之前看过的逆时针四分之一旋转,然后在 轴上进行了反射。这两个变换都可以用 矩阵来表示。我们已经知道了表示旋转的矩阵,那么表示反射的矩阵呢?我们可以使用与之前相同的技巧--看看 会发生什么。

Image
image.png

矩阵:

当然,  保持不变, 变成负数。前面我们已经说明,我们可以把这些 变换后的 和 变换后的 向量放在一起,形成代表整体反射变换的矩阵。

3. 旋转 + 反射

那么,我们该如何考虑相继进行两次变换(先旋转,后反射)的情况呢?我们可以采用与之前相同的方法--观察 的变化情况。

  1. 我们知道旋转矩阵会把   从[1, 0] 带到[0, 1] 。如果我们想把反射应用到这个 旋转后的
  2. 我们只需要把代表这个反射的矩阵乘以代表 变换后的   的向量 [0,1](回想一下--我们已经证明。
Image
image.png

当然,我们现在需要用同样的推理来观察 的情况。Image

既然我们已经知道 ĵ 在相继经过旋转和反射变换后会发生什么变化,我们就可以把这两个矢量放在一起,用一个矩阵来描述累积效果。

这看起来非常像我们的矩阵乘法标准公式。当然,你也可以用任何线性变换序列来做这个思想实验。只要关注 的变化,就能有效地进行实验。

值得注意的是,从连续线性变换的角度来思考矩阵乘法,我们就很容易证明矩阵乘法的标准规则。对于三个不同的矩阵 A、B 和 C,想一想为什么下面的性质成立:

行列式如何?

在博客的开头,我展示了如何机械地计算行列式。然后我问为什么这个公式成立(以及行列式是什么)。我在另一篇博客中提到了这个问题,剧透一下,2x2 矩阵的行列式只是表示二维空间中给定面积在矩阵变换后增减的比例。

不无道理的是,YouTube 上关于桑德森行列式视频的评论 中充斥着许多人的困惑,既然这是一个如此直观的概念,为什么在教学中通常不提及呢?我不能责怪他们。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多