极客时间已完结课程限时免费阅读

45 | 线性代数篇答疑和总结:矩阵乘法的几何意义是什么?

45 | 线性代数篇答疑和总结:矩阵乘法的几何意义是什么?-极客时间

45 | 线性代数篇答疑和总结:矩阵乘法的几何意义是什么?

讲述:黄申

时长09:48大小8.98M

你好,我是黄申。今天是线性代数的答疑和总结。
在这个模块中,我们讲了不少向量、矩阵、线性方程相关的内容。看到大家在留言区的问题,今天我重点说说矩阵乘法的几何意义,以及为什么 SVD 中 的特征向量组成了 矩阵,而 的特征向量组成了 矩阵。最后,我会对整个线性代数的模块做一个总结。

矩阵乘法的几何意义

首先,我们来说说矩阵乘法所代表的几何意义。
在阐述 PCA 主成分分析的时候,我们聊过为什么这个方法要研究协方差矩阵的特征值和特征向量。其中,我提到对某个向量左乘一个矩阵,实际上是对这个向量进行了一次变换。某个矩阵的特征向量表示了这个矩阵在空间中的变换方向,这些方向都是正交或者趋于正交的,而特征值表示每个方向上伸缩的比例。今天,我会继续深入这个话题,结合实例,给出更详细地解释。
多维的向量空间很难理解,所以我们还是从最简单的二维空间开始。首先,我们需要明白什么是二维空间中的正交向量。正交向量的定义非常简单,只要两个向量的点乘结果为 0,那么它们就是正交的。在酉矩阵之中,矩阵和矩阵的转置相乘为单位矩阵,只有向量自己点乘自己值为 1,而不同向量之间点乘值为 0,所以不同的向量之间是正交的。
理解了正交向量之后,我们来定义一个二维空间,这个空间的横坐标为 ,纵坐标为 ,空间中的一个点坐标为 ,对于这个点,我们可以把从原点到它的直线投影到 轴和 轴,这个直线在 轴上投影的长度为 1,在 y 轴上投影的长度为 2。我使用下图来表示。
对于这个点,我们使用一个矩阵 左乘这个点的坐标,你可以看看会发生什么。
我们把结果转成坐标系里的点,它的坐标是 ,把从原点到 的直线,和从原点到 的直线进行比较,你会发现直线发生了旋转,而且长度也发生了变化,这就是矩阵左乘所对应的几何意义。我们还可以对这个矩阵 分析一下,看看它到底表示了什么含义,以及为什么它会导致直线的旋转和长度发生变化。
之前我讲过,要看一个矩阵的特征,需要分析它的特征向量和特征值。由于矩阵 是一个对角矩阵,所以特征值很容易求解,分别是 3 和 2。而对应的特征向量是 。在二维坐标中,坐标[1, 0]实际上表示的是 轴的方向,而[0, 1]实际上表示的是 轴的方向。特征值 3 对应特征向量[1, 0]就表明在 轴方向拉伸为原来的 3 倍,特征值 2 对应特征向量[0, 1]就表明在 轴方向拉伸 2 倍。所以,矩阵 的左乘,就表示把原有向量在 轴上拉伸为原来的 3 倍,而在 轴上拉伸为原来的 2 倍。我用下面这张图来展示。
我们还可以从另一个角度来验证这点,把从原点到 的直线进行分解,我们会发现这个直线在 轴上投影的长度为 3,为原来的 3 倍,而在 轴上投影的长度为 4,为原来的 2 倍。
当然,矩阵的特征向量不一定是 轴和 轴,它们可以是二维空间中任何相互正交的向量。下面,我们再来看一个稍微复杂一点的例子。这次我们从两个正交的向量开始。
我使用下面这张图展示了这两个向量在空间的方向。
然后我用这两个向量构建一个矩阵
之所以使用这样一个例子,是因为 是一个酉矩阵,也就是说 ,所以我们可以使用它,外加一个特征值组成的对角矩阵 ,来构建另一个用于测试的矩阵 。我在 SVD 的那一讲,介绍过对称方阵可以进行特征值分解,所以我们可以通过 ,获得一个对称方阵
我们假设两个特征值分别是 0.5 和 2,所以有:
根据我们之间的解释,如果让这个矩阵 左乘任何一个向量,就是让向量沿 方向压缩一半,而在 方向增加两倍。为了验证这一点,我们让 左乘向量 ,获得新向量:
把这个新的坐标 和原坐标 都放到二维坐标系中,并让它们分别在 这两个方向进行投影,然后比较一下投影的长度,你就会发现伸缩的变化了。我使用下面这张图来帮你理解。
弄清楚了矩阵左乘向量的几何意义,那么矩阵左乘矩阵的几何意义也就不难理解了。假设我们让矩阵 左乘矩阵 ,那么可以把右矩阵 看作一堆列向量的集合,而左乘矩阵 就是对每个 中的列向量进行变换。另外,如果二维空间理解了,那么三维、四维直到 维空间就可以以此类推了。

