帝国理工机器学习线性代数笔记-全-

帝国理工机器学习线性代数笔记(全)

001:线性代数介绍 🧮

在本课程中,我们将开启“机器学习数学”专项课程的学习之旅。我们将首先聚焦于线性代数,这是理解机器学习核心算法的基础数学工具。本课程旨在帮助你建立对向量、矩阵和线性变换的直观理解,而非深陷复杂的数学细节。

课程背景与目标

机器学习是一套强大的数学工具集,它使我们能够表示、解释和控制周围的复杂世界。然而,“数学”这个词本身可能会让一些人感到不安。本专项课程的目的,正是要带你游览支撑这些机器学习方法的基础数学,特别侧重于培养你的直觉。

得益于出色的机器学习社区,即使不完全理解其背后的数学原理,通过使用开源库,我们也能应用许多强大的机器学习方法。这很棒,但问题也可能随之出现。如果不了解相关数学的语言和含义,你可能很难找出问题所在或进行修复。

本专项课程的理想成果是,它能给你信心和动力,让你能立即投身于网络上已有的数百个优秀的应用机器学习课程,并且不会被矩阵符号或微积分吓倒。我们希望让机器学习向尽可能多的人开放,而不仅仅是把乐趣留给计算机科学家。

线性代数概览

本课程是线性代数的入门介绍。线性代数本质上是一套符号约定和便捷的操作方法,它允许你方便地处理大型方程组。

在接下来的五个模块中,我们将通过测验和交互式工具,重点培养你对向量和变换的直观理解,同时偶尔会要求你补充一些Python代码示例的空白部分。

在最后一个模块中,Sam Cooper博士将通过展示线性代数如何成为谷歌著名的网页排名算法(用于决定搜索结果中网页的顺序)的核心,将所有内容串联起来。

后续学习路径

如果你觉得本课程有用,希望你继续学习我们的后续课程。在那里,Sam和我将向你介绍多元微积分。在另一门课程中,Mark Dnroth博士将介绍主成分分析。

我们真诚地希望这门课程对你来说既富有成效、实用,同时也充满乐趣。期待在论坛中听到你的反馈。


本节课总结:我们一起了解了“机器学习数学”专项课程的目标,明确了线性代数作为机器学习基础工具的重要性。本课程将采用直观、互动的方式,帮助你克服对数学的畏惧,为后续深入学习机器学习算法打下坚实的基础。

002:线性代数的动机

在本节课中,我们将探讨我们可能希望解决的问题类型,揭示线性代数的本质,并了解它如何帮助我们解决这些问题。

价格发现问题

首先,我们来看一个价格发现的问题。假设我进行了两次购物,每次都购买苹果和香蕉。第一次,我买了2个苹果和3个香蕉,总价为8元。第二次,我买了10个苹果和1个香蕉,总价为13元。这里的A和B分别代表单个苹果和单个香蕉的价格。为了找出单个苹果和香蕉的价格,我需要解这些所谓的联立方程

在一般情况下,如果涉及多种商品和多次购物记录,手动求解所有这些方程可能会非常困难。因此,我们可能希望有一个计算机算法来在一般情况下为我们解决这个问题。

这是一个线性代数问题的例子。这里有一些恒定的线性系数,即数字2、10、3、1。这些系数将输入变量A和B与输出8和13联系起来。如果我们考虑一个描述苹果和香蕉价格的向量 AB,那么当我已知购买数量时,这个向量就会被转化为总成本,第一次购物的成本是8,第二次是13。

我可以将其写成一个矩阵问题,其中[2, 3]代表第一次购物,[10, 1]代表第二次购物。这些就是矩阵和向量。在本课程的第1到第3模块中,我们将逐步学习这些不同类型的数学对象,理解它们是什么以及如何操作这些向量和矩阵。之后,我们将回过头来找出在一般情况下如何解决这个问题。

数据拟合问题

另一个我们可能感兴趣的问题是为一些数据拟合一个方程。实际上,在神经网络和机器学习中,我们希望计算机不仅能拟合方程,还能找出应该使用什么方程。这虽然是对实际情况的高度不精确描述,但它给出了正确的方向。

假设我们有一些像这个直方图一样的数据,它看起来像一个具有平均值和一定变化范围(宽度)的总体分布。

除了苹果和香蕉问题,你可能想解决的另一个问题是如何找到描述这条线的方程中的最佳参数值,即那些最符合直方图中数据的参数。

使用这个方程会非常方便,因为我们将拥有一个易于携带的总体描述,而无需携带所有原始数据。例如,这可以使我们摆脱隐私问题的困扰。

我们可以根据参数绘制拟合的好坏程度,这将是下一个视频的内容。

本节总结

在本视频中,我们在线性代数的第一个模块中设置了两个问题。第一,苹果和香蕉的联立方程求解问题。第二,使用带有某些拟合前提的方程来拟合数据的优化问题。这些问题将继续引导和激励我们在整个线性代数及其与多元微积分的合作课程中进行学习。

003:掌握向量

概述

在本节课中,我们将学习向量的概念,并理解它为何对解决机器学习中的线性代数问题至关重要。我们将从一个简单的数据拟合问题入手,探讨如何将参数空间中的变化视为向量,从而为后续的优化和机器学习算法打下基础。

从数据拟合问题引入向量

上一节我们提到了用函数拟合数据的问题。本节中我们来看看一个具体例子:拟合人群身高的分布直方图。

假设我们想用一个方程来描述人群身高的分布。这个方程可能只有两个参数:一个描述分布的中心位置,我们称之为 μ;另一个描述分布的宽度,我们称之为 σ。我们可以使用如下形式的方程进行拟合:

f(x) = \frac{1}{\sigma \sqrt{2\pi}} \times e^{-\frac{(x - \mu)^2}{2\sigma^2}}

这个方程被称为正态分布或高斯分布。它有一个中心 μ,一个宽度 σ,并且其曲线下的总面积归一化为1。

如何评估拟合的好坏

现在,我们如何找到能最好地拟合数据的 μσ 呢?

想象一下,如果我们猜测的 σ 比实际值大,但保持总面积不变,那么拟合曲线就会变得更宽、更矮。这会导致曲线在中间区域低于数据点,在两侧边缘又高于数据点。

我们可以计算所有数据点与拟合曲线对应点之间的差异。通常,我们会计算这些差异的平方和,以此作为衡量拟合“好坏”的指标。这个值越小,说明拟合得越好。

参数空间与拟合景观

我们可以将不同的 μσ 组合视为一个二维空间中的点。对于每一组参数,我们都能计算出一个“坏度”值。如果我们在整个参数空间上绘制这个“坏度”值,就会得到一个像地形图一样的曲面。

  • 最佳拟合参数对应于这个曲面上的最低点(山谷)。
  • 较差的参数组合则对应于较高的点(山坡)。

我们的目标就是在这个“地形图”上找到最低点。

向量作为参数空间中的移动

假设我们从某个猜测的参数组合开始,例如 μ 太大而 σ 太小。我们想知道朝哪个方向调整参数能使拟合变得更好。

我们可以将参数的调整量视为一个向量:[Δμ, Δσ]。这个向量告诉我们如何在参数空间中移动。通过计算移动后新位置的“坏度”,我们可以判断这个移动方向是“下山”(变好)还是“上山”(变差)。

理想情况下,我们希望找到最陡的“下山”方向,以便快速到达最低点。这个过程就是优化。

向量的广义理解

由此可见,向量不必局限于物理空间中的几何箭头。它可以表示任何一组有序的数字列表。

以下是向量在不同领域的例子:

  • 计算机科学:一辆汽车可以表示为一个向量 [价格, 碳排放量, 噪音污染, 安全评级, 最高时速]
  • 材料科学:一种合金可以表示为其各组分含量的向量。
  • 物理学:爱因斯坦将时间视为第四维度,时空就是一个四维向量 [x, y, z, t]

同样,机器学习模型的全部参数也可以构成一个高维空间中的一个点,而参数更新就是在这个空间中的向量移动。

总结

本节课中,我们一起学习了向量的核心概念。我们从一个数据拟合问题出发,看到函数的参数可以构成一个空间,而参数的变化可以用向量来描述。优化拟合过程,就是在这个参数空间的地形图中,寻找“坏度”最低点的过程。理解向量是理解后续微积分(用于寻找梯度方向)和机器学习优化算法的基础。

004:向量的运算

在本节课中,我们将学习向量的基本概念和核心运算。向量不仅是描述物理空间中移动的工具,在数据科学中,它也能用来描述对象的属性。我们将从几何和代数两个角度理解向量,并掌握其加法和数乘运算。

向量的基本概念

向量可以被视为在空间中移动的对象。在物理学中,它通常表示一个有方向和大小的位移。在计算机与数据科学中,这个概念被推广了:向量可以是一个描述对象属性的列表。

例如,描述一栋房子时,我们可以用向量表示其属性:120平方米的居住面积、2间卧室、1间浴室和价值150000欧元。这个向量写作:[120, 2, 1, 150]。因此,向量从“在空间中移动”的概念,扩展到了“描述对象属性”。

向量的加法

向量遵循两个基本规则:加法和数乘。首先,我们从几何角度将向量视为从原点出发的箭头。

假设有一个向量 R。向量加法意味着将另一个向量 S 的起点放在 R 的终点,然后从原点指向 S 终点的向量就是 R + S

我们也可以先移动 S,再移动 R,得到 S + R。通过几何作图可以发现,R + SS + R 的结果相同。这说明了向量加法满足交换律R + S = S + R

向量的数乘

数乘是指用一个标量(实数)去缩放一个向量。例如,3R 表示将向量 R 的长度变为原来的3倍,方向不变。0.5R 则表示将其长度减半。

负数的数乘有特殊含义:-R 表示一个与 R 长度相同但方向相反的向量。因此,R + (-R) 的结果是零向量,即回到原点。

建立坐标系

为了更精确地描述和计算,我们引入坐标系。定义两个单位长度的基向量:

  • i:指向正右方的单位向量。
  • j:指向正上方的单位向量。

空间中任何向量都可以用 ij 的线性组合来表示。例如,向量 R = 3i + 2j 表示先向右移动3个单位,再向上移动2个单位,我们将其坐标记为 (3, 2)

另一个向量 S = -1i + 2j,则表示向左移动1个单位,再向上移动2个单位,坐标为 (-1, 2)

坐标下的向量运算

在坐标系中,向量的加法和数乘变得非常简单,只需对相应分量进行操作。

向量加法R + S = (3 + (-1), 2 + 2) = (2, 4)。这与几何上“首尾相接”的结果一致。

向量数乘2R = 2 * (3, 2) = (6, 4)

向量减法:减法可以转化为加法的特例。R - S = R + (-S)。其中 -S = -1 * (-1, 2) = (1, -2)。因此,R - S = (3 + 1, 2 + (-2)) = (4, 0)

这种按分量计算的方式,自然使得向量加法也满足结合律。即对于任意三个向量 R, S, T,有 (R + S) + T = R + (S + T)

回到数据示例

现在,让我们用向量的观点重新审视房子的例子。一栋房子的属性向量为:[120, 2, 1, 150]

数乘运算2 * [120, 2, 1, 150] = [240, 4, 2, 300]。这可以理解为两栋完全相同的房子合并后的总属性:240平方米、4间卧室等。

加法运算:一栋房子的向量加上另一栋(可能不同)房子的向量,就得到了两栋房子组合的属性总和。即使像“负一栋房子”这样的概念,在向量运算的框架下也有其数学意义。

总结

本节课中我们一起学习了向量的核心概念与运算。

我们首先将向量定义为满足加法数乘两种运算的对象。从几何上,我们理解了向量加法的“首尾相接”规则和数乘的“缩放”效果,并引入了基向量 i 和 j 来建立坐标系,从而将几何运算转化为对坐标分量的代数运算。

我们学习了以下关键运算和性质:

  • 向量加法:满足交换律 (R + S = S + R) 和结合律 ((R + S) + T = R + (S + T))。
  • 向量数乘:包括用正数、分数和负数对向量进行缩放。
  • 向量减法:定义为 R - S = R + (-S)

最后,我们看到了向量概念从几何空间到数据属性空间的强大推广能力。无论是描述空间中的点,还是描述像房子这样的复杂对象,向量的同一套运算规则都同样适用,这是线性代数成为机器学习基础数学工具的重要原因。

005:课程概述与向量基础

在本课程的第一个模块中,我们将开启线性代数的学习之旅。线性代数是理解机器学习和数据科学的核心数学工具。本模块将首先探讨数据的重要性,然后介绍向量的基本概念和运算,为后续更深入的学习打下基础。

🌍 数据世界与课程定位

我们首先审视了数据问题。现实世界充满了海量数据,若能掌握分析和利用这些数据的方法,我们就能真正解决世界上的诸多难题。本课程的目标,正是帮助我们进入机器学习和数据科学的世界,提供必要的数学基础。

🔍 问题示例:从方程到模型

为了理解线性代数的应用,我们看了一些具体问题。

以下是两个典型的例子:

  • 求解联立方程:例如在“苹果和香蕉”问题中,通过方程组来求解商品的价格。
  • 模型拟合:用带有待优化参数的模型方程去拟合一组数据,以找到最佳参数。

这两个问题都向我们展示了处理多个变量和关系时的核心挑战。

🧮 向量的引入与基本运算

我们指出,解决上述问题都需要用到向量,并可能涉及微积分。因此,我们以向量为起点,开始了学习之旅。

我们首先定义了向量的两种基本运算:

  1. 向量加法:两个向量对应分量相加。
    • 公式:若向量 a = [a₁, a₂], b = [b₁, b₂],则 a + b = [a₁ + b₁, a₂ + b₂]。
  2. 标量乘法:一个标量(实数)与向量的每个分量相乘。
    • 公式:若标量为 c,向量 v = [v₁, v₂],则 cv = [c·v₁, c·v₂]。

🚀 下一模块预告

上一节我们介绍了向量的基础定义和运算,本节中我们来看看课程的后续安排。

在下一个模块中,我们将进一步学习向量的更多运算,并定义向量空间、向量空间的坐标系或其的概念。这些概念是理解高维数据表示和变换的关键。

📝 总结

在本节课中,我们一起学习了线性代数课程的初步内容。我们认识到数据分析和机器学习的重要性,并通过实例问题了解了线性代数的应用场景。我们正式引入了向量的概念,并定义了其加法标量乘法的基本规则。这些是构建整个线性代数知识体系的基石。

006:向量基础操作

在本模块中,我们将学习向量的基本运算。我们将探讨如何计算向量的模长,如何通过点积将两个向量组合得到一个标量,并由此引出标量投影和向量投影的概念。之后,我们将学习用于定义空间的向量,即基向量,以及线性相关与线性组合的概念。这是关于向量的核心模块,掌握这些内容将为后续学习矩阵打下坚实基础。

向量的模长与点积

上一节我们介绍了向量的基本概念。本节中,我们来看看向量的两个基本运算:模长和点积。

向量的模长(或大小)表示其长度。对于一个n维向量 a = [a₁, a₂, ..., aₙ],其模长计算公式为:
|a| = √(a₁² + a₂² + ... + aₙ²)

点积是一种将两个向量组合产生一个标量的运算。对于两个向量 ab,其点积定义为:
a · b = a₁b₁ + a₂b₂ + ... + aₙbₙ

点积具有几何意义,它与两个向量夹角的余弦值有关:a · b = |a| |b| cosθ

标量投影与向量投影

基于点积的概念,我们可以定义投影。投影是将一个向量“映射”到另一个向量方向上的操作。

标量投影衡量了向量 a 在向量 b 方向上的有符号长度。其计算公式为:
Scalar Projection of a onto b = (a · b) / |b|

向量投影则得到了一个向量,它是 ab 方向上的完整向量分量。其计算公式为:
Vector Projection of a onto b = ((a · b) / (b · b)) * b

基向量、线性相关与线性组合

之前我们讨论了单个向量的运算和向量之间的关系。现在,我们来看看一组向量如何定义空间。

基向量是一组线性无关的向量,通过它们的线性组合可以表示空间中的任何向量。例如,在二维笛卡尔坐标系中,i = [1, 0] 和 j = [0, 1] 就是一组标准基向量。

以下是关于向量组的重要概念:

  • 线性组合:给定一组向量 {v₁, v₂, ..., vₖ} 和一组标量 {c₁, c₂, ..., cₖ},表达式 c₁v₁ + c₂v₂ + ... + cₖvₖ 称为这些向量的一个线性组合。
  • 线性相关:如果一组向量中,至少有一个向量可以表示为其他向量的线性组合,则这组向量是线性相关的。这意味着该向量集合中存在“冗余”信息。
  • 线性无关:如果一组向量中,任何一个向量都不能表示为其他向量的线性组合,则这组向量是线性无关的。它们是定义空间的最小、最有效的向量集。

总结

本节课中我们一起学习了向量的核心运算与概念。我们首先学习了如何计算向量的模长以及两个向量的点积。接着,我们利用点积定义了标量投影和向量投影。最后,我们探讨了基向量的概念,以及线性组合、线性相关和线性无关的定义,这些是理解向量空间结构的基础。掌握本模块的内容是学习后续矩阵知识的关键步骤。

007:模与内积

在本节课中,我们将学习向量的两个核心概念:向量的长度(模)以及向量之间的内积(点积)。我们将从几何和代数两个角度理解这些概念,并探讨它们的基本性质。

上一节我们介绍了向量的加法和数乘运算。本节中我们来看看如何定义和计算向量的长度,以及如何定义一种向量乘法——点积。

向量的长度(模)

一个向量,例如这里的 R,作为一个几何对象,具有两个基本属性:它的长度和它所指的方向。我们希望知道如何计算这两个属性,而不依赖于我们选择的具体坐标系。

如果坐标系是由两个相互正交的单位向量(例如 ij)构成的,那么向量 R 可以表示为:
R = ai + bj

其中,单位向量意味着它们的长度为1,通常用一个小帽子表示,如 îĵ

根据勾股定理,向量 R 的长度可以通过其分量计算得出。以下是计算步骤:

  1. i 方向的分量长度为 a(因为 i 的长度为1)。
  2. j 方向的分量长度为 b
  3. 因此,向量 R 的长度(模)为:√(a² + b²)

我们通常将向量 R 写为列向量形式:R = [a, b]ᵀ。那么其模(用双竖线表示)定义为:
||R|| = √(a² + b²)

这个定义不仅适用于空间维度(如x和y方向),也适用于分量具有不同物理单位(如长度、时间、价格)的向量。向量的模总是通过其各分量平方和的平方根来定义。

向量的点积(内积)

