2.4 线性相关、生成子空间和范数

2.4.1 什么是线性相关

线性相关是指存在一组向量, 其中至少有一个向量可以表示为其他向量的线性组合。更具体地说, 如果我们有向量组V:V1,V2,…… Vn, 并且存在不全为零的标量C1,C2 ,……Cn, 使得C1V1+C2V2+……+CnVn=0, 则这些向量是线性相关的。如果不存在这样的非零系数, 则这些向量是线性无关的。线性相关的向量组包含冗余信息, 因此在某些情况下可能需要通过线性组合来消除它们。

通俗地说, 现在假设我们有一个大厨, 他非常喜欢做蛋糕。一天, 他决定要做两种不同口味的蛋糕: 巧克力味和香草味。他知道巧克力蛋糕需要的材料包括巧克力、面粉、糖和牛奶, 而香草蛋糕需要的材料包括香草精、面粉、糖和牛奶。

于是大厨开始准备材料, 他买来了足够的面粉、糖和牛奶, 但是他发现自己只有少量巧克力和香草精。这让他有些犯愁, 因为他不知道这些材料是否足够做出两种口味的蛋糕。

于是他开始思考, 他想知道如果他用一份巧克力来做一个巧克力蛋糕, 那么他需要多少香草精才可以做一个相应的香草蛋糕。他把这个问题表示成数学形式, 就是寻找一个线性函数, 将巧克力的用量映射到香草精的用量上。

大厨通过试验发现, 他需要用一份巧克力来配合一份香草精才可以做出两种蛋糕。这意味着它们之间存在着线性相关的关系, 也就是说, 当他使用更多的巧克力时, 他必须使用相应数量的香草精来保持两种蛋糕的制作比例不变。

这就是线性相关的概念, 它表示两个向量之间存在着一条直线的关系, 或者说一个向量可以由另一个向量进行线性组合得到。在大厨的例子中, 巧克力和香草精就相当于两个向量, 它们之间的线性关系告诉我们如何在有限的材料下, 制作出多种口味的蛋糕, 就像图2-10所示的这样。

图2-10 香草精的用量随着巧克力的增加而增加, 它们是线性相关的

所以, 如果你要成为一名好厨师, 就需要理解线性相关的概念, 这样你才能在做菜时灵活运用各种材料, 制作出美味可口的佳肴!

原理输出2. 10

为了帮助大家更好地理解和消化线性相关的概念, 请大家在ChatGPT的帮助下, 录制一个长度约为2分钟的短视频, 介绍什么是线性相关。

小贴士

可以参考的ChatGPT提示词如下。

“请简要介绍什么是线性相关。”

“请结合生活中的例子, 介绍线性相关的概念。”

“假设你是一位大学老师, 请用轻松易懂的语言向学生讲解线性相关。”

实操练习2. 10

为了让大家可以用代码的形式学习线性相关, 接下来大家可以让ChatGPT生成代码演示, 并在Colab新建一个Notebook文件运行这些代码。

小贴士

要让ChatGPT生成代码, 可以参考的提示词如下。

“请用Python演示线性相关, 需要可视化。”

“用Python可视化的方法演示线性相关。”

2.4.2 什么是生成子空间

生成子空间是指一个向量空间中的一个子集, 它由该向量空间中的一组向量所生成。具体来说, 给定向量空间V和其中的一组向量V1,V2,…… Vn, 则这些向量生成的子空间Span (V1,V2,…… Vn) 就是V的一个生成子空间。该子空间包含所有可由这些向量线性组合得到的向量。在生成子空间中, 向量数量可以小于或等于向量空间的维度。

生成子空间听起来是一个比较抽象的概念, 但其实它和我们平时生活中的事物有着异曲同工之妙。想一想, 你家里是否有一个收纳杂物的抽屉? 这个抽屉就可以被看作一个生成子空间。

首先, 生成子空间就像是一个集合, 里面装了一些向量。就像你的抽屉里放了一些零散的小东西。这些向量或小东西并不一定要相互关联, 只要它们都在这个空间 (抽屉) 里就可以, 就像图2-11所示的这样。