SVD 分解中的 矩阵

在讲解 SVD 奇异值分解的时候,我们解释了 的特征向量组成了 SVD 中的 矩阵,而 的特征向量组成了 SVD 中的 矩阵。不过,我们还没有证明这两点。今天我来说说如何证明它们。首先,我们来看看 矩阵的证明。
其中, 的证明,我们在最小二乘法的讲解过程中证明过。另外, 是酉矩阵,所以 是对角矩阵,所以 ,而且 仍然是对角矩阵。
由于 是对角矩阵,所以通过 ,我们可以看出 中的向量就是 的特征向量,而特征值是 对角线上的值。
同理,我们也可以证明 中的向量就是 的特征向量。
从这个证明的过程,我们也发现了,XX’或者 X’X 特征值矩阵等于奇异值矩阵的平方,也就是说我们可以通过求出 X’X 特征值的平方根来求奇异值。

总结

回答完两个问题之后,我来总结一下线性代数这个模块。
线性代数最基本的概念包括了向量、矩阵以及对应的操作。向量表示了一组数的概念,非常适合表示一个对象的多维特征,因此被广泛的运用在信息检索和机器学习的领域中。而矩阵又包含了多个向量,所以适合表示多个数据对象的集合。同时,矩阵也可以用于表达二维关系,例如网页的邻接矩阵,用户对物品的喜好程度,关键词在文档中的 tf-idf 等等。
由于向量和矩阵的特性,我们可以把它们运用在很多算法和模型之中。向量空间模型定义了向量之间的距离或者余弦夹角,我们可以利用这些指标来衡量数据对象之间的相似程度,并把这种相似程度用于定义查询和文档之间的相关性,或者是文档聚类时的归属关系。矩阵的运算体现了对多个向量同时进行的操作,比如最常见的左乘,就可以用在计算 PageRank 值,协同过滤中的用户或者物品相似度等等。
当然,矩阵的运用还不只计算数据对象之间的关系。最小二乘法的实现、PCA 主成分的分析、SVD 奇异值的分解也可以基于矩阵的运算。这些都可以帮助我们发现不同维度特征之间的关系,并利用这些关系找到哪些特征更为重要,选择或者创建更为重要的特征。
有的时候,线性代数涉及的公式和推导比较繁琐。在思考的过程中,我们可以把矩阵的操作简化为向量之间的操作,而把向量之间的操作简化为多个变量之间的运算。另外,我们可以多结合实际的案例,结合几何空间、动手推算,甚至可以编程实现某些关键的模块,这些都有利于理解和记忆。

思考题

我想听你说说,学习完了编程领域中常用的线性代数知识,你有哪些收获和心得?
欢迎留言和我分享,也欢迎你在留言区写下今天的学习笔记。你可以点击“请朋友读”,把今天的内容分享给你的好友,和他一起精进。
分享给需要的人,Ta购买本课程,你将得20
生成海报并分享

赞 3

提建议

上一篇
44 | 奇异值分解:如何挖掘潜在的语义关系?
下一篇
46 | 缓存系统:如何通过哈希表和队列实现高效访问?
unpreview
 写留言