点积是线性代数中一个极其重要且美妙的概念。它定义了向量之间的一种乘法运算,结果是一个标量(数字)。

假设我们有两个向量 RS,在二维坐标系中,它们的分量分别为:
R = [R_i, R_j]ᵀ
S = [S_i, S_j]ᵀ

那么,向量 RS 的点积定义为将它们对应的分量相乘,然后求和:
R · S = R_i * S_i + R_j * S_j

例如,如果 R = [3, 2]ᵀS = [-1, 2]ᵀ,那么:
R · S = (3 * -1) + (2 * 2) = -3 + 4 = 1

所以,在这个例子中,R · S = 1

点积的基本性质

点积运算具有几个非常重要的数学性质,这些性质使其在理论和应用中都极为有用。

以下是点积的三个核心性质及其简要证明:

  1. 交换律
    点积满足交换律,即 R · S = S · R。这是因为乘法运算本身是可交换的,所以对应分量相乘的顺序不影响结果。

  2. 对向量加法的分配律
    点积对向量加法满足分配律。这意味着,对于任意三个向量 RST,有:
    R · (S + T) = R · S + R · T
    我们可以通过将分量展开并重新组合来证明这一点。

  3. 对标量乘法的结合律
    点积对标量乘法满足结合律。这意味着,对于一个标量 a 和向量 RS,有:
    R · (a * S) = a * (R · S)
    标量 a 可以从点积运算中提取出来。

符号说明:在物理学和工程学中,常用粗体表示向量(如 v),以区别于标量。在数学和计算机科学中,这种区分可能不那么严格。这只是一种记法上的差异,不影响概念本身。

点积与向量模的关系

点积与向量的模有着直接而优雅的联系。考虑一个向量 R 与自身的点积:
R · R = R₁² + R₂² + ... + R_n²

这正是向量 R 各分量平方的和。回想一下,向量模的平方正是这个和:
||R||² = R₁² + R₂² + ... + R_n²

因此,我们得到了一个关键公式:
R · R = ||R||²

这意味着,要计算一个向量的模,我们可以先计算该向量与自身的点积,然后取平方根:
||R|| = √(R · R)

这个关系非常简洁,它将向量的长度(一个几何概念)与其分量的代数运算紧密联系了起来。

总结

本节课中我们一起学习了向量的两个基本度量:模(长度)和内积(点积)。

  • 向量的 ||v|| 衡量其大小,计算公式为各分量平方和的平方根。
  • 向量的点积 u · v 是一种乘法运算,结果为标量,计算公式为对应分量乘积之和。
  • 点积具有交换律分配律对标量乘法的结合律
  • 一个向量与自身的点积等于其模的平方:v · v = ||v||²。这是连接代数运算与几何概念的重要桥梁。

理解模和点积是深入学习向量投影、角度计算以及更高级机器学习算法(如支持向量机、主成分分析)的基础。

008:余弦与点积

在本节课中,我们将学习如何从几何角度理解向量的点积。我们将通过一个熟悉的数学工具——余弦定理,来推导出点积的几何定义,并探讨其深刻的几何含义。

从余弦定理出发

上一节我们介绍了点积的基本代数定义。本节中,我们来看看点积的几何意义。为此,我们需要借助余弦定理。

余弦定理指出,对于一个边长为 ABC 的三角形,其中 CAB 的夹角 θ 的对边,有如下关系:

公式: C² = A² + B² - 2AB * cos(θ)

将定理转化为向量语言

现在,我们将这个几何关系翻译成向量语言。考虑两个向量 rs

向量 rs 的差向量是 r - s。在图中,这个差向量的长度就是边 C。根据余弦定理,我们可以写出:

公式: |r - s|² = |r|² + |s|² - 2|r||s|cos(θ)

关键推导:利用点积展开

以下是推导的核心步骤。我们知道,一个向量长度的平方等于它与自身的点积。因此,我们可以将等式的左边用点积展开:

公式: |r - s|² = (r - s) · (r - s)

接下来,我们像展开代数乘法一样展开这个点积:

公式: (r - s) · (r - s) = r·r + (-s)·r + r·(-s) + (-s)·(-s)

让我们一步步简化这个表达式:

  • r·r 就是 |r|²
  • (-s)·rr·(-s) 都等于 -(s·r),所以合并后是 -2(s·r)
  • (-s)·(-s) 等于 s·s,也就是 |s|²

因此,展开后的结果是:

公式: |r - s|² = |r|² - 2(s·r) + |s|²

建立等式并得出结论

现在,我们让这个用点积表示的结果,等于之前用余弦定理表示的结果:

公式: |r|² - 2(s·r) + |s|² = |r|² + |s|² - 2|r||s|cos(θ)

观察等式两边,|r|²|s|² 可以消去。然后,两边同时消去 -2,我们得到了一个简洁而重要的结论:

公式: r · s = |r| |s| cos(θ)

这就是点积的几何定义。它告诉我们,两个向量的点积,等于它们的长度(模)相乘,再乘以它们之间夹角的余弦值。

点积的几何含义

这个公式揭示了点积如何衡量两个向量的方向关系。让我们通过几个关键情况来理解:

以下是点积在不同夹角下的表现:

  1. 向量同向 (θ = 0°)

    • cos(0°) = 1
    • 此时,r · s = |r| |s|。点积取得最大值,为两个向量长度的乘积。
  2. 向量垂直/正交 (θ = 90°)

    • cos(90°) = 0
    • 此时,r · s = 0两个向量垂直时,它们的点积为零。 这是判断向量是否正交的重要条件。

  3. 向量反向 (θ = 180°)

    • cos(180°) = -1
    • 此时,r · s = -|r| |s|。点积取得最小值(最大的负值)。

总结

本节课中,我们一起学习了点积的几何意义。我们从余弦定理出发,通过向量运算推导出了核心公式 r · s = |r| |s| cos(θ)。这个公式表明,点积本质上度量了两个向量的“方向一致性”:

  • 当向量方向相同时,点积为正且最大。
  • 当向量垂直时,点积为零。
  • 当向量方向相反时,点积为负且最小。
    理解点积的这一几何特性,对于后续学习向量投影、机器学习中的相似度计算(如余弦相似度)等概念至关重要。

009:投影

在本节中,我们将学习线性代数中的一个核心概念:投影。我们将探讨如何将一个向量“投射”到另一个向量上,并理解点积在此过程中扮演的关键角色。


投影的几何意义

上一节我们介绍了点积可以计算向量间的夹角。本节中,我们来看看点积的另一个重要几何解释——投影。

假设我们有两个向量 RS。从向量 S 的末端向向量 R 作一条垂线,可以构成一个直角三角形。这个直角三角形的邻边(即 SR 方向上的“影子”长度)就是 SR 上的投影。

根据三角学,这个投影的长度等于 |S| cos θ,其中 θ 是两向量间的夹角。

点积与投影的关系

点积的定义公式为:
R · S = |R| |S| cos θ

从这个公式可以看出,点积 R · S 的值等于 R 的长度乘以 SR 方向上的投影长度(即 |S| cos θ)。

如果向量 S 垂直于 R(θ = 90°),那么 cos θ = 0,投影长度为零,点积结果也为零。这印证了点积能反映向量的方向一致性。

标量投影与向量投影

基于点积,我们可以定义两种投影:

1. 标量投影
标量投影是指 SR 方向上的投影长度(一个纯数值)。计算公式为:
标量投影 = (R · S) / |R|

这个公式直接由点积公式变形得到,它去掉了 R 自身长度的影响,只留下投影的数值大小。

2. 向量投影
向量投影不仅包含投影的长度,还指明了投影的方向(即 R 的方向)。计算公式为:
向量投影 = [(R · S) / (R · R)] * R

其中,(R · S) / (R · R) 计算的是标量投影与 R 长度的比值,再乘以向量 R 本身,最终得到一个与 R 方向相同、长度等于标量投影的向量。如果 R 是单位向量(长度为1),那么向量投影就简化为 (R · S) * R

以下是两种投影的关键点总结:

  • 标量投影:一个数值,表示投影的长度。
  • 向量投影:一个向量,同时包含了投影的长度和方向信息。

本节总结

本节课我们一起学习了投影的概念。我们了解到:

  1. 点积 R · S 的几何意义之一是 R 的长度乘以 SR 上的投影长度。
  2. 通过点积可以计算出标量投影(纯长度)和向量投影(带方向的向量)。
  3. 投影概念帮助我们理解一个向量如何“分解”或“映射”到另一个向量的方向上。

这是本周的核心内容。我们定义了向量的大小(模长),引入了点积(投影积),并探索了它的数学性质(分配律、结合律、交换律)和几何意义(求夹角、求投影)。理解投影是理解后续许多线性代数概念(如坐标变换、降维)的基础。建议在此暂停,尝试一些练习题来巩固这些概念,然后再继续学习。

010:改变基

在本节课中,我们将要学习向量空间中的坐标系概念,并探讨如何将一个向量从一个坐标系转换到另一个坐标系。我们将重点关注一种特殊情况:当新的基向量彼此正交时,如何使用点积(投影)来高效地完成这种转换。

到目前为止,我们尚未深入讨论向量空间所使用的坐标系,即我们所有向量赖以存在的坐标框架。然而,在进行点积或投影运算时,我们实际上是将向量投影到某个方向上,这个方向可能成为我们定义新坐标系的一部分。本节视频中,我们将明确坐标系的意义,并通过几个例子学习如何在不同的坐标系之间进行转换。

理解坐标系与基向量

回想一下,像这里的向量 R,它是一个将我们从原点带到空间中某一点的对象。这个空间可以是物理空间,也可以是数据空间(例如,用卧室数量和房龄来描述房屋)。

我们尚未真正讨论的是用来描述空间的坐标系。我们可以使用这里定义的两个向量来建立一个坐标系。之前我们称它们为 ij,现在我将给它们命名为 ê₁ê₂。我将其定义为单位长度(所以加上小帽子 ^),并具体定义为向量 (1, 0) 和 (0, 1)。如果空间有更多维度,我还可以有 ê₃ê₄ 等等。

在这种定义下,向量 R 可以表示为做 3 个 ê₁ 加上 4 个 ê₂ 的指令。因此,我们将其写成一个列表 [3, 4]。这里的 [3, 4] 就是“做 3 个 ê₁ 加 4 个 ê₂”的指令。

然而,选择 ê₁ê₂ 作为基向量是相当随意的,它完全取决于我建立坐标系的方式。我没有理由不能建立一个与之成某个角度的坐标系,甚至使用不互相垂直、长度也不相同的向量来定义坐标轴。我仍然可以用我用来定义空间的一些向量的组合来描述 R

引入新的基向量

例如,我可以有另一组向量 B。我称这里的 b₁ 为向量 [2, 1],另一个向量 b₂ 为向量 [-2, 4]。我已经用 E 坐标(即 ê₁, ê₂)定义了它们。然后,我可以用这些向量 b₁b₂ 来描述 R,只是 R 对应的数字会不同。

我们用来定义空间的这些向量(无论是 E 还是 B)被称为基向量。用来定义 R 的数字只有在我知道基向量是什么时才有意义。因此,R 相对于基向量 E[3, 4],但 R 相对于基向量 B 也存在,只是我们尚不知道具体的数字。

这非常奇妙:向量在某种深刻的数学意义上独立于我们用来描述它的坐标系而存在。从原点到某点的向量本身是独立于我们用来描述它的数字列表的,这是一个非常基本且巧妙的概念。

正交基下的转换方法

如果新的基向量(这些 B 向量)彼此垂直(正交),那么投影(点积)就有一个很好的应用。只要我们知道 BE 坐标系下的表示,我们就可以使用投影或点积来找出 R 在新基 B 下的坐标。

但这是一个重要的前提:b₁b₂ 必须彼此垂直。如果它们不垂直,我们就会遇到大麻烦,需要用到矩阵来进行所谓的“基变换”。我们将在后面学习矩阵。但目前,在这种特殊情况下使用点积,计算会更快、更容易,只是通用性较差。如果你能将新坐标轴安排为正交的,就应该这样做,因为它使计算更加简便快捷。

你可以看到,如果我将 R 投影到 b₁ 上(从上方垂直投影下来),我会得到一个标量投影的长度。这个标量投影就是 Rb₁ 方向上的“影子”。标量投影的数值描述了我需要多少份 b₁ 向量,而向量投影则会给我一个方向与 b₁ 相同、长度等于该标量投影的向量。

同样,如果我将 R 投影到 b₂ 上,我会得到另一个方向与 b₂ 相同、长度等于其标量投影的向量。如果我将这两个向量投影相加,我就会得到 R 本身。因此,通过计算这两个向量投影并将其向量和相加,我就能得到 RB 基下的坐标,从而完成从 E 基到 B 基的转换。

检查基向量的正交性

如何检查两个新的基向量是否垂直?只需计算它们的点积。我们之前学过,两个向量的点积公式为:
a · b = |a||b|cosθ
如果 b₁ · b₂ = 0,那么 cosθ = 0,这意味着 θ = 90°,即它们正交。

我不需要计算角度,只需计算点积。对于 b₁ = [2, 1]b₂ = [-2, 4]
b₁ · b₂ = (2 × -2) + (1 × 4) = -4 + 4 = 0
所以这两个向量是垂直的,因此可以安全地使用投影法进行转换。

数值计算示例

现在,让我们进行数值计算。我想知道在基 E 下的向量 R(粉色,[3, 4])在基 B 下的坐标。

首先,计算 Rb₁ 上的向量投影。公式为:
proj_{b₁}(R) = ( (R · b₁) / |b₁|² ) × b₁

  1. R · b₁ = (3 × 2) + (4 × 1) = 6 + 4 = 10
  2. |b₁|² = 2² + 1² = 4 + 1 = 5
  3. 标量系数 = 10 / 5 = 2
  4. 因此,向量投影 = 2 × b₁ = 2 × [2, 1] = [4, 2]

接下来,计算 Rb₂ 上的向量投影:
proj_{b₂}(R) = ( (R · b₂) / |b₂|² ) × b₂

  1. R · b₂ = (3 × -2) + (4 × 4) = -6 + 16 = 10
  2. |b₂|² = (-2)² + 4² = 4 + 16 = 20
  3. 标量系数 = 10 / 20 = 1/2
  4. 因此,向量投影 = (1/2) × b₂ = (1/2) × [-2, 4] = [-1, 2]

现在,将这两个向量投影相加:
[4, 2] + [-1, 2] = [3, 4]
这正好是我们原始的向量 R(在 E 基下)。这验证了我们的投影计算是正确的。

那么,在基 B 下,向量 R 的坐标就是这两个标量系数:[2, 1/2]。这意味着:
R_B = 2 × b₁ + (1/2) × b₂
非常简洁。我们仅用了几个点积计算,就完成了从 E 基向量组到 B 基向量组的转换。

总结

本节课中我们一起学习了:

  1. 向量可以独立于特定的坐标系而存在。
  2. 用来定义空间的向量称为基向量,描述向量的数字列表的意义依赖于所选的基。
  3. 我们可以将向量从一个坐标系(一组基向量)转换到另一个坐标系。
  4. 当新的基向量彼此正交时,我们可以高效地使用点积(投影) 来计算新坐标,公式为:对于新基向量 b_i,其对应的坐标分量 = (R · b_i) / |b_i|²
  5. 检查两个向量是否正交的方法是计算它们的点积是否为零:b₁ · b₂ = 0

这非常实用且巧妙。我们看到,描述数据的向量并不绑定于我们最初用来描述它的坐标轴。我们可以用其他坐标轴(其他基向量)重新描述它。在代数和机器学习中,仔细选择能帮助我们解决问题的基向量将是非常重要的。总的来说,我们可以通过点积运算,将描述数据项的向量中的数字从一组基转换到另一组基(在新基正交的条件下)。

011:基、向量空间和线性无关

在本节课中,我们将学习线性代数中的三个核心概念:向量空间线性无关。我们将了解基向量如何定义空间,以及如何判断一组向量是否线性无关,从而确定空间的维度。


我们已经看到,基向量不一定非得是通常的 (1,0)(0,1)(即所谓的自然基)。我们可以使用不同的基向量来重新定义在空间中移动的方式。

本节中,我们将正式定义什么是基、向量空间以及“线性无关”这个术语。这将帮助我们理解向量空间拥有多少个维度。

定义基

首先,我们来定义什么是

一个是一组由 n 个向量构成的集合,这些向量满足两个条件:

  1. 它们彼此之间不是线性组合关系,即它们是线性无关的。
  2. 它们张成(span)它们所描述的空间。

满足以上条件,这个空间就是 n 维的。

为了理解线性无关,我们可以这样想:如果一组向量中,任何一个向量都无法通过其他向量的线性组合来表示,那么这组向量就是线性无关的。

理解维度和线性无关

让我们通过图示来理解维度和线性无关。

  • 一维空间:假设我们有一个基向量 B1。通过取 B1 的倍数,我们可以到达这条直线(一维空间)上的任何一点。
  • 二维空间:如果我们引入第二个向量 B2,它不是 B1 的倍数。那么,通过取 B1B2 的线性组合(即 a1 * B1 + a2 * B2),我们就可以到达这个平面(二维空间)上的任何一点。
  • 三维空间:现在考虑第三个向量 B3。对于 B3 成为一个有效的第三个基向量,必须不可能找到一组数字 a1a2,使得 B3 = a1 * B1 + a2 * B2 成立。如果不可能找到,那么 B3 就是线性无关的,它为我们提供了一个三维空间。

反之,如果可能找到这样的 a1a2,那么 B3 就是 B1B2 的线性组合,它与 B1B2 位于同一个平面内,是线性相关的,并没有增加新的维度。

这个逻辑可以推广:如果我们有第四个向量 B4,它不是 B1B2B3 的线性组合,那么我们就得到了一个四维空间,依此类推。

基向量的性质

需要注意的是,基向量不一定需要满足以下条件:

  • 单位向量(长度为1的向量)。
  • 正交(彼此成90度角)。

然而,如果基向量既是单位向量又是正交的(即标准正交基),那么后续的许多运算会变得简单得多。因此,在可能的情况下,我们倾向于使用标准正交基。

基变换与线性代数

现在,让我们思考从一个基变换到另一个基时会发生什么。

原始坐标系的坐标轴(数轴)会“投影”到新的网格上,并且在新网格上可能具有不同的比例。但是,这种投影保持了网格的均匀间距。

因此,从一个坐标系(一组基向量)到另一个坐标系的任何映射,都保持了向量空间作为一个规则、均匀网格的特性。在这个空间中,向量加法和标量乘法的原始规则仍然有效。

它不会扭曲或折叠空间——这正是“线性代数”中“线性”一词的含义。空间可能会被拉伸、旋转或反转,但所有东西都保持均匀间隔,线性组合的规则依然成立。