图2-11 生成子空间, 就像我们装着小物件的抽屉

而“生成”的意思就是说, 你可以通过这些向量的线性组合, 得到这个空间中的其他向量。就像你可以通过把抽屉里的杂物整理摆放, 来得到更多的空间。

那么, “子空间”又是什么呢? 简单来说, 子空间就是指一个向量空间中的一个子集, 满足向量加法和标量乘法封闭。这听起来比较玄乎, 但其实很好理解——就好像你在抽屉里放的东西都是小物件, 它们可以被放到抽屉里的任何一个角落, 而且你还可以用手捏捏塞塞, 让抽屉里的东西更紧密地挤在一起。

综上所述, 生成子空间就是一个向量空间中由一组向量通过线性组合得到的所有向量的集合。就像家里的那个收纳抽屉, 它可以帮你把零散的小物件整理出一个有序的空间。

原理输出2. 11

为了帮助大家更好地理解生成子空间的概念, 请大家在ChatGPT的帮助下, 录制一个长度约为2分钟的短视频, 介绍什么是生成子空间。

小贴士

可以参考的ChatGPT提示词如下。

“请简要介绍什么是生成子空间。”

“请结合生活中的例子, 介绍生成子空间的概念。”

“假设你是一位大学老师, 请用轻松易懂的语言向学生讲解生成子空间。”

实操练习2. 11

为了让大家可以用代码的形式学习生成子空间, 接下来大家可以让ChatGPT生成代码演示, 并在Colab新建一个Notebook文件运行这些代码。

小贴士

要让ChatGPT生成代码, 可以参考的提示词如下。

“请用Python演示生成子空间, 需要可视化。”

“用Python可视化的方法演示生成子空间。”

2.4.3 什么是范数

范数是一个用来衡量向量大小的函数, 通常用‖X‖表示, 其中X是一个向量。范数在很多机器学习和数学问题中都有广泛应用。

常见的三种范数是L1范数、 L2范数和无穷范数, 它们分别表示向量元素绝对值之和、元素平方和的平方根和元素绝对值的最大值。在机器学习领域中, L2范数常用于正则化, 而L1范数则常用于特征选择, 因为它倾向于使一些特征的权重为零, 从而达到特征选择的效果。

通俗来讲, 范数这个概念其实很简单, 就是用来衡量一个向量有多“长”的一种方法。想象一下你去买面包, 你会看到面包上有一个重量标识, 这个标识告诉你这个面包有多重。类比一下, 我们可以把向量看成是一个“面包”, 而范数就相当于是它的重量标识, 就像图2-12所示的这样。

你可能会问, 这个范数有什么用处呢? 其实很多地方都可以用到。比如说, 你有时候需要比较两个向量的大小关系, 就可以通过比较它们的范数来判断。如果一个向量的范数比另一个大, 那么它就“更长” “更重”。

还有一些特殊的范数,比如L1范数和L2范数。 L1范数其实就是把向量中每个分量的绝对值加起来,而L2范数则是把每个分量的平方加起来再开方。它们在机器学习和数据分析中经常用到。举个例子,假设有一个二维向量 (3, 4),它的L1范数就是3+4=7;而它的L2范数就是,也就是5。

所以, 范数并不是什么神秘的概念, 就像面包的重量一样, 在我们的日常生活中也随处可见。

图2-12 一个500 g的面包, 500 g就可以看成是它的范数

原理输出2. 12

为了帮助大家更好地理解范数的概念, 请大家在ChatGPT的帮助下, 录制一个长度约为2分钟的短视频, 介绍什么是范数。

小贴士

可以参考的ChatGPT提示词如下。

“请简要介绍什么是范数。”

“请结合生活中的例子, 介绍范数的概念。”

“假设你是一位大学老师, 请用轻松易懂的语言向学生讲解范数。”

实操练习2. 12

为了让大家可以用代码的形式学习范数, 接下来大家可以让 ChatGPT 生成代码演示, 并在Colab新建一个Notebook文件运行这些代码。

小贴士

要让ChatGPT生成代码, 可以参考的提示词如下。

“请用Python演示范数, 需要可视化。”

“用Python可视化的方法演示范数。”