精选留言(13)

  • 胡鹏
    2019-03-30
    没法实践,听不懂,却在坚持,这样有益处嘛?

    作者回复: 你说的没法实践是指实际项目中没有运用的机会吗?可以一步步来,每次弄懂一点,也许没法直接用到实践中,但是对解决问题的思路也许是有帮助的,加油💪!

    共 2 条评论
    9
  • 道可
    2019-08-08
    打好基础:http://open.163.com/special/opencourse/daishu.html
    共 3 条评论
    8
  • qinggeouye
    2019-04-03
    1、矩阵 X 左乘另一个向量 a,向量 a 分别沿着矩阵 X 的特征向量进行伸缩,伸缩大小为特征向量对应的特征值; 2、不太理解,Σ 为什么会是对角矩阵?矩阵 X 是 m x n 维的,U 是 m x m 维左奇异矩阵,V 是 n x n 维的右奇异矩阵,按道理 Σ 是 m x n 维奇异矩阵(对角线上是奇异值,其它元素为0) ;当 m = n 时,Σ 才是对角矩阵吧?这样的话才是 $Σ'Σ = Σ^2$ 。又或者是对 奇异值矩阵 Σ 中的奇异值做了某种取舍(降维),U 未必是 m x m 维,V 也未必是 n x n 维?
    展开

    作者回复: 对角矩阵的定义是主对角线之外的元素皆为0的矩阵,所以不一定需要m=n,例如,下面这种也是对角矩阵 [[1,0,0],[0,1,0]]

    3
  • 我是小白007
    2019-10-31
    工作中暂时用不到。但是拓展了思路,以前对线代的阴影也少了许多。谢谢黄老师

    作者回复: 很高兴对你有用

    2
  • 陈小渣👻
    2019-08-31
    太开心啦👏,整个线代模块下来,学到了很多大学里面没联系起来的知识~黄老师的表述好清晰~

    作者回复: 很高兴这个专栏对你有价值!

    2
  • 南边
    2020-01-16
    这是一门基础课程,第一遍看完,虽然大部分知识看懂了,但是还是很生疏,之前看的,现在又忘记了,主要是因为没有应用起来,还不熟悉,多看几遍,自己多写点demo,自然会熟悉起来

    作者回复: 是的,重在实践

    1
  • 逐风随想
    2019-03-31
    @胡鹏:一样,人们都说笨鸟先飞。刚开始的一腔热血。慢慢的到后面发现越来越艰难了。也越来越痛苦。这个已经超过了能力范围。有的时候智力真的是跨越不了的坎。

    作者回复: 加油,每次集中在一个点,逐步细化和理解,会有突破的

    1
  • 013923
    2022-09-15 来自上海
    学习了新知识!
  • lk
    2022-06-19
    基础的知识掌握的七七八八了,但是线性代数的数学思维还没建立起来,在现实项目中能想到并运用线性代数的能力还需要大大提高。
  • 建强
    2020-12-06
    心得: 1.向量和矩阵的运算是一种可以理解为是机器学习中的基本工具和手段,适用于机器学习领域中的许多算法。 2.利用矩阵运算,可以让很多算法模型的表达更加简洁,比如PageRank算法、最小二乘法等。 3.机器学习中,把样本和样本的特征看成是一个多维矩阵,运用矩阵运算,可以对样本进行各种分析,比如主成份分析、相似度分析等。 4.向量和矩阵运算只适用于对象之间线性关系的运算和分析,不知道这样理解对不对
    展开

    作者回复: 前面3点是对的,至于第4点,我们可以将非线性的关系通过一定的变化,转为线性关系,然后用向量和矩阵运算

  • l c
    2020-08-12
    https://www.bilibili.com/video/BV1ys411472E 3Blue1Brown的线性代数的本质,本科线代没好好学一塌糊涂,后来研究生的时候发现很多东西都需要依靠线代思考,所以找到了这个复习,豁然开朗。

    作者回复: 很高兴对你有价值

    1
  • Paul Shan
    2019-10-11
    最大的收获就是矩阵乘法的几何解释,这次学习线性代数终于把矩阵的特征值和特征向量,矢量的旋转和伸缩窜起来了。总结起来就是: 列向量左乘一个方阵,相当于把这个方阵分解成特征向量和特征值,列向量在特征向量上的每一个分量都作相应特征值的伸缩,伸缩后的分量合成一个新的列向量就是左乘矩阵的结果。 矩阵本身就可以分解成列向量的集合,左乘方阵就相当于对每个列向量作相应的几何变换。 但是这只限于方阵,请问黄老师对于一般的矩阵乘法,也有几何解释吗?
    展开

    作者回复: 一般的矩阵乘法也是类似的几何解释,这里只是用方阵作为例子

  • 小伟
    2019-08-25
    之前学过线性代数,但是没有跟实际的应用场景结合一起,多谢黄老师的课程; 知道了线性代数可以求文档相关性和去重,了解了LSM推到过程,了解了PCA和奇异值分解的过程。 但是这些在我的工作中都没有应用到,所以,后面会更多的去应用场景,用好这些工具。

    作者回复: 很高兴对你有价值