当新的基向量不是正交的时候,为了进行基变换,我们将不能仅仅使用点积,而需要使用矩阵。这将是下一个模块要讨论的内容。


本节课中,我们一起学习了:

  1. 的定义:一组线性无关且能张成整个空间的向量。
  2. 线性无关的含义:一组向量中,任一向量都不能表示为其他向量的线性组合。
  3. 线性无关向量的数量决定了空间的维度
  4. 基向量可以是任意的,但标准正交基(正交的单位向量)能极大简化计算。
  5. 基变换保持了空间的线性结构(均匀网格),这是线性代数的核心。非正交基的变换需要用到矩阵。

012:改变基的应用

在本节课中,我们将探讨改变基(Change of Basis)在数据科学和机器学习中的实际应用。我们将看到如何通过选择新的基向量来重新描述数据,从而提取更有意义的信息,并理解数据的内在结构。


数据降维与特征提取

上一节我们介绍了基变换的数学原理。本节中,我们来看看如何利用这一原理来理解和简化现实世界的数据。

例如,假设我有一系列二维数据点,如下图所示。

这些数据点大致分布在一条直线上。我们可以看出,它们近似地排列在一条类似下图的直线上。

我可以想象通过将这些数据点映射到那条直线上来重新描述它们,然后描述它们沿着那条线走了多远。我可以将这个点向下映射到直线上,并设定原点映射到那里。然后我可以说,这个数据点位于直线上那么远的位置。

同时,它距离直线也有那么远。这样我就有了两个维度:一个是我沿着直线走了多远,另一个是我距离直线有多远。这些点距离直线的距离都略有不同。

在统计学中,关于如何测量这个距离存在一些争论——是垂直测量,还是作为到直线距离的投影来测量。这更多是理论上的争论。但请注意,这个到直线的距离实际上是衡量这团数据噪声大小的一个指标。

如果所有点都紧密地分布在直线上,那么它们到直线的距离就会非常小。如果它们分布得相当分散,那么距离就会相当大。因此,这个“到直线的距离”维度,本质上反映了噪声的大小。

这些噪声信息对我们来说可能不是非常有用,因此我们可能希望将其压缩掉。然而,这个噪声维度恰恰能告诉我这条直线的拟合效果有多好。如果最佳拟合线完全歪斜或完全错误,我得到的噪声数值就会大得多。如果最佳拟合线尽可能好,我得到的噪声数值就会尽可能小。

所以,这个噪声维度包含了能告诉我拟合优度的信息。在数据科学中,这告诉我我的模型对数据的拟合程度。我定义这两个维度(沿直线方向和远离直线方向)的方式是让它们彼此正交,因此我可以使用点积来进行投影,将数据从XY空间映射到由“沿直线”和“远离直线”这两个方向构成的新空间。

这正是我们在上一小节中学到的方法。


在机器学习中的应用:神经网络

现在,如果我们考虑一个用于识别人脸的机器学习神经网络,我可能希望将所有固定像素的人脸数据转换到一个新的基上。这个新的基可以描述鼻子的形状、肤色、眼睛之间的距离等特征,并丢弃原始像素数据。

因此,神经网络学习过程的目标,将是设法推导出一组基向量,这些基向量能够提取人脸中最富含信息的特征。

以下是神经网络学习过程的几个关键目标:

  • 推导一组新的基向量。
  • 这些基向量能提取数据中最关键的特征(如鼻形、肤色)。
  • 目标是降维并保留重要信息,丢弃冗余信息(如原始像素噪声)。

本章总结

在本视频中,我们从向量空间所拥有的独立基向量的数量角度,讨论了向量空间的维度。我们发现了一个测试独立性的方法:如果一组向量中没有一个向量是其他向量的线性组合,那么这组向量就是独立的

更重要的是,我们讨论了这在从一个空间映射到另一个空间方面意味着什么,以及这将如何在数据科学和机器学习中发挥作用。通过改变基,我们可以更有效地表示数据,聚焦于关键特征,并更好地理解数据中的模式和噪声。

013:总结

在本模块中,我们学习了线性代数中关于向量的核心概念。这些概念是理解机器学习算法背后数学原理的基础。接下来,我们将回顾本模块所涵盖的主要内容。

向量的基本概念

我们首先将向量定义为描述空间中位置的数学对象。这个空间可以是物理空间、数据空间,或是描述函数参数的参数空间。具体是何种空间并不重要,关键在于向量是描述空间位置的一种方式。

向量的运算

在定义了向量之后,我们引入了两种基本运算。

以下是向量运算的核心内容:

  • 向量加法:将两个向量相加。
  • 向量数乘:将一个向量乘以一个标量,使其长度缩放或方向反转。

向量的度量与投影

上一节我们介绍了向量的基本运算,本节中我们来看看如何度量向量以及向量之间的关系。

我们进一步学习了向量的模长(或称幅度)的计算方法,并定义了点积(标量积)和向量投影的概念。点积公式为:a · b = ||a|| ||b|| cosθ,其中θ是两向量间的夹角。

向量空间的基础

基于对单个向量的理解,我们开始研究由向量构成的集合——向量空间。

我们定义了向量空间的维数,以及线性无关线性组合的重要思想。一组向量是线性无关的,如果其中任何一个向量都不能表示为其他向量的线性组合。

基变换的应用

最后,我们探讨了这些概念的一个实际应用。

我们利用投影的方法,研究了如何将一个向量从一组基转换到另一组基,特别是在新基是正交基的情况下。正交基简化了许多计算。


在本节课中,我们一起学习了向量的定义、基本运算、模长与投影、向量空间的基础概念(如基、维数和线性无关性),以及基变换的初步应用。这些内容是理解后续矩阵相关知识的基石。在接下来的模块中,我们将继续学习与之紧密相关的矩阵概念。

014:矩阵、向量与联立方程

概述

在本节课中,我们将学习如何利用矩阵和向量来解决联立方程问题。我们将看到,矩阵不仅是能够旋转和拉伸向量的数学对象,也是求解实际问题的强大工具。


从实际问题到联立方程

课程开始时,我们遇到了苹果和香蕉的价格问题:如何在只知道总账单的情况下,找出每件商品的价格。之前我们学习了向量,现在我们将引入矩阵。矩阵是能够旋转和拉伸向量的对象,同时也能帮助我们解决这类问题。

让我们回到苹果和香蕉的问题。假设我走进一家商店,买了2个苹果和3个香蕉,总花费是8欧元。这可以表示为:
2个苹果 + 3个香蕉 = 8欧元

在另一天,我买了10个苹果和1个香蕉,总花费是13欧元。这可以表示为:
10个苹果 + 1个香蕉 = 13欧元

我们的目标是找出一个苹果和一个香蕉各自的单价。这在实际商业中很常见,例如在涉及复杂产品或服务的定价时。


用矩阵表示联立方程

上述联立方程可以用矩阵形式更简洁地表示。以下是表示方法:

我们可以将其写为:

[ 2  3 ]   [ A ]   =   [ 8 ]
[ 10 1 ]   [ B ]       [ 13 ]

其中:

  • [ 2 3; 10 1 ] 是一个 2x2矩阵(两行两列)。
  • [ A; B ] 是一个 2x1矩阵(列向量),代表未知数(苹果价格A和香蕉价格B)。
  • [ 8; 13 ] 也是一个 2x1矩阵(列向量),代表结果。

矩阵乘法的规则是:用左边矩阵的每一行,与右边列向量的对应元素相乘后求和。

按照这个规则展开:

  1. 第一行运算:2 * A + 3 * B = 8
  2. 第二行运算:10 * A + 1 * B = 13

这正好还原了我们最初的两个联立方程。这种表示法的优势在于,它将问题抽象为:一个矩阵(M)作用于一个输入向量([A, B]),得到了一个输出向量([8, 13])。我们的问题是:哪个输入向量经过变换后能得到 [8, 13] 这个输出?


矩阵作为空间变换函数

为了理解矩阵的作用,让我们看看它如何改变基础向量。

首先,用矩阵乘以x轴的单位向量 ê₁ = [1, 0]

[ 2  3 ]   [ 1 ]   =   [ 2*1 + 3*0 ]   =   [ 2 ]
[ 10 1 ]   [ 0 ]       [ 10*1 + 1*0 ]      [ 10 ]

结果是向量 [2, 10]。这意味着矩阵将基础向量 ê₁ 变换到了空间中的新位置 [2, 10]。我们可以记作:ê₁’ = [2, 10]

接下来,用矩阵乘以y轴的单位向量 ê₂ = [0, 1]

[ 2  3 ]   [ 0 ]   =   [ 2*0 + 3*1 ]   =   [ 3 ]
[ 10 1 ]   [ 1 ]       [ 10*0 + 1*1 ]      [ 1 ]

结果是向量 [3, 1]。这意味着矩阵将基础向量 ê₂ 变换到了新位置 [3, 1]。记作:ê₂’ = [3, 1]

由此可见,这个矩阵的作用是移动和拉伸整个空间的基础坐标系。它是一个函数,接收一个输入向量,并输出一个变换后的新向量。


线性代数的核心

现在,我们可以理解“线性代数”的含义了:

  • 线性:因为它只涉及输入值(如A和B)与常数的乘法和加法运算。
  • 代数:因为它是一套用于描述和操作这些数学对象(向量、矩阵)的符号系统。

因此,线性代数是一个用于操作向量以及向量所描述的空间的数学系统

联立方程、矩阵和向量之间存在着深刻的联系。解决联立方程问题的关键,在于理解矩阵如何变换向量,这正是线性代数的核心


总结

本节课我们一起学习了:

  1. 如何将实际的联立方程问题(如商品定价)转化为矩阵和向量的形式。
  2. 矩阵乘法如何对应到方程的每一项运算。
  3. 矩阵的几何意义:它是一个对空间进行变换的函数,会移动和拉伸基础向量。
  4. 线性代数的本质是研究向量空间及其线性变换的数学。

理解矩阵作为变换工具这一视角,是解决更复杂线性问题(包括我们的苹果香蕉问题)的基础。在接下来的课程中,我们将学习如何利用这种变换的逆过程来求解未知向量。

015:矩阵如何变换空间

概述

在本节课中,我们将学习矩阵如何对空间进行变换。我们将探讨不同类型的矩阵对空间产生的影响,以及连续应用多个矩阵变换(即变换的复合)会发生什么。理解这些概念是掌握线性代数在机器学习中应用的基础。

矩阵与空间变换

上一节我们介绍了矩阵的概念,并将其与求解线性方程组的问题联系起来。我们展示了矩阵的列向量代表了它对每个坐标轴上的单位向量所做的变换。

本节中,我们来看看不同类型的矩阵及其对空间的作用,以及如果我们先应用一个矩阵变换,再应用另一个(即复合变换)会发生什么。

因为任何向量都可以由缩放后的单位向量 ê₁ê₂ 的线性组合构成,这意味着变换的结果也仅仅是变换后的向量 ê₁'ê₂' 的某种线性组合。这一点可能有些难以理解,但其含义是:我们空间的网格线在变换后保持平行且等距。它们可能会被拉伸或剪切,但原点位置保持不变,并且空间不会产生任何弯曲或扭曲。这是向量标量加法和乘法规则的结果。

矩阵变换的代数性质

具体来说,如果我们有一个矩阵 A 和一个待变换的向量 r(例如我们之前苹果香蕉问题中的 [a, b]),变换后得到一个新向量 r'

我们可以观察对其进行代数运算时会发生什么。如果我将向量 r 乘以一个标量 n,然后应用变换 A,即计算 A(nr),结果将是 n 乘以变换后的向量 r'(即 nr')。这是因为在矩阵乘法中,标量可以提取出来。

类似地,如果我对两个向量 rs 的和应用变换 A,即计算 A(r + s),结果将等于分别变换后的向量之和,即 Ar + As

这意味着,如果我们将原始向量视为基向量 ê₁ê₂ 的线性组合(例如 nê₁ + mê₂),那么变换后的结果就是变换后基向量的相同线性组合(即 nê₁' + mê₂')。因此,空间被变换了,基向量 ê₁ê₂ 移动到了新的位置,然后我们只需用这些新基向量进行向量加法即可得到任何向量的变换结果。

这非常有用,它意味着我们所有的向量求和规则在变换后依然成立。

实例演示

上述内容可能有些抽象,让我们通过一个例子来具体说明。

我们使用之前苹果香蕉问题中的矩阵 A

A = [[2, 3],
     [10, 1]]

它的列向量分别是 [2, 10][3, 1]

现在,我们尝试变换一个向量 [3, 2]

方法一:直接计算
按照常规的矩阵乘法计算 A * [3, 2]

  • 第一个元素:23 + 32 = 6 + 6 = 12
  • 第二个元素:103 + 12 = 30 + 2 = 32
    所以结果是 [12, 32]

方法二:基于基向量变换理解
我们可以将向量 [3, 2] 看作是基向量的线性组合:3 * [1, 0] + 2 * [0, 1],即 3ê₁ + 2ê₂

根据矩阵的定义,矩阵 A 将基向量变换为:

  • ê₁' = A * [1, 0] = [2, 10]
  • ê₂' = A * [0, 1] = [3, 1]

那么,向量 [3, 2] 的变换结果就是变换后基向量的相同线性组合:
A * [3, 2] = 3 * ê₁' + 2 * ê₂' = 3 * [2, 10] + 2 * [3, 1] = [6, 30] + [6, 2] = [12, 32]

两种方法得到了完全相同的结果。这证实了我们的理解:矩阵乘法本质上就是计算变换后基向量的线性组合

总结

本节课我们一起学习了矩阵如何对空间进行线性变换。我们了解到:

  1. 矩阵的列向量指明了原始空间基向量的新位置。
  2. 线性变换保持网格线平行且等距,原点固定,空间不发生弯曲。
  3. 对向量的标量乘法和加法在变换前后遵循相同的规则(A(nr) = n(Ar)A(r+s) = Ar + As)。
  4. 因此,任何向量的变换结果,都可以通过将其表示为基向量的组合后,直接使用变换后的新基向量进行相同的组合来获得。

理解“矩阵定义了基向量的去向”这一核心观点,比机械记忆矩阵乘法步骤更为深刻。请尝试用自己的例子验证这一点,这是理解线性代数几何意义的关键一步。

016:矩阵变换的类型

在本节课中,我们将学习矩阵变换的基本类型。我们将看到,一个矩阵可以代表多种空间变换,包括恒等变换、缩放、翻转、镜像、剪切和旋转。理解这些基本变换是组合复杂变换的基础。

恒等矩阵:什么都不做

首先,我们思考一个不改变任何东西的矩阵,一个由空间基向量组成的矩阵。例如,在二维空间中,基向量是 (1, 0)(0, 1)。由它们组成的矩阵是:

I = [[1, 0],
     [0, 1]]

如果我将这个矩阵乘以任意向量 (x, y),结果不会改变 (x, y)。计算过程如下:

1*x + 0*y = x
0*x + 1*y = y

因此,这个矩阵不改变向量 (x, y)。它由基向量组成,并且不改变它们。这个矩阵被称为单位矩阵,记作 I,它什么都不做,保持一切不变。

缩放变换:拉伸或压缩空间

接下来,我们看看如果主对角线上是不同的数字会发生什么,例如矩阵 [[3, 0], [0, 2]]

这个矩阵会将 x 轴方向缩放 3 倍,将 y 轴方向缩放 2 倍。原来的单位正方形会变成一个矩形。如果缩放因子是分数,比如 1/3,那么空间会在那个方向上被压缩,图形会变得更薄更高。

翻转与反演:改变坐标方向

现在考虑一个包含负数的缩放矩阵,例如 [[-1, 0], [0, 2]]

这个操作会翻转 x 轴(从 (1,0) 变为 (-1,0)),同时将 y 轴缩放 2 倍。这改变了坐标系的“手性”。原本用右手描述的、逆时针旋转的坐标系,现在变成了左手系、顺时针旋转。

另一个矩阵是 [[-1, 0], [0, -1]],它反转了两个坐标轴,这被称为反演

镜像变换:交换或反射坐标轴

另一个有趣的矩阵是 [[0, 1], [1, 0]]

它将基向量 (1,0) 变换为 (0,1),将 (0,1) 变换为 (1,0)。这就像沿着 45 度线放置了一面镜子,交换了两个坐标轴。

类似的镜像矩阵还有:

  • [[0, -1], [-1, 0]]:另一种角度的镜像。
  • [[-1, 0], [0, 1]]:垂直镜像(翻转 x 轴)。
  • [[1, 0], [0, -1]]:水平镜像(翻转 y 轴)。

剪切变换:使图形倾斜

剪切变换是指保持一个基向量不变,而移动另一个。例如,保持 E1 = (1,0) 不变,但将 E2 = (0,1) 移动到 (1,1)

那么对应的变换矩阵就是:

[[1, 1],
 [0, 1]]

这个变换将单位正方形剪切为一个平行四边形。当然,也可以对 x 轴进行剪切,或者组合多种剪切。

旋转变换:改变方向

最后一种基本的形状变化是旋转。以 90 度旋转为例,基向量 (1,0) 旋转到 (0,1)(0,1) 旋转到 (-1,0)

因此,90 度旋转的变换矩阵是 [[0, 1], [-1, 0]]。更一般地,旋转角度 θ 的变换矩阵可以写为:

[[cosθ, -sinθ],
 [sinθ,  cosθ]]

(注意:这里正角度通常对应逆时针方向)

对于三维空间中的旋转,我们需要考虑绕哪个轴旋转。例如,绕 Z 轴旋转会保持 Z 坐标不变。虽然在数据科学中不像晶体学那样频繁讨论旋转,但在某些任务中仍然需要,例如人脸识别。我们可能需要通过旋转、拉伸、镜像和剪切等操作,将不同角度拍摄的人脸图像调整到统一的正面对齐状态。

总结

本节课中,我们一起学习了矩阵所能实现的所有基本空间变换类型:恒等缩放翻转/反演镜像剪切旋转。理解这些基本构件是至关重要的,因为任何复杂的线性变换都可以看作是这些基本操作的组合。在下一节中,我们将探讨如何将这些简单的变换组合起来,以实现更复杂的变换效果。

017:矩阵变换的合成或组合

在本节课中,我们将要学习如何将多个矩阵变换组合起来,形成一个复合变换。我们将通过具体的几何变换例子,理解矩阵乘法的运算规则及其非交换性。

概述:为什么需要组合变换?

上一节我们介绍了旋转、剪切、拉伸和反转等不同的几何变换。那么,了解这些变换的意义何在?

如果你希望对任何形状进行改变,例如调整一张人脸图像的所有像素,你总是可以通过旋转、剪切、拉伸和反转的某种组合来实现这种形状变化。

也就是说,如果我首先对一个向量 R 应用一个变换 A₁,这会产生第一次改变。然后,如果我对这个结果再应用另一个变换 A₂,那么我就执行了两个变换的组合。我所做的是先执行 A₁,再执行 A₂,即 A₂(A₁(R))

一个具体的组合变换例子

为了清晰地理解这个过程,让我们放慢速度,看一个具体的例子。

我们从标准基向量开始:

  • e₁ = (1, 0)
  • e₂ = (0, 1)

现在,我们定义第一个变换 A₁ 为逆时针旋转90度。以下是变换后的基向量:

  • 变换后的 e₁‘ = (0, -1)
  • 变换后的 e₂‘ = (1, 0)

因此,矩阵 A₁ 可以描述这个90度旋转:

A₁ = [[0, -1],
      [1,  0]]

接着,我们定义第二个变换 A₂ 为垂直镜像(沿y轴反射)。以下是变换后的基向量:

  • 变换后的 e₁‘ = (-1, 0)
  • 变换后的 e₂‘ = (0, 1)

因此,矩阵 A₂ 可以描述这个垂直镜像:

A₂ = [[-1, 0],
      [ 0, 1]]

现在,让我们探究如果先执行 A₁ 再执行 A₂,即计算 A₂(A₁) 会发生什么。

首先,我们对基向量应用 A₁,得到 e₁‘e₂‘。然后,我们对这些结果应用 A₂

  • e₁‘’ = A₂ 作用于 e₁‘ = (0, -1) → 结果仍是 (0, -1)
  • e₂‘’ = A₂ 作用于 e₂‘ = (1, 0) → 结果是 (-1, 0)

因此,复合变换 A₂ ∘ A₁ 的矩阵是:

A₂A₁ = [[0, -1],
        [-1, 0]]

我们可以通过矩阵乘法来验证这个结果,而不需要画图。矩阵乘法的规则是:用左边矩阵的每一行,点乘右边矩阵的每一列。

计算 A₂A₁

A₂A₁ = [[-1, 0],   *   [[0, -1],
        [ 0, 1]]        [1,  0]]

第一列(计算 A₂A₁ 的第一列):
- 第一行:(-1)*0 + 0*1 = 0
- 第二行:0*0 + 1*1 = 1
=> (0, 1)

第二列(计算 A₂A₁ 的第二列):
- 第一行:(-1)*(-1) + 0*0 = 1
- 第二行:0*(-1) + 1*0 = 0
=> (1, 0)

等等,这里似乎出现了不一致。让我们重新检查几何推导和矩阵计算。

根据之前的几何推导:

  • e₁‘’ = (0, -1)
  • e₂‘’ = (-1, 0)
    所以矩阵应为 [[0, -1], [-1, 0]]

但根据矩阵乘法计算:

  • 第一列结果是 (0, 1)
  • 第二列结果是 (1, 0)
    所以矩阵为 [[0, 1], [1, 0]]

这里存在矛盾。问题出在顺序上。当我们写 A₂(A₁(v)) 时,在矩阵表示法中,对应的运算是 A₂A₁ v。这意味着变换 A₁ 先作用于向量 v,然后 A₂ 作用于结果。在矩阵乘法中,右边的矩阵先应用

因此,我们想要计算 A₂ 作用于 A₁ 变换后的基向量。这等价于计算矩阵乘积 A₂ * A₁(注意:A₁ 在右边)。

让我们正确计算 A₂ * A₁

A₂ * A₁ = [[-1, 0],   *   [[0, -1],
           [ 0, 1]]        [1,  0]]
计算新矩阵的第一列(即原基向量 e1 经过复合变换后的位置):
- 新矩阵第一列 = A₂ * (A₁的第一列) = A₂ * [0; 1] = [(-1)*0 + 0*1; 0*0 + 1*1] = [0; 1]
计算新矩阵的第二列(即原基向量 e2 经过复合变换后的位置):
- 新矩阵第二列 = A₂ * (A₁的第二列) = A₂ * [-1; 0] = [(-1)*(-1) + 0*0; 0*(-1) + 1*0] = [1; 0]

所以 A₂A₁ = [[0, 1], [1, 0]]

这与我们最初的几何推导 [[0, -1], [-1, 0]] 不符。让我们重新审视几何步骤:

  1. A₁ (旋转90度):
    • e1 = (1,0) → e1‘ = (0, -1)
    • e2 = (0,1) → e2‘ = (1, 0)
  2. A₂ (垂直镜像) 作用于上述结果:
    • 对 e1‘ = (0, -1) 进行垂直镜像:(0, -1) 的x坐标取反 → (0, -1)? 等等,垂直镜像的规则是 (x, y) → (-x, y)。所以 (0, -1) → (0, -1) 是正确的,因为x坐标为0。
    • 对 e2‘ = (1, 0) 进行垂直镜像:(1, 0) → (-1, 0)。

因此,复合变换后的基向量为:

  • e1‘’ = (0, -1)
  • e2‘’ = (-1, 0)

对应的矩阵是 [[0, -1], [-1, 0]]

这与我们的矩阵乘法结果 [[0, 1], [1, 0]] 仍然不同。错误在于:当我们用矩阵 A₂ 左乘矩阵 A₁ 时,A₂ 的列并没有直接与 A₁ 的列相乘。矩阵乘法是 A₂ 的行与 A₁ 的列进行点积。

让我们严格按定义计算 C = A₂ * A₁,其中 C[i,j] 是 A₂ 的第 i 行与 A₁ 的第 j 列的点积。

A₂ = [[-1, 0],
      [ 0, 1]]

A₁ = [[0, -1],
      [1,  0]]

计算 C[1,1] (第一行,第一列): (-1)*0 + 0*1 = 0
计算 C[1,2] (第一行,第二列): (-1)*(-1) + 0*0 = 1
计算 C[2,1] (第二行,第一列): 0*0 + 1*1 = 1
计算 C[2,2] (第二行,第二列): 0*(-1) + 1*0 = 0

所以 C = A₂A₁ = [[0, 1],
                 [1, 0]]

这个矩阵表示将原始基向量变换到了哪里?

  • 第一列 (0, 1) 是原始 e1 的最终位置。
  • 第二列 (1, 0) 是原始 e2 的最终位置。

但在我们的几何推导中,原始 e1 最终在 (0, -1),原始 e2 最终在 (-1, 0)。这明显不同。

关键点:我们发现了顺序的重要性。A₂A₁ 表示先应用 A₁,再应用 A₂。而我们最初的几何推导“先旋转90度(A₁),再垂直镜像(A₂)”对应的矩阵乘法正是 A₂A₁。但我们的几何推导结果与矩阵乘法结果不一致,说明几何推导可能有误。

让我们重新进行几何推导,确保每一步都准确:

  1. 起点:e1=(1,0), e2=(0,1)
  2. 应用 A₁ (旋转90度逆时针):
    • e1 旋转到 (0, 1)? 不,逆时针旋转90度:(x,y) -> (-y, x)。所以 (1,0) -> (0, 1)。
    • e2 旋转到 (-1, 0)。因为 (0,1) -> (-1, 0)。
    • 所以 A₁ 的矩阵列确实是 [[0, -1], [1, 0]]? 等等,检查:第一列是 e1 变换后的坐标 (0,1),第二列是 e2 变换后的坐标 (-1,0)。所以 A₁ = [[0, -1], [1, 0]]。这里我最初写反了。正确的是:A₁ 将 (1,0) 映射到 (0,1),将 (0,1) 映射到 (-1,0)。因此 A₁ = [[0, -1], [1, 0]]。我之前错误地写了 e1‘=(0,-1),那是顺时针旋转90度。
  3. 应用 A₂ (垂直镜像) 到上一步的结果:
    • 对 e1‘ = (0, 1) 进行垂直镜像 (x,y)->(-x,y): (0,1) -> (0,1)
    • 对 e2‘ = (-1, 0) 进行垂直镜像: (-1,0) -> (1,0)
  4. 因此,复合变换后:
    • e1‘’ = (0, 1)
    • e2‘’ = (1, 0)
      这正是矩阵 [[0, 1], [1, 0]] 的列!

矛盾解决了。最初的几何描述中,对旋转方向的描述可能造成了混淆。正确的几何过程与矩阵乘法结果 A₂A₁ = [[0,1],[1,0]] 完全一致。

变换顺序不可交换

值得注意的是,从几何上看,先执行 A₂ 再执行 A₁(即 A₁A₂)与先执行 A₁ 再执行 A₂(即 A₂A₁)的结果是不同的。

让我们看看如果先做垂直镜像(A₂),再做90度旋转(A₁)会怎样,即计算 A₁A₂

通过矩阵乘法计算:

A₁A₂ = [[0, -1],   *   [[-1, 0],
        [1,  0]]        [ 0, 1]]

第一列:A₁ * [-1; 0] = [0*(-1)+(-1)*0; 1*(-1)+0*0] = [0; -1]
第二列:A₁ * [0; 1] = [0*0+(-1)*1; 1*0+0*1] = [-1; 0]

所以 A₁A₂ = [[0, -1],
             [-1, 0]]

这个矩阵代表原始 e1 变换到 (0, -1),原始 e2 变换到 (-1, 0)。

这与 A₂A₁ 的结果 [[0,1],[1,0]] 完全不同。因此,矩阵乘法不满足交换律

A₁A₂ ≠ A₂A₁

以下是核心结论:

  • 我们可以按任何分组顺序进行矩阵乘法(结合律),即 A₃(A₂A₁) = (A₃A₂)A₁
  • 但我们不能随意交换矩阵相乘的顺序(不满足交换律)。

总结

本节课中,我们一起学习了矩阵变换的合成。我们通过具体的旋转和镜像变换例子,演示了如何通过矩阵乘法将多个变换组合成一个复合变换。我们深入理解了矩阵乘法的运算规则,并发现了矩阵乘法的一个关键性质:不满足交换律。这意味着变换应用的顺序会直接影响最终结果。理解向量如何被矩阵变换,是线性代数的核心,也是解决联立方程组等问题的关键。

018:解决苹果和香蕉问题 - 高斯消元法

在本节课中,我们将学习如何解决“苹果和香蕉”这类线性方程组问题。我们将介绍一种名为高斯消元法的系统性解法,并在此过程中理解逆矩阵的概念及其求解思路。

上一节我们介绍了如何将购物问题表示为矩阵方程 A * R = S。本节中我们来看看如何系统地求解未知向量 R

逆矩阵的概念

首先,让我们思考矩阵 A。假设存在另一个矩阵,我们称之为 A^{-1},当它与 A 相乘时,结果是一个单位矩阵 I。这个矩阵 A^{-1} 就被称为 A逆矩阵

公式A^{-1} * A = I

单位矩阵 I 的作用类似于数字 1,任何矩阵乘以它都保持不变。因此,如果我们有方程 A * R = S,并在等式两边同时左乘 A^{-1},可以得到:

公式A^{-1} * A * R = A^{-1} * S => I * R = A^{-1} * S => R = A^{-1} * S

这意味着,如果我们能找到矩阵 A 的逆矩阵 A^{-1},那么对于任何输出向量 S,我们都可以直接计算出未知价格向量 R,从而解决我们的问题。

不过,在深入探讨如何求逆矩阵之前,我们先来看一种更直接、更通用的求解方法。

高斯消元法:一个具体例子

现在,我们来看一个稍复杂的问题,它涉及苹果、香蕉和胡萝卜三种商品。我们有以下三个方程:

  1. 1个苹果 + 1个香蕉 + 3个胡萝卜 = 15
  2. 1个苹果 + 2个香蕉 + 4个胡萝卜 = 21
  3. 1个苹果 + 1个香蕉 + 2个胡萝卜 = 13

我们可以将其写成矩阵形式 A * R = S,其中 R = [A, B, C]^T 代表价格。

解决这类方程组的关键思想是消元。我们可以通过将一行乘以某个系数后加到另一行上,来逐步简化方程组,而不改变方程组的解。

以下是具体的消元步骤:

首先,我们用第1行消去第2行和第3行中的第一个系数(即苹果的系数)。

  • 第2行减去第1行:(1-1)A + (2-1)B + (4-3)C = 21-15,得到 0A + 1B + 1C = 6
  • 第3行减去第1行:(1-1)A + (1-1)B + (2-3)C = 13-15,得到 0A + 0B - 1C = -2

现在方程组变为:

  1. A + B + 3C = 15
  2. B + C = 6
  3. -C = -2

此时,矩阵 A 的下三角部分(主对角线以下)都变成了0,这种形式被称为行阶梯形。从最后一行我们可以直接解出 C = 2

回代求解

得到 C = 2 后,我们可以将其代入前面的方程,逐步求出其他未知数。这个过程称为回代

  1. C = 2 代入第2行 B + 2 = 6,解得 B = 4
  2. B = 4C = 2 代入第1行 A + 4 + 3*2 = 15,即 A + 10 = 15,解得 A = 5

因此,我们得到解:苹果价格为5,香蕉价格为4,胡萝卜价格为2。

方法与总结

回顾整个过程,我们实际上执行了两个主要步骤:

  1. 前向消元:通过行之间的线性组合,将系数矩阵 A 化为上三角矩阵(行阶梯形)。
  2. 回代:从最后一个方程开始,将已求出的未知数代入上一个方程,依次求出所有未知数。

这种方法就是高斯消元法。它是求解线性方程组最经典、计算效率最高的方法之一,并且总是有效。

一个重要的观察是:在我们这个例子中,通过一系列行变换,我们最终将原始的系数矩阵 A 变成了单位矩阵 I。这个“将 A 变为 I”的过程,恰恰揭示了求解逆矩阵 A^{-1} 的途径——如果我们同时对这些行变换进行记录,并施加在单位矩阵 I 上,那么 I 最终就会变成 A^{-1}。这将是下一节我们要探讨的内容。

本节课中我们一起学习了如何使用高斯消元法解决线性方程组问题。我们理解了消元和回代的过程,并看到了这种方法与求解矩阵逆之间的深刻联系。

019:从高斯消元法到求逆矩阵

在本节课中,我们将学习如何将高斯消元法的思想应用于求解矩阵的逆。我们将通过一个具体的例子,展示如何通过一系列行变换,同时处理多个方程,最终求得给定矩阵的逆矩阵。


上一节我们介绍了如何使用高斯消元法求解线性方程组。本节中,我们来看看如何将这个方法推广,用于求解一个矩阵的逆矩阵。

假设我们有一个3x3的矩阵 A,其逆矩阵为 B。根据定义,A 乘以 B 应等于单位矩阵 I

公式A * B = I

对于本例,矩阵 A 如下:

A = [1, 1, 3]
    [1, 2, 4]
    [1, 1, 2]

我们用 B_{i,j} 表示逆矩阵 B 的元素,其中 i 代表行,j 代表列。因此,B 可以写作:

B = [B11, B12, B13]
    [B21, B22, B23]
    [B31, B32, B33]

单位矩阵 I 是:

I = [1, 0, 0]
    [0, 1, 0]
    [0, 0, 1]

我们的目标是找到矩阵 B


注意到方程 A * B = I 可以拆解为三个独立的方程组。例如,B 的第一列向量 [B11, B21, B31]^TA 相乘,应得到 I 的第一列 [1, 0, 0]^T

公式A * [B11, B21, B31]^T = [1, 0, 0]^T

理论上,我们可以对 I 的每一列分别使用消元法和回代法求解 B 的对应列。但更高效的方法是同时对所有列进行运算。


以下是同时对增广矩阵 [A | I] 进行高斯消元与回代,以求得逆矩阵 B 的步骤。

初始增广矩阵

[ 1, 1, 3 | 1, 0, 0 ]
[ 1, 2, 4 | 0, 1, 0 ]
[ 1, 1, 2 | 0, 0, 1 ]

第一步:消去第一列下方的元素

  • 将第1行乘以-1后加到第2行,使 a21 变为0。
  • 将第1行乘以-1后加到第3行,使 a31 变为0。

操作后矩阵变为:

[ 1, 1, 3 |  1, 0, 0 ]
[ 0, 1, 1 | -1, 1, 0 ]
[ 0, 0,-1 | -1, 0, 1 ]

第二步:处理第三行

  • 将第三行乘以-1,使主对角线元素 a33 变为1。

操作后矩阵变为:

[ 1, 1, 3 |  1, 0, 0 ]
[ 0, 1, 1 | -1, 1, 0 ]
[ 0, 0, 1 |  1, 0,-1 ]

第三步:回代,消去第三列上方的元素

  • 将第3行乘以-1后加到第2行,使 a23 变为0。
  • 将第3行乘以-3后加到第1行,使 a13 变为0。

操作后矩阵变为:

[ 1, 1, 0 | -2, 0, 3 ]
[ 0, 1, 0 | -2, 1, 1 ]
[ 0, 0, 1 |  1, 0,-1 ]

第四步:回代,消去第二列上方的元素

  • 将第2行乘以-1后加到第1行,使 a12 变为0。

操作后矩阵变为:

[ 1, 0, 0 |  0,-1, 2 ]
[ 0, 1, 0 | -2, 1, 1 ]
[ 0, 0, 1 |  1, 0,-1 ]

此时,左侧的矩阵 A 已被转化为单位矩阵 I。右侧的矩阵就是我们要求的逆矩阵 B

因此,矩阵 A 的逆矩阵 B 为:

B = [ 0,-1, 2 ]
    [-2, 1, 1 ]
    [ 1, 0,-1 ]

本节课中我们一起学习了如何通过扩展的高斯消元法求解矩阵的逆。我们从一个具体的3x3矩阵出发,通过同时对增广矩阵 [A | I] 进行行变换,将 A 化为单位矩阵 I,此时右侧的矩阵就是 A 的逆矩阵 A^{-1}。这种方法在计算上非常高效,尤其适用于高维矩阵,并且揭示了计算机求解此类问题的基本逻辑。你可以尝试将求得的逆矩阵与原矩阵相乘,验证结果是否为单位矩阵。

020:行列式与逆矩阵

在本节课中,我们将学习矩阵的一个重要属性——行列式,并探讨当矩阵的基向量不线性独立时会发生什么。我们将从几何和代数两个角度理解行列式的意义,以及它与矩阵可逆性的关系。

行列式的几何意义

上一节我们介绍了基向量,本节中我们来看看矩阵如何变换空间。考虑一个简单的对角矩阵:

[
A = \begin{bmatrix}
a & 0 \
0 & d
\end{bmatrix}
]

这个矩阵的作用是缩放空间。它将原始基向量 (\hat{e}_1) 和 (\hat{e}_2) 分别沿各自方向缩放 (a) 倍和 (d) 倍。原始空间是一个1x1的单位正方形,变换后,空间中的所有面积都被放大了 (a \times d) 倍。这个缩放因子 (ad) 就被称为该变换矩阵的行列式

现在,考虑一个更一般的矩阵:

[
A = \begin{bmatrix}
a & b \
c & d
\end{bmatrix}
]

它将单位正方形变换为一个平行四边形。通过几何计算可以得出,这个平行四边形的面积等于 (ad - bc)。我们用竖线符号表示求行列式的操作:

[
\text{det}(A) = \begin{vmatrix}
a & b \
c & d
\end{vmatrix} = ad - bc
]

行列式与逆矩阵的关系

在学校里,你可能学过如何求一个2x2矩阵的逆:交换主对角线元素,并对副对角线元素取负,再除以某个因子。让我们验证一下:

矩阵 (A) 的逆通常写作:
[
A^{-1} = \frac{1}{ad-bc} \begin{bmatrix}
d & -b \
-c & a
\end{bmatrix}
]

如果我们计算 (A \times A^{-1}):
[
\begin{bmatrix}
a & b \
c & d
\end{bmatrix}
\times
\frac{1}{ad-bc} \begin{bmatrix}
d & -b \
-c & a
\end{bmatrix}
= \frac{1}{ad-bc} \begin{bmatrix}
ad-bc & 0 \
0 & ad-bc
\end{bmatrix}
= \begin{bmatrix}
1 & 0 \
0 & 1
\end{bmatrix}
]

结果正是单位矩阵。这里的关键是,我们必须除以行列式 ((ad-bc)) 才能得到正确的逆矩阵。从几何角度看,原矩阵将空间放大了 (\text{det}(A)) 倍,而其逆矩阵需要将空间缩小回原来的大小,因此必须除以这个行列式值。

行列式为零的情况

现在,让我们思考一个特殊的矩阵:
[
A = \begin{bmatrix}
1 & 2 \
1 & 2
\end{bmatrix}
]

这个矩阵将基向量 (\hat{e}_1) 变换到 ((1,1)),将 (\hat{e}_2) 变换到 ((2,2))。这两个新向量位于同一条直线上,是线性相关的。这个矩阵将整个二维平面压缩到了一条一维的直线上。

计算其行列式:
[
\text{det}(A) = (1 \times 2) - (2 \times 1) = 0
]

行列式为零。从几何意义上说,任何面积经过变换后都变成了零(因为被压缩到了没有面积的线上)。对于3x3矩阵,如果三个新基向量不是线性独立的(例如其中一个可以由另外两个线性表出),那么变换会将三维空间压缩为一个平面或直线,其体积(三维行列式)同样为零。

线性相关性与求解方程

行列式为零与线性相关性直接相关,这会影响我们求解线性方程组的能力。

考虑以下方程组及其增广矩阵:
[
\begin{aligned}
x + 2y + 3z &= 10 \quad &(1) \
2x + 5y + 5z &= 20 \quad &(2) \
3x + 7y + 8z &= 30 \quad &(3)
\end{aligned}
]
其系数矩阵为:
[
\begin{bmatrix}
1 & 2 & 3 \
2 & 5 & 5 \
3 & 7 & 8
\end{bmatrix}
]

观察可以发现,第三行恰好是第一行和第二行之和,第三列也依赖于前两列。这意味着三个行向量(或列向量)不是线性独立的。

当我们尝试用行阶梯形(Row Echelon Form)法求解时:

以下是化简步骤:

  1. 从第二行减去第一行的2倍。
  2. 从第三行减去第一行的3倍。
  3. 从新的第三行减去新的第二行。

完成这些操作后,第三行会全部变为零,即得到 (0z = 0)。这个方程总是成立,没有提供关于 (z) 的新信息,因此 (z) 可以取任意值。我们无法得到唯一的解,方程组有无限多解。

这好比你去商店买苹果、香蕉和胡萝卜,但第三次购买的商品只是前两次的重复组合,没有提供新的信息,因此你无法唯一确定每种商品的单价。

不可逆矩阵的后果

当矩阵的行列式为零时,意味着其列向量(即新的基向量)线性相关。这会导致两个重要后果:

  1. 矩阵不可逆:因为逆矩阵公式中包含 (1 / \text{det}(A)),而行列式为零会使计算无意义。
  2. 信息丢失:变换将空间压缩到了更低的维度,丢失了部分信息。就像把一张纸揉成一条线,你无法再从这条线完美地恢复出原来的纸。由于信息丢失,逆变换不存在。

因此,在提议一组新的基向量并用矩阵变换数据之前,检查这些新基向量是否线性独立(即矩阵是否可逆)通常是很重要的。

总结

本节课中我们一起学习了:

  1. 行列式的几何意义:它衡量矩阵变换对空间面积的缩放因子。对于2x2矩阵,计算公式为 (\text{det}(A) = ad - bc)。
  2. 行列式与逆矩阵的关系:逆矩阵需要除以行列式来抵消原变换的缩放效应。
  3. 行列式为零的情况:当矩阵的列向量线性相关时,行列式为零。这意味着变换将空间压缩到更低维度,导致信息丢失。
  4. 不可逆性:行列式为零的矩阵没有逆矩阵,对应的线性方程组可能无解或有无穷多解,我们无法通过变换后的数据完美恢复原始数据。

理解行列式和线性独立性是判断矩阵是否可逆、变换是否可逆的关键,这在机器学习的许多算法(如求解参数、坐标变换)中至关重要。

021:矩阵基础总结

在本节课中,我们将要学习矩阵基础模块的总结。我们将回顾行列式、线性无关性以及矩阵变换的核心概念,并对整个模块的学习内容进行梳理。

行列式与空间变换

上一节我们介绍了矩阵的逆与线性方程组求解。本节中,我们来看看行列式。

我们在本模块最后一个视频中探讨了行列式,它衡量了矩阵对空间进行变换时,面积(或体积)的缩放比例。

行列式为零的特殊情况

我们同样研究了行列式为零的特殊情况。

我们发现,行列式为零意味着矩阵的列向量(即变换后的基向量)不是线性无关的。

并且,这也意味着该矩阵的逆矩阵不存在。

本模块内容回顾

在这个关于矩阵的第一个模块中,我们完成了以下内容:

我们定义了矩阵是什么——它是一种对空间进行变换的工具。

我们研究了不同类型的典型矩阵及其对应的空间变换效果。以下是几种主要类型:

  • 旋转矩阵:改变向量方向但不改变长度。
  • 逆矩阵:逆转一个变换的效果。
  • 伸缩矩阵:沿着坐标轴方向拉伸或压缩空间。
  • 剪切矩阵:使空间发生倾斜变形。

我们还学习了如何通过连续进行变换(即矩阵乘法或变换复合)来组合这些矩阵。

然后,我们探讨了如何通过消元法来求解线性方程组,以及如何寻找矩阵的逆。

最后,我们学习了行列式与线性无关性的概念及其重要联系。

总结与展望

本节课中,我们一起学习了矩阵作为空间变换的基本观点,掌握了包括旋转、伸缩、剪切在内的多种变换类型及其组合方式。我们理解了通过消元法求解方程和求逆矩阵的方法,并认识了行列式在判断变换缩放比例和矩阵可逆性中的关键作用。

下周,我们将继续深入,更加详细地研究矩阵的更多性质。

022:爱因斯坦求和约定与点积对称性

概述

在本节课中,我们将学习爱因斯坦求和约定,这是一种简洁地表示矩阵运算的方法。我们还将利用这个约定重新审视点积运算,并揭示其内在的对称性。

爱因斯坦求和约定

上一节我们讨论了矩阵乘法的几何意义。本节中,我们来看看另一种记录矩阵变换的重要方法,称为爱因斯坦求和约定。这种方法记录了矩阵元素上的实际运算,在编程时非常有用。

它还能让我们看到点积的一个巧妙特性,并允许我们处理非方阵。

我们最初说过,矩阵与向量或另一个矩阵相乘的过程是:依次取每一行的每个元素,与另一个矩阵中对应列的对应元素相乘,然后将所有乘积相加并放入结果矩阵的相应位置。

让我们具体写下来。这里我将写下一个矩阵 AA 是一个 N×N 矩阵,其元素为 A₁₁, A₂₁, ..., A_{N1},然后是 A₁₂, ..., A_{1N},接着是 A₂₂,以此类推,直到填满整个矩阵,最下面是 A_{NN}。

矩阵中这些元素的第一个下标是行号,第二个下标是列号。

现在,如果我想将 A 乘以另一个矩阵 BB 也是一个 n×n 矩阵,其元素为 B₁₁, B₁₂, ..., B_{1n},向下到 B_{n1},向右到 B_{nn}。

将它们相乘,我将得到另一个矩阵,称为 AB。然后,我将取 A 的一行乘以 B 的一列的元素,并将结果放在对应的位置。

让我们举个例子。如果我想得到元素 AB 的第2行第3列,即 (AB)₂₃,我将通过取 A 的第2行乘以 B 的第3列来得到。

A 的第2行是 A₂₁, A₂₂, ..., A₂ₙ。我将用它乘以 B 的第3列,即 B₁₃, B₂₃, ..., B_{N3}。然后将所有这些相加。这将是 AB 的第2行第3列元素。

在爱因斯坦约定中,你会这样表示:这是一个对某些元素 J 的求和,即 Σⱼ Aᵢⱼ Bⱼₖ。如果我遍历所有可能的 J 值求和,对于 i 和 k 为 1 的情况,我将得到 A₁₁B₁₁ + A₁₂B₂₁ + ... 等等。然后,我将遍历所有可能的 i 和 k 值。

爱因斯坦约定说:如果我有一个重复的索引,我就不用写这个求和符号 Σ,而直接写成 Aᵢⱼ Bⱼₖ,这等于乘积矩阵 AB 的元素 (AB)ᵢₖ。

所以,(AB)ᵢₖ = Aᵢ₁ B₁ₖ + Aᵢ₂ B₂ₖ + Aᵢ₃ B₃ₖ + ...,直到完成所有可能的 J。然后对所有的 i 和 k 执行此操作,就能得到整个乘积矩阵 AB

这在编码时非常方便,你只需对 i、j 和 k 运行三个循环,然后在这里对 J 使用累加器来找到乘积矩阵 AB 的元素。

因此,求和约定为这类运算的编码提供了一种快速方法。

非方阵乘法

到目前为止我们还没有讨论过这一点,但现在我们可以看到,只要矩阵在 J 维度上有相同数量的条目,即使它们的形状不同,我们也可以将它们相乘。

例如,我们可以将一个 2×3 矩阵(两行三列)乘以一个 3×4 矩阵(三行四列)。当我将它们相乘时,我将用那一行乘以那一列,在每种情况下我都有相同数量的 j。然后,我可以对所有可能的列执行此操作,所以我会得到一个有四列的结果。同时,我可以对这里的两个行执行此操作,我将得到一个 2×4 的矩阵输出。

因此,在一般情况下,我可以将这些非方阵相乘,得到另一个非方阵。结果矩阵的行数等于左边矩阵的行数,列数等于右边矩阵的列数。

当你这样做时,所有你可能想要的矩阵属性,如逆矩阵、行列式等,都会开始变得混乱和棘手,有时甚至无法计算。但有时你确实需要这样做。爱因斯坦求和约定使得很容易看出如何操作以及它如何工作:只要你有相同数量的 J,你就可以将它们相乘。

从求和约定看点积

现在,让我们根据求和约定重新审视点积。

如果我们有两个向量,称它们为 uv。我们说 u 是一个列向量,具有元素 uᵢ。v 是另一个列向量,具有元素 vᵢ。

当我们对它们进行点积时,我们所做的是将 u₁ 乘以 v₁,加上 u₂ 乘以 v₂,一直加下去。在求和约定中,这仅仅是 uᵢ vᵢ,其中我们对所有 i 重复并相加。

但这就像将 u 写成一个行矩阵,将 u 从向量转换为具有元素 u₁, u₂, ..., u_N 的矩阵,然后乘以另一个矩阵 v(元素为 v₁, v₂, ..., v_N)。这种矩阵乘法与点积是同一回事。

我只是将向量 u 转置,然后我的点积就像做矩阵乘法一样。这有点巧妙。

因此,在矩阵变换、矩阵乘法和点积之间存在某种等价性。让我们来看看这一点。

点积的对称性

现在,如果我在这里取一个单位向量,称之为 û,其分量为 u₁ 和 u₂。让我们想象一下,如果我用它与坐标轴向量做点积会发生什么。

如果我这里有一个坐标轴 ê₁,它是 (1, 0)。我还有另一个坐标轴 ê₂,它是 (0, 1)。

现在,想想当我把 ûê₁ 点积时会发生什么,即当我将 û 投影到 ê₁ 上时。当我把 û 向下投影到这个轴上时,我将得到一个长度,正好是 u₁,即 û 的 X 轴分量。

那么,如果我将 ê₁ 投影到 û 上会发生什么?那么,我将得到这个投影,我将得到这里的长度,即这个投影长度。

有趣的是,我们实际上可以在这里画一条对称线,穿过这两个投影相交的地方。这个小三角形和那个小三角形实际上是相同的,你可以去做一些几何证明来确认这一点。

所以这里的这个投影长度,与那个投影长度是相同的。这由点积的性质所暗示。如果我将 ê₁û 点积,当我进行这里的乘法时,它是对称的,我可以调换顺序,得到相同的答案。

这从几何上展示了为什么这是真的。如果我们用其他坐标轴(例如这里的 ê₂ 以及任何其他存在的坐标轴)重复这个过程,我们也会得到相同的结果。

这就是为什么投影是对称的,点积是对称的,以及为什么投影就是点积。因此,在这个数值运算(矩阵乘法)和这个几何概念(投影)之间存在着联系,这非常美妙且令人惊叹。

这就是为什么我们说矩阵与向量的乘法,就是将该向量投影到构成矩阵的向量(即矩阵的列)上。

总结

本节课中,我们一起学习了爱因斯坦求和约定,这是一种紧凑且对计算有用(但不太直观)的表示矩阵运算的方法。这为我们研究非标准形状的矩阵打开了大门,并让我们得以重新审视点积的对称性,这非常棒。

023:P23_矩阵 - 改变基_04_02_01

概述

在本节课中,我们将学习如何将一个向量从一组基向量转换到另一组基向量。我们将探讨使用变换矩阵及其逆矩阵进行转换的方法,并特别关注当新基向量正交时,如何使用更简单的点积投影方法来完成同样的任务。


变换矩阵的列向量含义

我们之前提到过,变换矩阵的列向量是映射中新基向量在我坐标系中的坐标轴。

现在,我们将花一些时间研究如何将向量从一组基向量转换到另一组基向量。

从熊猫的基向量转换到我的基向量

假设我有两个新的基向量来描述熊猫的世界。熊猫的世界是橙色的。熊猫的第一个基向量在那里,另一个基向量在那里。

在我的世界里,熊猫的基向量是 [3, 1][1, 1]。而我的基向量是 E1_hat = [1, 0]E2_hat = [0, 1]。这些是我的基向量,橙色的则是熊猫的基向量。

在熊猫的世界里,它的第一个基向量是 [1, 0],第二个基向量是 [0, 1]。但在我的蓝色坐标系中,熊猫的基向量是 [3, 1][1, 1]。因此,我可以将熊猫的变换矩阵 B 写为:

B = [[3, 1],
     [1, 1]]

现在,让我们取一个要转换的向量。假设这个向量在熊猫的世界里是 [3/2, 1/2]。这个指令的意思是:在我的坐标系中,执行 (3/2) * [3, 1] 加上 (1/2) * [1, 1]

在我的世界里,这将得到:

x = 3*(3/2) + 1*(1/2) = 9/2 + 1/2 = 10/2 = 5
y = 1*(3/2) + 1*(1/2) = 3/2 + 1/2 = 4/2 = 2

所以,在我的世界里,这个向量是 [5, 2]。因此,[3/2, 1/2](熊猫的向量)和 [5, 2](我的向量)是同一个东西。

这里的变换矩阵 B 的列是熊猫的基向量在我的坐标系中的坐标。它将熊猫的向量转换到我的世界。这通常会产生一个问题:我们通常希望将我的世界转换到熊猫的世界。因此,我们需要弄清楚如何进行反向操作。

如何进行反向转换?

我的下一个问题是:如何执行反向过程?这将会涉及到逆矩阵。

如果我称熊猫的变换矩阵为 B,那么我将需要 B 的逆矩阵 B^{-1}。这个矩阵的逆实际上很容易计算。对于一个 2x2 矩阵 [[a, b], [c, d]],其逆矩阵公式为 (1/(ad-bc)) * [[d, -b], [-c, a]]

对于我们的矩阵 B = [[3, 1], [1, 1]]

  • 行列式 det(B) = 3*1 - 1*1 = 2
  • 逆矩阵 B^{-1} = (1/2) * [[1, -1], [-1, 3]] = [[1/2, -1/2], [-1/2, 3/2]]

这个逆矩阵 B^{-1} 的列是我的基向量在熊猫坐标系中的坐标。也就是说,我的 [1, 0] 在熊猫的系统中是 (1/2)*[1, -1],而我的 [0, 1] 在熊猫的系统中是 (1/2)*[-1, 3]

我们可以验证这是正确的。如果我们取 (1/2)*[1, -1] 并用熊猫的基向量(即矩阵 B 的列)来组合它:

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

这正是我的单位向量 [1, 0]。所以,这确实执行了反向操作。

那么,如果我取我的向量 [5, 2],然后用 B^{-1} 乘以它,我应该得到该向量在熊猫基下的坐标。

B^{-1} * [5, 2]^T = [[1/2, -1/2], [-1/2, 3/2]] * [5, 2]^T = [ (5/2 - 2/2), (-5/2 + 6/2) ] = [3/2, 1/2]

我们得到了熊猫的向量 [3/2, 1/2],这正是我们开始时的向量。

所以,这就是进行反向过程的方法。如果你想将熊猫的向量带入我的世界,你需要熊猫的基在我的坐标系中的矩阵 B。如果你想做反向过程,你需要我的基在熊猫坐标系中的矩阵 B^{-1}

这可能相当违反直觉。因此,让我们尝试另一个例子。

正交基的转换示例

这次,熊猫的世界将是一组正交归一化的基向量。在我的蓝色世界里,基向量是 [1, 0][0, 1]。熊猫的世界是橙色的。

熊猫的世界有基向量 [1/√2, 1/√2][-1/√2, 1/√2]。我使它们成为单位长度。你可以计算点积来验证这两个向量彼此成90度角。在熊猫的世界里,它的向量 [1, 0][0, 1] 对应着这些。

那么,我可以写下熊猫的变换矩阵 B,它将熊猫世界的一个向量转换到我的世界。

B = (1/√2) * [[1, -1],
               [1,  1]]

现在,如果我在熊猫世界里有一个向量 [2, 1],那么我可以写下它,并因此得到它在我世界里的向量。

在我的世界里的向量 = B * [2, 1]^T
= (1/√2) * [[1, -1], [1, 1]] * [2, 1]^T
= (1/√2) * [ (2*1 + 1*(-1)), (2*1 + 1*1) ]
= (1/√2) * [1, 3]

所以,在我的世界里,这个向量是 (1/√2) * [1, 3]

如果我想做反向变换,我需要 B^{-1}。由于这是一个正交归一基,这个矩阵的行列式是1,所以计算变得非常简单。对于正交矩阵,其逆矩阵等于其转置矩阵。

B^{-1} = B^T = (1/√2) * [[1, 1],
                         [-1, 1]]

如果你代入计算,你会发现 B^{-1} * [1, 0]^T 确实得到熊猫世界的 [1/√2, 1/√2],反之亦然。

那么,如果我取我世界里的向量 W = [1, 3](注意,这里我们忽略了之前的缩放因子 1/√2,实际上完整的向量是 (1/√2)*[1, 3],但为了与投影法对比,我们先看坐标部分),并用 B^{-1} 乘以它,那么我得到的是熊猫世界里的向量。

B^{-1} * [1, 3]^T = (1/√2) * [[1, 1], [-1, 1]] * [1, 3]^T
= (1/√2) * [ (1+3), (-1+3) ]
= (1/√2) * [4, 2]
= [4/√2, 2/√2] = [2√2, √2]

但注意,我们原始的熊猫向量是 [2, 1]。这里出现了不一致,因为我们在前面计算 B * [2, 1] 时得到了 (1/√2)*[1, 3],这意味着我世界里的坐标是 [1/√2, 3/√2],而不是 [1, 3]。让我们纠正一下。

正确计算:
熊猫向量 v_bear = [2, 1]
我的向量 v_my = B * v_bear = (1/√2)*[[1, -1],[1, 1]] * [2, 1]^T = (1/√2)*[1, 3]
所以 v_my = [1/√2, 3/√2]

现在反向,用 B^{-1} 乘以 v_my
B^{-1} * v_my = (1/√2)*[[1, 1],[-1, 1]] * [1/√2, 3/√2]^T = (1/2)*[[1, 1],[-1, 1]] * [1, 3]^T = (1/2)*[4, 2] = [2, 1]
我们找回了熊猫的向量 [2, 1]。这确实有效。

使用投影法进行转换(仅限正交基)

以上都是准备工作,真正有趣的部分是:我们之前在向量模块中说过,如果新的基向量是正交的,我们可以仅通过使用投影来做到这一点,而这里的熊猫基向量正是正交的。让我们看看投影法如何工作。

我们之前说过,如果我取我的向量版本,并将其与熊猫的坐标轴(在我的世界里)进行点积,我将得到该向量在熊猫世界里的答案。

所以,对于我的向量 v_my = [1/√2, 3/√2](或者我们只关心它的方向/坐标部分 [1, 3],但点积时会处理长度),以及熊猫的第一个基向量 b1 = [1/√2, 1/√2]

在熊猫世界里的第一个分量 = v_my · b1
= (1/√2)*(1/√2) + (3/√2)*(1/√2)
= (1/2) * (1 + 3)
= (1/2) * 4
= 2

这将是熊猫向量的第一个分量,因为它是熊猫的第一个轴。

我可以再用熊猫的另一个轴做一次。熊猫的第二个基向量 b2 = [-1/√2, 1/√2]

在熊猫世界里的第二个分量 = v_my · b2
= (1/√2)*(-1/√2) + (3/√2)*(1/√2)
= (1/2) * (-1 + 3)
= (1/2) * 2
= 1

因此,通过点积,我们得到熊猫向量 [2, 1]。注意,我们在这里使用了投影将我的向量转换为熊猫的向量。

使用向量点积时,我必须记住在乘以熊猫的向量时进行归一化(即除以它们的长度)。但在本例中,它们的长度已经是1(因为它们是单位向量),所以实际上非常简单。因此,我们不需要复杂的矩阵数学,只需使用点积即可——前提是熊猫的向量是正交的。

非正交基的注意事项

最后一点:如果你尝试在我们之前做的第一个例子中使用点积法,其中熊猫的向量是 [3, 1][1, 1](它们彼此不正交),那么它将无法工作。请你自己尝试并验证这一点:它们需要是正交的,这种方法才能奏效。

如果你的基向量不是正交的,你仍然可以使用矩阵变换来完成转换,只是不能使用点积法。


总结

在本节课中,我们一起学习了基变换的核心概念:

  1. 变换矩阵 B 的列是新基向量在旧坐标系下的坐标,用于将向量从新基转换到旧基。
  2. 反向转换需要使用变换矩阵的逆矩阵 B^{-1},其列是旧基向量在新坐标系下的坐标。
  3. 当新基向量是正交归一的时候,转换可以简化为使用点积投影的方法,分别计算向量在新每个基向量方向上的投影长度作为新坐标。
  4. 如果基向量非正交,则必须使用矩阵变换方法,投影法不再适用。

通过理解这些原理,你可以在不同的坐标系之间自由地转换向量的表示,这是理解许多机器学习算法中数据变换和特征提取的基础。

机器学习数学:线性代数:P24:在改变后的基中进行变换

在本节课中,我们将学习如何对一个已经处于新基(例如“熊的基”)中的向量进行线性变换。我们将通过一个具体的例子——在新基中进行45度旋转变换——来演示整个过程,并推导出通用的变换公式。

上一节我们介绍了基变换的概念。现在,我们来看看如何在新基下执行变换操作。

假设我们有一个名为“熊的基”的非标准正交基。该基的第一个轴向量是 (3, 1),第二个轴向量是 (1, 1)。我们将其基矩阵记为 B

B = [[3, 1],
     [1, 1]]

现在,假设在该基中有一个向量,其坐标为 (X, Y)。我们想对这个向量进行一个45度的旋转变换。

问题在于,我们只知道如何在标准正交基(即 (1,0)(0,1) 构成的基)下表示45度旋转矩阵。在标准基下,一个单位向量的45度旋转矩阵 R 为:

R = (1/√2) * [[1, -1],
               [1,  1]]

为了在熊的基中对向量 (X, Y) 应用这个旋转,我们需要执行以下三个步骤:

  1. 将向量转换到标准基:将熊的基下的坐标 (X, Y) 左乘基矩阵 B,得到该向量在标准基下的坐标 B * [X, Y]^T
  2. 在标准基下进行旋转:对标准基下的向量应用旋转矩阵 R,得到 R * B * [X, Y]^T
  3. 将结果转换回熊的基:为了得到旋转后的向量在熊的基下的新坐标,我们需要将上一步的结果左乘 B 的逆矩阵 B^{-1},即 B^{-1} * R * B * [X, Y]^T

因此,整个变换过程可以总结为以下公式:

新坐标 = B^{-1} * R * B * 原坐标

其中,B^{-1} * R * B 这个整体,就是在熊的基下所对应的“45度旋转”变换矩阵。

让我们具体计算一下。首先计算 B 的逆矩阵:

B^{-1} = (1/2) * [[1, -1],
                  [-1, 3]]

接着计算中间结果 R * B

R * B = (1/√2) * [[2, 0],
                  [4, 2]]

最后,计算在熊的基下的变换矩阵 B^{-1} * R * B

B^{-1} * R * B = (1/(2√2)) * [[-2, -2],
                              [10,  6]]

这个矩阵就是在“熊的基”这个特定坐标系下,45度旋转变换的数学表示。可以看到,它与我们在标准基下熟悉的旋转矩阵 R 完全不同。如果不通过计算,我们很难直接想象出新基下的变换形式。

综上所述,当我们需要在非标准正交基(或任何新基)中进行线性变换时,变换矩阵的形式会发生改变。通用的方法是使用 B^{-1} * M * B 这个公式,其中 M 是标准基下的变换矩阵,B 是新基的基矩阵。这个操作将变换“包装”到了新的坐标系中。

本节课中,我们一起学习了如何通过基变换矩阵 B 及其逆矩阵 B^{-1},将一个已知的线性变换(如旋转)应用到新基下的向量上。核心公式 B^{-1} * M * B 是连接不同坐标系下变换的桥梁。虽然计算过程有些复杂,但掌握这一原理为我们后续学习诸如主成分分析等需要在不同基系统中操作的高级主题奠定了重要基础。

025:正交矩阵

在本节课中,我们将要学习一种特殊的矩阵——正交矩阵。这种矩阵的列向量构成了一组正交基,这使得它在变换数据时具有许多优良的性质,例如其逆矩阵就是其转置矩阵,计算非常方便。

转置操作

在深入探讨正交矩阵之前,我们首先需要定义矩阵的一个新操作:转置

转置操作是指交换矩阵所有行和列的元素。我们用上标 T 来表示一个矩阵的转置。其定义是:转置矩阵的第 i 行第 j 列元素,等于原矩阵的第 j 行第 i 列元素。

用公式表示如下:
(A^T)_{ij} = A_{ji}

例如,对于一个矩阵:
A = [[1, 2], [3, 4]]
它的转置 A^T 为:
A^T = [[1, 3], [2, 4]]
可以看到,对角线上的元素 14 位置不变,而非对角线上的元素 23 交换了位置。

正交矩阵的定义

现在,让我们想象一个 n x n 的方阵 A,它定义了一个变换,其列向量 a1, a2, ..., an 构成了新空间的一组基向量。

如果我们对这组基向量施加两个特殊条件,就会得到一个非常特殊的矩阵:

  1. 所有向量彼此正交(垂直)。
  2. 所有向量都是单位长度(长度为1)。

用数学公式来描述这两个条件就是:
ai · aj = 0,当 i ≠ j (正交)
ai · aj = 1,当 i = j (单位长度)

满足这两个条件的向量组被称为标准正交基。由标准正交基作为列向量构成的矩阵,就叫做正交矩阵

正交矩阵的逆矩阵

正交矩阵有一个非常美妙的性质:它的逆矩阵就是它的转置矩阵。

让我们看看为什么。根据定义,矩阵 A 的列向量是标准正交的。那么,当我们计算 A^T * A 时会发生什么呢?

A^T 是将 A 的行列互换得到的,所以它的行向量就是 A 的列向量 a1, a2, ..., an

当我们进行矩阵乘法 A^T * A 时:

  • 结果的第 i 行第 j 列元素,是 A^T 的第 i 行(即 ai)与 A 的第 j 列(即 aj)的点积。
  • 根据标准正交基的定义:如果 i = j,点积为 1;如果 i ≠ j,点积为 0

因此,A^T * A 的结果是一个单位矩阵 I
A^T * A = I

根据逆矩阵的定义,如果 B * A = I,那么 B 就是 A 的逆矩阵。这里我们得到了 A^T * A = I,所以 A^T 就是 A 的逆矩阵:
A^{-1} = A^T

同理,我们也可以得到 A * A^T = I。这意味着正交矩阵的行向量同样构成一组标准正交基。

正交矩阵的行列式

关于正交矩阵,还有一点需要知道:因为它的所有基向量都是单位长度,所以它对空间的缩放因子必须是1。因此,正交矩阵的行列式值只能是 +1-1

  • 行列式为 +1:表示变换保持了空间的“手性”(例如,右手坐标系保持为右手坐标系),这通常意味着基向量是按“正确”顺序排列的纯旋转。
  • 行列式为 -1:表示变换翻转了空间(例如,将右手坐标系变成了左手坐标系),这包含了反射操作。

如果我们发现一个正交矩阵的行列式是 -1,只需交换其中任意两个列向量的位置,其行列式就会变为 +1。

正交矩阵在数据科学中的意义

在上一节我们介绍了正交矩阵的数学性质,本节中我们来看看它在数据科学中的实际意义。

在数据科学中,我们经常需要对数据进行坐标变换。使用正交矩阵(即标准正交基)作为变换矩阵,会带来诸多好处:

以下是使用正交矩阵作为变换基的主要优势:

  • 逆变换易于计算:逆矩阵就是转置矩阵,计算成本极低。
  • 变换可逆且保形:变换不会挤压或拉伸空间(行列式为±1),信息不会丢失,变换是完全可逆的。
  • 投影计算简单:正如我们在向量模块中学到的,将一个向量投影到一组正交基上,只需要计算它与每个基向量的点积。这在正交矩阵变换下依然成立,计算非常高效。
  • 数值稳定性好:正交变换能很好地保持向量的长度和夹角,在数值计算中更稳定。

因此,在可能的情况下,我们总是希望使用正交矩阵来变换我们的数据。

总结

本节课中我们一起学习了正交矩阵的核心概念。我们首先定义了矩阵的转置操作,然后引出了由标准正交基构成的正交矩阵。我们证明了正交矩阵的逆矩阵就是其转置矩阵,并讨论了其行列式必须为 ±1 的特性。最后,我们探讨了在数据科学中使用正交基进行变换的诸多优点,包括计算简便和保持几何结构。理解正交矩阵是掌握许多机器学习算法(如主成分分析PCA)中线性代数基础的关键一步。

026:格拉姆-施密特过程

概述

在本节课中,我们将学习如何将一个线性无关的向量集合,转换为一组正交且长度为1的基向量,即标准正交基。这个过程被称为格拉姆-施密特正交化过程。拥有标准正交基可以极大地简化后续的向量运算和矩阵变换。

我们已经多次提到,如果能够构造出一组标准正交基,许多计算会变得非常简单。但我们尚未讨论如何实现这一点。本节视频将解决这个问题。我们将从一组已经线性无关且张成目标空间的向量出发,逐步将其正交化和归一化。

假设我们有一组向量 V,包括 V1, V2, ..., Vn。它们的数量足以张成我们感兴趣的空间。这些向量是线性无关的,但它们彼此之间并不正交,长度也不为1。如果它们能成为正交且长度为1的基向量,我们的计算将会方便得多。实现这一目标的过程就叫做格拉姆-施密特过程。

正交化过程详解

第一步:处理第一个向量

我们任意选取集合中的第一个向量 V1。在第一步中,它几乎可以原封不动地保留下来,我们只需要将其归一化(即调整其长度为1)。

我们定义最终的第一个基向量 e1V1 的归一化版本:
e1 = V1 / ||V1||

这里,||V1|| 表示向量 V1 的长度(模)。这样,e1 就是一个长度为1的向量。

第二步:处理第二个向量

现在考虑第二个向量 V2。它可以被分解为两个部分:一个部分平行于我们已经得到的 e1,另一个部分垂直于 e1

平行于 e1 的分量可以通过计算 V2e1 上的向量投影得到。投影公式为:
(V2 · e1) * e1
其中 · 表示点积。因为 e1 是单位向量(长度为1),所以分母为1,公式得以简化。

V2 中减去这个平行分量,剩下的就是垂直于 e1 的分量,我们称之为 u2
u2 = V2 - (V2 · e1) * e1

最后,我们将 u2 归一化,得到第二个标准正交基向量 e2
e2 = u2 / ||u2||

现在,e1e2 都是单位向量,并且彼此正交(夹角为90度)。

第三步:处理第三个及后续向量

上一节我们介绍了如何处理前两个向量,本节中我们来看看如何处理第三个向量 V3。由于向量组线性无关,V3 不在由 V1V2(也即 e1e2)所张成的平面内。

我们可以将 V3 投影到这个平面上。这个投影向量可以表示为 e1e2 的线性组合。然后,从 V3 中减去这个平面内的投影分量,剩下的就是垂直于该平面的分量。

具体步骤如下:

  1. 减去 V3e1 方向上的分量:(V3 · e1) * e1
  2. 减去 V3e2 方向上的分量:(V3 · e2) * e2

剩下的向量 u3 将垂直于 e1e2 所在的平面:
u3 = V3 - (V3 · e1)e1 - (V3 · e2)e2

最后,归一化 u3 得到第三个标准正交基向量 e3
e3 = u3 / ||u3||

对于后续的向量 V4, V5, ..., Vn,我们重复这一模式。

以下是处理第 k 个向量 Vk 的通用步骤:

  1. Vk 中减去它在所有已得到的标准正交基向量 e1, e2, ..., e(k-1) 方向上的投影。
  2. 公式为:uk = Vk - Σ (Vk · ei) * ei,其中求和 i 从 1 到 k-1。
  3. 归一化 uk 得到 ekek = uk / ||uk||

通过这个过程,我们成功地将一组“ awkward ”(非正交、非单位长度)的向量,转换成了一组“ nice ”(正交且为单位长度)的标准正交基向量。

标准正交基的优势

拥有标准正交基后,许多运算会变得非常简便:

  • 变换矩阵会更简单、更规整。
  • 矩阵的转置运算(特别是对于正交矩阵)会变得非常容易,因为正交矩阵满足 Q^T = Q^{-1}
  • 可以使用简单的点积来进行投影等变换操作。
  • 在进行旋转或其他向量变换时,计算会清晰且高效。

总之,这是一个非常实用的过程,能让我们在处理向量和矩阵时更加得心应手。

总结

本节课中,我们一起学习了格拉姆-施密特正交化过程。我们从一组线性无关的向量出发,通过逐步减去其在已有正交基方向上的投影归一化,最终构造出一组标准正交基。这个过程的核心步骤可以概括为:

  1. 将第一个向量归一化。
  2. 对于后续每个向量,先减去其在前所有正交基方向上的分量以获得正交向量,再将该正交向量归一化。

掌握这个方法,你就能为任何向量空间构建出便于计算的标准正交基,从而简化后续的线性代数运算。

027:在平面上反射

概述

在本节课中,我们将学习如何利用变换和基的知识,解决一个看似复杂的问题:计算一个向量在任意平面上的反射。我们将通过一个具体的例子,展示如何将复杂的几何问题转化为简单的矩阵运算。


构建正交基

上一节我们介绍了基变换的概念,本节中我们来看看如何为一个给定的平面构建一组方便计算的正交基。

我们已知平面包含两个向量:

  • V1 = (1, 1, 1)
  • V2 = (2, 0, 1)

同时,我们有一个不在该平面内的向量:

  • V3 = (3, 1, -1)

我们的目标是找到一组正交单位基 E1, E2, E3,其中 E1E2 张成该平面,而 E3 垂直于该平面。我们将使用格拉姆-施密特正交化过程。

第一步:计算 E1
E1 是 V1 的单位向量。V1 的长度为 √(1² + 1² + 1²) = √3。
因此:
E1 = (1/√3) * [1, 1, 1]ᵀ

第二步:计算 E2
首先计算与 E1 正交的分量 U2:
U2 = V2 - proj_{E1}(V2)
其中,投影 proj_{E1}(V2) = (V2 · E1) * E1
计算过程如下:
V2 · E1 = [2, 0, 1] · (1/√3)[1, 1, 1] = (1/√3)*(2+0+1) = 3/√3 = √3
因此:
proj_{E1}(V2) = √3 * (1/√3)[1, 1, 1] = [1, 1, 1]
所以:
U2 = [2, 0, 1] - [1, 1, 1] = [1, -1, 0]
最后,将 U2 单位化得到 E2。U2 的长度为 √(1² + (-1)² + 0²) = √2。
E2 = (1/√2) * [1, -1, 0]ᵀ

第三步:计算 E3
E3 应同时垂直于 E1 和 E2。我们使用 V3 减去其在 E1 和 E2 方向上的投影来得到这个垂直分量 U3:
U3 = V3 - proj_{E1}(V3) - proj_{E2}(V3)
计算两个投影:
proj_{E1}(V3) = (V3 · E1) * E1 = ([3,1,-1]·(1/√3)[1,1,1]) * (1/√3)[1,1,1] = (3/√3) * (1/√3)[1,1,1] = [1,1,1]
proj_{E2}(V3) = (V3 · E2) * E2 = ([3,1,-1]·(1/√2)[1,-1,0]) * (1/√2)[1,-1,0] = (2/√2) * (1/√2)[1,-1,0] = [1,-1,0]
因此:
U3 = [3, 1, -1] - [1, 1, 1] - [1, -1, 0] = [1, 1, -2]
将 U3 单位化得到 E3。U3 的长度为 √(1² + 1² + (-2)²) = √6。
E3 = (1/√6) * [1, 1, -2]ᵀ

现在,我们得到了一组标准正交基 E = [E1, E2, E3],它们构成了一个变换矩阵。


在新基下定义反射变换

我们已经有了描述平面及其法向的新基。接下来,我们思考在这个新坐标系下,反射变换是什么样的。

假设有一个向量 R,我们可以将其分解为平面内的分量(由 E1E2 组成)和垂直于平面的分量(由 E3 组成)。

  • 当进行反射时,平面内的分量保持不变。
  • 垂直于平面的分量方向会反转(正变负)。

因此,在由 {E1, E2, E3} 构成的基下,反射变换矩阵 T_E 非常简单:

T_E = [ [1, 0, 0],
        [0, 1, 0],
        [0, 0, -1] ]

这个矩阵的含义是:保持 E1 和 E2 方向的分量,将 E3 方向的分量取反。


通过基变换完成反射

然而,我们的原始向量 R(例如 R = [2, 3, 5]ᵀ)是定义在标准基下的。我们不能直接应用 T_E。我们需要一个“绕行”策略:

  1. 变换到新基:使用矩阵 E⁻¹ 将向量 R 从标准坐标变换到新基 {E1, E2, E3} 下的坐标 R_E。公式为:R_E = E⁻¹ * R
  2. 在新基下反射:对新坐标 R_E 应用简单的反射矩阵 T_E,得到反射后的新坐标 R‘_E。公式为:R‘_E = T_E * R_E
  3. 变换回标准基:使用矩阵 E 将反射后的坐标 R‘_E 从新基变回标准基,得到最终结果 R‘。公式为:R‘ = E * R‘_E

将这三步合并,得到完整的变换公式:
R‘ = E * T_E * E⁻¹ * R

这里有一个关键简化:由于 E 是由正交单位向量组成的矩阵,其逆矩阵等于其转置矩阵,即 E⁻¹ = Eᵀ。这使得计算变得容易。

因此,反射变换在标准基下的矩阵 T 为:
T = E * T_E * Eᵀ


计算结果

通过矩阵乘法计算 T = E * T_E * Eᵀ,然后将其应用于向量 R = [2, 3, 5]ᵀ,我们可以得到反射后的向量 R‘

计算过程涉及算术,此处直接给出结果:
R‘ = (1/3) * [11, 14, 5]ᵀ

这意味着,向量 (2, 3, 5) 在由 V1 和 V2 定义的平面上反射后,得到了新向量 (11/3, 14/3, 5/3)。


总结

本节课中我们一起学习了一个综合应用实例。我们利用格拉姆-施密特过程构建了正交基,通过基变换将复杂的空间反射问题,转化为在新基下的简单操作(仅反转法向分量)。这种方法避免了繁琐的三角几何计算,展示了线性代数中矩阵和变换的强大力量。这种技术在实际中非常有用,例如在计算机图形学中处理镜像,或在人脸识别中通过图像变换来增广数据集。

本周,我们深入探索了矩阵的世界,学习了构建正交基、变换基,并将其与向量和投影联系起来。这为我们接下来由萨姆引导的主题——特征值和特征向量——奠定了坚实的基础。

028:欢迎来到模块五

在本模块中,我们将学习线性代数中一个核心且强大的概念——特征问题。我们将综合运用之前模块中学到的所有知识,并最终通过一个编程练习来应用它,重现谷歌著名的网页排名算法。

欢迎来到最后一个模块。我是来自伦敦帝国理工学院戴森设计工程学院的 Sam Cooper 博士。我是一名能源研究员,使用机器学习作为工具来帮助我理解锂离子电池。我将接替 Dave,负责线性代数课程的最后一个主题。如果你继续学习本系列课程,我也将负责下一门关于多元微积分的课程。

在这个最后的模块中,我们将重点学习特征问题。这需要我们运用在之前模块中学到的几乎所有概念。为了完成本课程,你将在一个编程练习中应用这个工具,以重现谷歌著名的网页排名算法。该算法获取你的互联网搜索结果,并以某种便捷的顺序显示它们。

我希望你喜欢这个模块,并利用论坛让我们知道你的学习进展。


上一节我们介绍了本模块的总体目标。本节中,我们将开始深入探讨特征问题的基本思想。


在本节课中,我们一起学习了模块五的引入部分,了解了特征问题的重要性以及我们将要完成的最终实践项目——网页排名算法。接下来的课程将逐步展开特征值与特征向量的核心理论。

029:什么是特征值和特征向量

在本节课中,我们将要学习线性代数中的一个核心概念:特征值与特征向量。我们将通过几何图像来直观理解它们的含义,而不是一开始就陷入复杂的公式推导。

从“特征”一词说起

“Eigen”一词源自德语,最贴切的翻译是“特征”。因此,当我们讨论特征问题时,我们实际上是在寻找事物的特征属性。但具体是什么事物的特征呢?和之前几周的内容一样,本节将主要通过几何解释来阐明“特征”这一概念,这让我们可以先从图像入手,而不是立刻被数学符号所困扰。

变换与空间可视化

正如前几周所学,我们可以用矩阵来表示线性变换。这些操作包括缩放、旋转和剪切。通常,我们在应用这些变换时,会考虑它们对某个特定向量的影响。然而,思考变换作用于空间中所有向量时的整体效果也很有用。

这可以通过在原点中心画一个正方形来轻松可视化,然后观察应用变换后这个形状如何扭曲。

  • 如果我们应用一个垂直方向放大2倍的缩放,正方形会变成一个长方形。
  • 如果我们对这个空间应用一个水平剪切,它可能会变成类似这样的形状。

关键概念:特征向量的出现

我们使用小正方形来帮助可视化许多向量的变化。但请注意,有些向量最终仍停留在它们起始时的直线上,而其他向量则不会。为了突出这一点,我将在初始正方形上画出三个特定的向量。

现在,让我们再次考虑垂直缩放,并思考这三个向量会发生什么。

以下是具体变化:

  • 绿色的水平向量保持不变,指向相同的方向且长度相同。
  • 粉色的垂直向量也仍然指向与之前相同的方向,但其长度增加了一倍。
  • 橙色的对角线向量原本与坐标轴成45度角。现在它的角度和长度都发生了变化。

可以看到,除了水平和垂直向量,任何其他向量的方向都会被这个垂直缩放所改变。因此,在某种意义上,水平和垂直向量是特殊的,它们是这个特定变换的特征,这就是为什么我们称它们为特征向量

特征值的含义

此外,因为水平向量的长度没有改变,我们说它对应的特征值为1。而垂直特征向量的长度加倍了,所以我们说它的特征值为2。

从概念上讲,这就是二维特征问题的全部。我们取一个变换,寻找那些在变换后仍保持在原直线方向上的向量,然后测量它们的长度改变了多少。这基本上就是特征向量及其对应特征值的含义。

更多示例与推广

让我们再看两个经典例子,以确保我们能推广所学的知识。

这是我们的标记正方形。现在让我们看看纯剪切(“纯”意味着我们不进行任何额外的缩放或旋转,因此面积不变)。正如你可能发现的,只有绿色的水平线仍然沿着其原始方向延伸,所有其他向量都发生了偏移。

最后,让我们看看旋转。显然,这个变换没有任何特征向量,因为所有向量都从它们原始的直线上被旋转开了。

在本节课中,我们已经涵盖了关于特征值和特征向量几乎所有你需要知道的核心概念。虽然目前我们只在二维空间中讨论,但这个概念在三维或更高维度中是完全相同的。在本模块的其余部分,我们将查看一些特殊情况,并讨论如何用更数学化的术语来描述我们观察到的现象。

总结

本节课我们一起学习了特征值与特征向量的几何意义。我们了解到,对于一个线性变换,特征向量是那些在变换后方向保持不变的向量,而特征值则描述了这些向量长度缩放的比例。通过可视化变换对空间中所有向量的影响,我们可以直观地找出这些“特殊”的向量。这是理解矩阵深层属性和结构的重要基础。

机器学习数学:线性代数:P30:特殊的特征情况

在本节课中,我们将探讨特征向量和特征值概念中的几种特殊情况,以巩固我们的直觉理解,并尝试将这一概念扩展到三维空间。


概述

上一节我们介绍了特征向量和特征值的基本概念。本节中,我们将通过几个具体的线性变换例子,观察特征向量的特殊表现。这些例子包括均匀缩放、旋转以及剪切与缩放的组合。理解这些特例有助于我们为后续建立更严谨的数学定义打下基础。


均匀缩放

首先,我们考虑均匀缩放的情况,即在每个方向上进行相同比例的缩放。

正如你所发现的,不仅图中高亮的三个向量是特征向量,事实上,对于均匀缩放变换,任何向量都是特征向量。所有向量都停留在自身张成的直线上,只是长度发生了相同比例的变化。

核心公式:若变换矩阵 A 是单位矩阵的标量倍,即 A = kI,则任何非零向量 v 都是特征向量,对应的特征值均为 k


旋转

接下来,我们考察旋转变换。在之前的视频中,一个小的旋转被证明没有特征向量。然而,存在一种非零的纯旋转情况确实拥有特征向量,那就是旋转180度

如图所示,三个特征向量仍然停留在原来的直线上,只是指向了相反的方向。这意味着,对于这个变换,所有向量再次成为特征向量,并且它们的特征值都是 -1。这表示特征向量的长度没有改变,但方向全部反转。


剪切与缩放的组合

第三个案例,我们观察一个水平剪切垂直缩放的组合变换。这个例子比前几个稍微复杂一些。

与之前看到的纯剪切情况类似,绿色的水平向量是一个特征向量,其特征值仍然是1。然而,尽管图中最初显示的两个向量都不是特征向量,但这个变换实际上拥有两个特征向量。

现在,图中已添加了第二个特征向量。这表明,尽管特征向量的概念相当直观,但在实际中并不总是容易一眼识别。

让我们应用逆变换,观察平行四边形变回原始的正方形,但这次我们的特征向量是可见的。这应该能让你确信,它的确是一个特征向量,因为它始终停留在自身张成的直线上。


扩展到三维空间

在三维或更高维度中,这个问题会变得更加复杂。机器学习中许多应用特征理论的系统都涉及数百甚至更多维度。因此,我们显然需要一个更强大的数学描述来推进。

在建立正式定义之前,让我们快速看一个三维空间的例子。显然,缩放和剪切在三维空间中的行为与二维类似。然而,旋转在三维中有了新的含义。

从图像中可以看到,虽然粉色和绿色的向量方向发生了改变,但橙色的向量没有移动。这意味着橙色向量是一个特征向量。同时,这也给出了一个物理解释:如果我们找到了一个三维旋转的特征向量,那么我们也同时找到了该旋转的旋转轴


总结

本节课中,我们一起学习了一系列特征向量与特征值的特殊情况。我们看到了在均匀缩放中所有向量都是特征向量,在180度旋转中所有向量都是特征向量且特征值为-1,以及在组合变换中特征向量可能不那么显而易见。我们还初步探索了三维空间中旋转的特征向量与其旋转轴的关系。

这些特例引出了我们心中的疑问:如何为特征问题建立一个正式的定义?这正是我们下一节将要讨论的内容。

031:计算特征向量

在本节课中,我们将把对特征向量的几何理解,转化为一个严谨的代数表达式。这个表达式将允许我们计算特征值和特征向量。通过几个简单的例子,我们将验证这个方法的有效性,并理解为何在实际应用中我们通常依赖计算机来完成这些计算。

从几何到代数 🧮

上一节我们介绍了特征向量的几何意义。本节中,我们来看看如何用数学公式来定义它。

考虑一个变换矩阵 A。如果存在特征向量,那么这些向量在变换后仍然停留在原来的张成空间(span)上。它们可以改变长度甚至完全反向,但只要保持在同一根直线上,它们就是特征向量。

如果我们称特征向量为 x,那么可以写出以下表达式:

A x = λ x

在这个公式中:

  • 左侧是将变换矩阵 A 应用于向量 x
  • 右侧是将向量 x 拉伸某个标量因子 λ(λ 只是一个数字)。

我们的目标是找到能使等式成立的 xλ 的值。

构建特征方程 🔍

为了求解,我们可以重写这个表达式,将所有项移到一边并进行因式分解:

(A - λ I) x = 0

这里引入的 I 是单位矩阵,其大小与 A 相同,主对角线为1,其余为0。引入 I 是为了让矩阵减法在数学上成立,而不改变等式的含义。

现在,要使左边等于零,有两种可能:括号内的矩阵是零矩阵,或者向量 x 是零向量。我们对零向量解不感兴趣,它是一个平凡解。因此,我们必须找到使括号内项“作用”为零向量的情况。

引入行列式 📐

回顾课程前面的内容,我们可以通过计算矩阵的行列式来判断一个矩阵变换是否会将某个非零向量压缩为零向量。

因此,我们令:

det(A - λ I) = 0

这个方程被称为特征方程。对于高维矩阵,手动计算行列式工作量很大。我们以一个任意的2x2变换矩阵为例:

    [a  b]
A = [c  d]

代入特征方程,计算行列式:

det( [a-λ  b  ] ) = (a-λ)(d-λ) - bc = 0
     [c    d-λ]

展开后,我们得到一个关于 λ 的二次多项式,称为特征多项式

λ² - (a+d)λ + (ad - bc) = 0

特征值就是这个方程的解。求得特征值 λ 后,我们可以将其代回原始表达式 (A - λ I) x = 0 中来计算对应的特征向量。

应用示例:垂直缩放 ✨

与其继续讨论一般形式,不如将此方法应用到一个我们已知解的简单变换上。

以一个垂直方向缩放2倍的变换为例,其变换矩阵为:

    [1  0]
A = [0  2]

应用上述方法,计算 A - λ I 的行列式并令其为零:

det( [1-λ   0 ] ) = (1-λ)(2-λ) = 0
     [0    2-λ]

解得特征值为 λ₁ = 1λ₂ = 2

接下来,将每个特征值代回原式 (A - λ I) x = 0 求特征向量。

以下是求解过程:

  • λ = 1 时:
    (A - 1*I) x = [0  0] [x₁] = [0]
                  [0  1] [x₂]   [0]
    
    得到方程 x₂ = 0。这意味着特征向量在垂直方向分量为0,但水平分量 x₁ 可以是任意值。因此,特征向量为沿水平轴的任何向量,记作 [t, 0]^T,其中 t 为任意非零标量。
  • λ = 2 时:
    (A - 2*I) x = [-1  0] [x₁] = [0]
                   [0  0] [x₂]   [0]
    
    得到方程 -x₁ = 0,即 x₁ = 0。这意味着特征向量在水平方向分量为0,垂直分量 x₂ 可以是任意值。因此,特征向量为沿垂直轴的任何向量,记作 [0, t]^T

应用示例:90度旋转 🔄

现在,尝试一个我们预期没有(实)特征向量的变换:逆时针旋转90度。其变换矩阵为:

    [0  -1]
A = [1   0]

再次应用公式:

det( [-λ   -1] ) = λ² + 1 = 0
     [1    -λ]

特征方程为 λ² + 1 = 0,它在实数范围内无解。因此,该变换没有实特征值,也就没有实特征向量(尽管存在复数解,但本课程不涉及)。

核心要点与总结 🎯

本节课中我们一起学习了如何将特征向量的几何概念转化为代数计算方法。

我们建立了核心公式 A x = λ xdet(A - λ I) = 0,并通过两个例子验证了其正确性:

  1. 对于垂直缩放变换,我们成功求得了特征值和对应的特征向量空间。
  2. 对于90度旋转变换,特征方程无实根,证实了其没有实特征向量的几何直观。

尽管手动计算很有趣,但你必须明白,在实际应用中你几乎不需要手工进行这种计算。随着矩阵维度增加,求解N次特征多项式将很快无法通过解析方法完成。计算机在求解特征问题时,使用的是迭代数值方法。

培养对特征问题的深刻概念性理解,远比擅长手工计算更有价值。在接下来的视频中,我们将回顾基变换的概念,看看当使用特征向量作为基时会发生什么奇妙的事情。

032:变换到特征基

在本节课中,我们将要学习如何将特征向量与基变换的概念相结合,从而得到一个强大的工具——对角化。这个方法能让我们高效地计算矩阵的幂运算,例如计算 Tn 次方。

问题引入:重复的矩阵乘法

上一节我们介绍了特征向量的概念和计算方法。本节中我们来看看如何利用它们来简化复杂的矩阵运算。

有时我们需要重复进行相同的矩阵乘法。例如,假设一个变换矩阵 T 描述了粒子在一个时间步长内的位置变化。

初始位置由向量 v0 描述,乘以变换 T 后得到新位置 v1
v1 = T * v0

要计算粒子在两个时间步长后的位置 v2,只需将 v1 再乘以 T,这等价于将 v0 乘以 T 两次:
v2 = T * v1 = T * T * v0 = T² * v0

现在,假设这个线性变换在每个时间步长都发生,持续 n 步,那么 n 步后的位置为:
vn = Tⁿ * v0

对于一个三维矩阵,单次乘法已经需要不少计算量。如果 T 描述一秒内的变化,而我们想预测两周后(约120万秒)的位置,就需要计算 T 的120万次方,计算量巨大。

对角矩阵的便利性

如果矩阵中除了主对角线上的元素外,其余元素均为0,我们称其为对角矩阵。对于对角矩阵,计算其幂次方非常容易。

以下是计算对角矩阵 Dn 次方的方法:
Dⁿ = [[aⁿ, 0, 0], [0, bⁿ, 0], [0, 0, cⁿ]]
你只需要将每个对角线元素分别取 n 次幂即可。

这非常简单。但如果 T 不是对角矩阵呢?答案就在于特征分析。

构建特征基

正如你可能猜到的,解决方案来自于特征分析。本质上,我们要做的是变换到一个新的基,使得在这个新基下,变换 T 表现为一个对角矩阵。这个新基就是特征基

在基变换章节中我们学到,变换矩阵的每一列代表变换后的单位基向量的新位置。因此,要构建我们的特征基转换矩阵 C,我们只需将每个特征向量作为列向量放入矩阵中。

对于一个三维的例子,假设我们有三个特征向量 ξ1ξ2ξ3
C = [ξ1, ξ2, ξ3]
需要注意的是,某些特征向量可能是复数,在纯几何视角下不易观察,但在数学计算中它们与其他特征向量无异。

在对角化形式下进行变换

应用这个基变换后,我们进入了一个新“世界”。在这个世界里,乘以 T 的效果本质上只是纯粹的缩放。换句话说,T 现在可以用一个对角矩阵 D 来表示。

关键点在于,这个对角矩阵 D 包含了矩阵 T 对应的特征值:
D = [[λ1, 0, 0], [0, λ2, 0], [0, 0, λ3]]
其中 λ1λ2λ3 是特征值,其余位置为零。

核心公式:矩阵的对角化

现在,我们将所有概念串联起来。应用变换 T,等价于先转换到特征基,然后应用对角矩阵 D,最后再转换回原来的基。

因此,我们可以得到核心关系式:
T = C * D * C⁻¹

这个公式意味着,原矩阵 T 可以分解为三个矩阵的乘积。

计算矩阵的幂

基于上述分解,计算 T 的平方就变得简单了:
T² = (C * D * C⁻¹) * (C * D * C⁻¹)
观察等式右边中间部分,是 C⁻¹ * C。一个矩阵乘以它的逆矩阵等于单位矩阵,相当于没有操作,因此可以消去:
T² = C * D * (C⁻¹ * C) * D * C⁻¹ = C * D * I * D * C⁻¹ = C * D² * C⁻¹

我们可以将此推广到 T 的任意次幂 n。最终,我们得到计算 Tⁿ 的强大公式:
Tⁿ = C * Dⁿ * C⁻¹

方法优势

现在我们有了一个方法,可以让我们以较低的计算成本,将变换矩阵应用任意多次。我们不再需要将 T 自乘 n 次,而只需计算对角矩阵 Dn 次方(这非常容易),然后进行两次矩阵乘法(CC⁻¹)即可。

总结

本节课中我们一起学习了矩阵对角化的核心思想与应用。我们了解到,通过将矩阵变换到其特征基,可以将其表示为对角矩阵。利用公式 T = C * D * C⁻¹ 及其推论 Tⁿ = C * Dⁿ * C⁻¹,我们能高效地计算矩阵的幂,从而解决诸如预测粒子长期运动轨迹等需要重复应用线性变换的问题。

这个结果融合了本课程中迄今为止遇到的许多概念。在下一个视频中,我们将通过一个简单的例子来演练,以确保这种方法在应用时符合我们的预期。

033:特征基例子

在本节课中,我们将通过一个简单的二维例子,直观地理解特征基与对角化的理论,并验证其计算过程。

上一节我们介绍了特征基与对角化的理论,本节中我们来看看一个具体的二维变换例子。

考虑变换矩阵 T

T = [1, 1]
    [0, 2]

矩阵的第一列是 [1, 0],这意味着基向量 i hat 在变换后保持不变。第二列是 [1, 2],这意味着基向量 j hat 会变换到坐标 [1, 2]

我们同时考虑一个额外的向量 [1, 1]。将其与矩阵 T 相乘:

[1, 1]   *   [1, 1]   =   [1*1 + 1*0, 1*1 + 1*2]   =   [1, 3]
[0, 2]       [1, 1]       [0*1 + 2*0, 0*1 + 2*1]       [0, 2]

结果是 [1, 3]。这个变换可以分解为:先进行垂直方向2倍的缩放,再进行水平方向0.5步的剪切。

由于我们选择了一个简单的变换,其特征向量和特征值很容易观察出来。

以下是其特征值与特征向量:

  • 当特征值 λ = 1 时,对应的特征向量是 [1, 0]
  • 当特征值 λ = 2 时,对应的特征向量是 [1, 1]

现在,让我们考虑对向量 [-1, 1] 连续应用两次变换 T

首先,计算 T * [-1, 1]

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

得到结果 [0, 2]

然后,计算 T * [0, 2]

[1, 1]   *   [0]   =   [1*0 + 1*2]   =   [2]
[0, 2]       [2]       [0*0 + 2*2]       [4]

最终得到 [2, 4]

接下来,我们尝试先计算 ,再将其作用于向量 [-1, 1],看结果是否一致。

计算

T² = T * T = [1, 1]   *   [1, 1]   =   [1*1+1*0, 1*1+1*2]   =   [1, 3]
             [0, 2]       [0, 2]       [0*1+2*0, 0*1+2*2]       [0, 4]

然后计算 T² * [-1, 1]

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

结果同样是 [2, 4]

现在,我们使用特征基对角化的方法来计算

首先,用特征向量构建转换矩阵 C

C = [1, 1]
    [0, 1]

然后,求其逆矩阵 C⁻¹。由于 C 是一个向右平移一步的剪切矩阵,其逆矩阵就是向左平移一步:

C⁻¹ = [1, -1]
      [0,  1]

根据对角化公式,T = C D C⁻¹,其中 D 是由特征值构成的对角矩阵。因此,T² = C D² C⁻¹

以下是计算步骤:

  1. 构造对角矩阵 D 及其平方
    D = [1, 0]    D² = [1², 0] = [1, 0]
        [0, 2]         [0, 2²]   [0, 4]
    
  2. 计算 C * D²
    [1, 1]   *   [1, 0]   =   [1*1+1*0, 1*0+1*4]   =   [1, 4]
    [0, 1]       [0, 4]       [0*1+1*0, 0*0+1*4]       [0, 4]
    
  3. 计算 (C * D²) * C⁻¹,即
    [1, 4]   *   [1, -1]   =   [1*1+4*0, 1*(-1)+4*1]   =   [1, 3]
    [0, 4]       [0,  1]       [0*1+4*0, 0*(-1)+4*1]       [0, 4]
    

我们得到了与直接计算相同的 矩阵 [1, 3; 0, 4]。将其作用于向量 [-1, 1],结果自然是相同的 [2, 4]

在数学中,一旦真正理解了一个概念,借助计算机通常就不再需要手动进行这类计算。然而,亲手演算几个例子对于确保完全理解仍然非常有益。本系列视频并未涵盖特征理论的所有方面,例如不可对角化矩阵和复特征向量。但如果你已经掌握了我们讨论的核心主题,那么你的基础就非常扎实了。

本节课中我们一起学习了如何通过一个具体的二维变换例子,应用特征基对角化的方法验证矩阵幂的计算。在下一个视频中,我们将探讨特征理论的一个实际应用,这需要暂时抛开我们一直使用的几何直观,纯粹地信任数学推导。

034:PageRank算法简介

在本节课中,我们将学习本模块,也是整个课程的最后一个主题:PageRank算法。该算法由谷歌联合创始人拉里·佩奇及其同事在1998年提出并命名,最初用于帮助谷歌决定在搜索结果中如何排序网站。我们将了解其核心思想、数学模型以及如何通过线性代数中的特征值问题来求解。

核心假设与模型

上一节我们介绍了特征值问题,本节中我们来看看它在网页排序中的一个经典应用。PageRank算法的核心假设是:一个网站的重要性与其和其他网站之间的链接关系有关

我们可以用一个简单的“微型互联网”模型来理解。下图中的每个气泡代表一个网页(A、B、C、D),箭头代表一个网页上的链接,可以带你跳转到另一个网页。

我们的目标是,基于这个网络结构,构建一个表达式来判断哪个网页对搜索者最相关。

“拖延症患者帕特”模型

为了量化网页的重要性,我们引入一个“拖延症患者帕特”的概念。帕特是一个虚构的人物,他上网时会随机点击页面上的链接来逃避工作。

通过映射所有可能的链接,我们可以建立一个模型,来估计帕特在每个网页上预期会花费的时间。

构建链接矩阵

我们可以将网页A上存在的链接描述为一个向量。向量的每一行根据是否存在指向对应页面的链接,取值为1或0,然后通过链接总数进行归一化,使其能描述从该页面出发的点击概率。

以下是构建链接向量的步骤:

  • 网页A:有指向B、C、D的链接,共3个链接。因此其链接向量为 [0, 1, 1, 1],归一化后为 [0, 1/3, 1/3, 1/3]。写作:
    L_A = [0, 1/3, 1/3, 1/3]^T
  • 网页B:有指向A和C的链接,共2个链接。因此:
    L_B = [1/2, 0, 1/2, 0]^T
  • 网页C:只有指向A的链接,共1个链接。因此:
    L_C = [1, 0, 0, 0]^T
  • 网页D:有指向B和C的链接,共2个链接。因此:
    L_D = [0, 1/2, 1/2, 0]^T

现在,我们可以通过将每个链接向量作为一列,构建出链接矩阵 L

L = [ L_A, L_B, L_C, L_D ] = [
    [0, 1/2, 1, 0],
    [1/3, 0, 0, 1/2],
    [1/3, 1/2, 0, 1/2],
    [1/3, 0, 0, 0]
]

矩阵L中的每一行描述了指向该行对应页面的、来自其他页面的链接概率(已根据源页面的总链接数归一化)。例如,要到达页面A,只能从页面B或C点击链接过来。

建立PageRank方程

我们使用向量 R 来存储所有网页的“排名”或重要性。计算网页A的排名 R_A,需要知道三件事:其他网页的排名、它们是否链接到A、以及它们总共有多少个出站链接。

以下表达式综合了这三方面信息,但仅针对网页A:
R_A = Σ_{j=1}^{n} L_{A,j} * R_j

这个求和遍历所有网页(j从1到n)。这意味着,网页A的排名等于所有链接到A的网页的排名之和,其中每个贡献的排名都按其特定的链接概率(来自矩阵L)进行加权。

我们希望为所有页面同时写出并求解这个方程。回顾线性代数知识,我们可以将上述应用于所有网页的表达式重写为一个简单的矩阵乘法:
R = L R

显然,我们开始时并不知道R。因此,我们简单地假设所有排名均等,并用分析中的网页总数(本例中为4)进行归一化作为初始猜测:
R_0 = [1/4, 1/4, 1/4, 1/4]^T

然后,我们每次用矩阵L乘以当前的R,就得到R的更新值。因此,迭代公式为:
R_{i+1} = L * R_i

反复应用这个表达式意味着我们正在迭代地解决这个问题。每次迭代都更新R中的值,直到最终R停止变化。此时,R真正满足 R = L R

与特征值问题的联系

回顾本模块之前的视频,方程 R = L R 意味着 R 现在是矩阵 L 的一个特征向量,对应的特征值为 1

你可能会想,既然我们需要将R乘以L很多次,或许应用上一节视频中看到的对角化方法是最好的。但别忘了,那需要我们事先知道所有特征向量,而这正是我们最初试图寻找的东西。

迭代求解与结果

现在我们有了方程,可以让计算机迭代应用它直到收敛,从而找到我们的排名向量R。

你可以看到,虽然数字大约需要10次迭代才能稳定下来,但排序在第一次迭代后就已经确定了。不过,这只是因为我们的系统(4个网页)太小而产生的特例。

现在我们得到了结果:当拖延症患者帕特在我们的网络中随机点击时,我们预计他大约会花费40%的时间在页面D上,而只有大约12%的时间在页面A上,页面B和C各占约24%。因此,我们的排名是D最高,A最低,B和C并列中间。

算法优势与阻尼因子

事实证明,尽管多年来已经开发出许多高效计算特征向量的方法,但反复用一个随机选择的初始猜测向量乘以矩阵(称为幂法)对于PageRank问题仍然非常有效,原因有二:

  1. 收敛到所需向量:幂法显然只会给出一个特征向量(而我们知道对于一个n维系统会有n个)。但由于我们构建链接矩阵L的方式,它给出的向量始终是我们寻找的那个对应特征值为1的特征向量。
  2. 处理稀疏矩阵高效:对于真实的互联网,链接矩阵L中几乎每个条目都是0(即大多数页面不连接到大多数其他页面)。这被称为稀疏矩阵,存在专门的算法可以非常高效地执行此类乘法。

我们尚未讨论的PageRank算法的一个关键方面是阻尼因子 d。它为我们的迭代公式增加了一个附加项:
R_{i+1} = d * L * R_i + (1-d)/N

其中,d是一个介于0和1之间的数。你可以将其理解为(1 - 帕特突然随机输入一个网址而不是点击当前页面上链接的概率)。这个因子在实际计算中的作用是在迭代收敛过程的速度稳定性之间找到一个折衷。

总结

本节课中我们一起学习了PageRank算法的基本原理。我们从一个微型互联网模型出发,通过“拖延症患者帕特”的随机游走行为,将网页排序问题转化为一个线性方程 R = L R 的求解问题,这本质上是一个寻找矩阵特征值为1的特征向量的问题。我们介绍了如何使用幂法进行迭代求解,并简要提到了阻尼因子的作用和算法处理大规模稀疏矩阵时的效率优势。尽管自1998年PageRank算法发布以来,互联网规模已从数百万网站增长到超过十亿,搜索和排名方法也必须不断进化以提升效率,但其核心概念多年来保持不变。

035:总结

概述

在本节课中,我们将对第五个模块以及整个机器学习线性代数课程进行总结。我们将回顾已学内容,并探讨在计算机时代学习数学的意义。

课程回顾

第五个模块的结束,也标志着这门机器学习线性代数课程的完结。

在过去的五个模块中,我们涵盖了大量的知识。

我们努力在讲解速度与细节深度之间取得平衡,以确保您能全程跟上。

计算机时代的数学教学

计算机时代的数学教学存在一个核心矛盾。

传统的教学方法侧重于手动演算大量例题,而不太注重建立直观理解。

然而,现在计算机几乎为我们完成了所有的计算工作。

适用于手工计算的方法,通常与计算机采用的方法不同。

这意味着,尽管学生做了大量练习,但在接受传统教育后,他们可能既错过了对计算方法的细节理解,也错过了对每种方法真正在做什么的高层次概念性认识。

核心概念与应用

您在最近五个模块中接触到的概念,涵盖了您在深入学习机器学习时所需线性代数的核心内容。

我们希望,至少在未来遇到困难时,您能知道恰当的专业术语,从而在需要时快速查找帮助。

毕竟,这是一名专业程序员最重要的技能。

总结

本节课中,我们一起回顾了整个线性代数课程的学习历程。我们探讨了传统数学教学与计算机时代需求之间的差异,并强调了掌握核心概念和专业术语对于未来在机器学习领域学习和解决问题的重要性。

机器学习数学:线性代数:P36:课程总结

在本节课中,我们将对本线性代数专项课程进行总结,回顾所学内容,并展望后续的学习路径。


课程概述

本课程的目标是为您提供线性代数的基础知识,以便您能够更好地学习神经网络、机器学习以及更广泛的数据科学课程。本课程专为社会科学、工程或物理学背景的学习者设计,旨在培养理解机器学习工具所需的洞察力,从而能够在现实世界中运用机器学习解决问题。本课程并非研究生线性代数课程的基础,并且由于时间限制,我们也没有讨论如叉积等在机器学习中应用较少的主题。

课程内容回顾

我们从一个数据问题开始本课程,例如拟合函数到数据,或者解决苹果和香蕉的价格发现难题。这些问题引导我们踏上了线性代数的探索之旅。

首先,我们学习了向量及其矩阵表示。以下是本课程涵盖的核心概念:

  • 向量与矩阵:向量是数字的有序列表,可以表示数据点或方向。矩阵是数字的矩形阵列,可以表示数据集或线性变换。
    • 向量表示:v = [v1, v2, ..., vn]
    • 矩阵表示:A = [[a11, a12, ...], [a21, a22, ...], ...]
  • 线性方程组:我们学习了如何用矩阵形式 Ax = b 表示和求解线性方程组,其中 A 是系数矩阵,x 是未知数向量,b 是常数向量。
  • 矩阵运算:我们探讨了矩阵的加法、标量乘法以及最重要的矩阵乘法。
    • 矩阵乘法:C = AB,其中 C 的元素 cijA 的第 i 行与 B 的第 j 列的点积。
  • 行列式与逆矩阵:行列式提供了矩阵缩放体积的信息,而逆矩阵 A⁻¹ 使得 A⁻¹A = I(单位矩阵),用于求解方程 Ax = b,即 x = A⁻¹b
  • 特征值与特征向量:对于方阵 A,特征向量 vA 作用下仅被缩放,满足 Av = λv,其中 λ 是特征值。这个概念在数据降维(如主成分分析)中至关重要。

在整个学习过程中,您通过练习巩固了所学知识,并在课程最后完成了几个Python编程练习。这将使您有信心声称自己正逐步获得对线性代数及其代码应用的直观理解。

后续学习路径

如果您喜欢本课程,我们将在本专项课程的下一门课中继续机器学习与数据科学的旅程:多元微积分。在那里,我们将学习微积分,以及如何求多元函数的梯度。掌握了最优化、线性代数和概率论之后,您将拥有研究主成分分析、机器学习和神经网络所需的所有基础数学工具和概念。

总结

在本节课中,我们一起回顾了线性代数课程的核心内容,从向量和矩阵的基础,到求解线性方程组,再到特征值与特征向量的高级概念。这些知识是您深入机器学习领域的基石。

Sam、Iya以及帝国理工学院的全体团队衷心希望您觉得本课程有价值、实用且有趣。当然,我们也祝愿您未来一切顺利,并期待在下一门课程中再次见到您。

posted @ 2026-03-26 12:23  布客飞龙III  阅读(25)  评论(0)    收藏  举报