P2-3.1 标量(scalar)、向量(vector)、矩阵(matrix)¶
Section ID:
P2-3.1Version:v2026.07.20
在 Part 2 Chapter 2 里,我们重新阅读了数学记号。变量(variable)、函数(function)、表达式(expression)、西格玛(sigma)、极限(limit)是为了读懂“公式到底在说什么”的基础语法。从这里开始,我们转向另一类在 AI 数据被改造成可计算形状时经常出现的基础表达,也就是线性代数(linear algebra)的基本形式。
- 我们先看一个数字。
- 我们再看一组数值列表。
- 我们再看一个带有行和列的表。
这三种分别会连到标量(scalar)、向量(vector)、矩阵(matrix)。这里的重点,是建立这样一种阅读感觉:当 AI 文档把数据写成一个数字、一个列表、或一张表时,我们到底在看什么。
这里重新整理 标量(scalar)、向量(vector)、矩阵(matrix)、shape、数组(array)。如果说 Chapter 2 读的是数学一行里的语法与重复记号,那么这里读的是那些表达式真正展开成数据形状之后,我们看到的东西。
这里关注的不是完整的数学理论,而是 AI 数据的基础形状。只要先把标量、向量、矩阵、shape 分清,后面像 输入 X 的 shape 是什么、有多少行是样本、有多少列是特征 这类问题,就会容易读得多。
| 这一节现在先抓住什么 | 紧接着会连到的问题 | 后面再次出现的位置 |
|---|---|---|
| 标量、向量、矩阵的基本区分 | 在 P2-3.2 里会看为什么向量可以像位置一样去读。 | 在 Part 3 里读特征向量和输入矩阵时会再用到,在 Part 5 和 Part 6 里读嵌入向量和分数向量时也会再用到。 |
shape 会改变计算规则的直觉 | 在 P2-3.3 里会看矩阵乘法和维度匹配。 | 在 Part 3 里检查输入矩阵 X、目标 y、train/test 切分结果的形状时会再用到。 |
| 把表格数据看成数值数组的视角 | 在 P2-3.6 里会连到 NumPy 数组计算。 | 在 Part 3 里读 dataframe 如何转成模型输入数组的流程时会再用到。 |
核心判断标准:标量(scalar)、向量(vector)、矩阵(matrix)¶
- 能把标量(scalar)解释成一个数字。
- 能把向量(vector)解释成有顺序的值列表。
- 能把矩阵(matrix)解释成带有行(row)和列(column)的数字数组。
- 能理解数据的形状(shape)会影响计算方式。
- 能说明文本、图像、表格数据为什么会被转成可计算的数字数组。
- 能说明标量、向量、矩阵为什么会在后面的 embedding、feature、batch、模型计算里再次出现。
- 能说明标量、向量、矩阵的基础数学运算为什么需要 shape。
三个基准¶
| 基准 | 为什么重要 | 本节所需的理解水平 |
|---|---|---|
| 标量就是一个数字 | 因为它是读取损失、概率、学习率这类单个值的基本单位。 | 理解一个数字可以表示一个计算结果或一个配置值。 |
| 向量是有顺序的值列表 | 因为这是用多个特征表示一个对象时最常见的形状。 | 理解顺序会改变意义,多个数字会被读成一个整体。 |
| 矩阵是把多个向量放在一起的表 | 因为同时计算多个样本和多个特征时,需要行列结构。 | 理解行可以读成对象、列可以读成特征,shape 会决定计算规则。 |
为什么先看线性代数¶
AI 模型不会直接拿现实里的句子、图像、声音、表格来计算。多数情况下,它们会先被变成数字,再以数组(array)的形式处理。
- 句子会通过 token 变成数字 ID 和向量。
- 图像会变成保存像素值的数组。
- 表格数据会被读成带行列结构的矩阵或 dataframe。
线性代数就是阅读这些数字数组的基础语言。比起深层证明,更先需要的是下面这种直觉。
- 是不是只有一个值?
- 这些值是不是排成一行?
- 这些值是不是排成了行和列?
- 是不是有多份数据被一起打包了?
这些问题在实际代码里也同样重要。AI 代码出错的常见原因之一,不是误解了值的意义,而是误解了它的 shape。
从一个数字延伸到空间的思路¶
标量、向量、矩阵、位置,看起来像是彼此分开的概念,但在 AI 计算里,它们其实连成一条流。
- 标量表示一个值。
- 向量表示把多个值按顺序捆在一起。
- 矩阵表示把多个向量按行和列收集起来。
- 位置则是把向量看作同一空间里的坐标,拿来彼此比较的视角。
例如,如果只看一个人的年龄,那就是标量。
如果把年龄、身高、访问次数一起看,那就是向量。
如果把几个人的向量收集起来,那就是矩阵。
如果再把每个人的向量看作同一空间里的位置,我们就可以考虑人与人之间远近的关系。
- 先看一个值。
- 把多个值捆起来表示一个对象。
- 把多个对象一起收集。
- 在同一个空间里比较这些对象。
这条流就是线性代数为什么在 AI 里经常出现的原因。线性代数不只是学习矩阵怎么算的学科,它还是一种语言,用来把数据做成可计算的表示,并比较这些表示之间的关系。
标量就是一个数字¶
标量(scalar)就是一个数字。比如下面这些值都可以看成标量。
在 AI 语境里,标量会出现在很多地方。
- 一个温度值
- 一个概率(probability)
- 一个损失(loss)
- 一个准确率(accuracy)
- 一个学习率(learning rate)
例如,如果某个模型的平均损失是 0.25,那么这个值本身就是标量。
标量看起来很小,但它非常重要。评估模型时,我们经常会把很多计算结果压缩成一个数字。不过一个数字也会压缩掉很多信息。只知道损失是 0.25,并不能告诉我们模型在哪些数据上做得好、在哪些数据上做错了。
从数学上看,变化的是什么¶
标量、向量、矩阵的差异不只是形状不同。从数学上看,真正变化的是 可以做什么计算。
因为标量是一个数字,所以我们可以立刻想到普通四则运算。
向量可以把相同位置上的值相加。
如果标量乘到向量上,就是把同一个数字乘到向量的每个值上。
矩阵在 shape 相同的时候,也可以逐位置相加。
这些计算与其说是复杂的线性代数,不如说更接近 相同位置上的值进行计算 这条规则。也正因为这样,shape 才会变得重要。长度不同的向量,或者行列数量不同的矩阵,不能直接逐位置计算。
- shape 相同,就可以逐位置计算。
- shape 不同,就必须先决定哪些值应该配对。
这里暂时还不处理矩阵乘法(matrix multiplication)。矩阵乘法并不是简单的逐位置相乘,而是通过组合行与列来产生新值。那部分内容会在 P2-3.3 单独处理。
这里先固定阅读数据形状的标准,而不进入向量空间公理或矩阵乘法算法的完整展开。位置直觉会在 P2-3.2 再收窄一次,矩阵乘法和线性变换会在 P2-3.3 再收窄一次。
向量是值的列表¶
向量(vector)可以读成有顺序的值列表。
这里的 \(\mathbf{x}\) 是一个包含 3 个值的向量。这里不把它深入解释成“具有方向和大小的数学对象”,而是先从 AI 数据的角度把它读成“多个数字组成的一束”。
例如,假设我们用三个值来表示一个人:年龄: 30、身高: 172、每月访问次数: 5。
写成向量,就会像这样。
这个向量把一个人的特征(feature)表示成了数字列表。机器学习里,经常会把多个特征这样收集起来,当成一个输入(input)。
向量里的顺序很重要。必须先固定第一个值表示年龄、身高、还是访问次数。
如果顺序改变,即使数字一样,意义也会变。
所以,向量不是随便堆在一起的一堆数字,而是每个位置都带有意义的一组数字。
矩阵是带行和列的数字数组¶
矩阵(matrix)是把数字排成行(row)和列(column)的结构。
这个矩阵有 2 行 3 列。通常会把它叫作一个 \(2 \times 3\) 矩阵。这里,行(row)是横向的一整行,列(column)是纵向的一整列,而 shape 指的就是行数和列数。
在 AI 数据里,一行通常可以读成一个数据样本(sample),一列可以读成一个特征(feature)。
例如,如果把 3 个人的数据用年龄、身高、访问次数来表示,就会得到下面这个矩阵。
在这里,有 3 行 3 列。也就是说,3 行代表 3 个人,3 列代表年龄、身高、每月访问次数。
这个视角在阅读机器学习数据集(dataset)时非常重要。在很多入门材料里,\(X\) 表示完整输入数据,\(y\) 表示与每一行对应的目标值(target)或标签(label)。
Shape 是计算的条件¶
shape 就是数据的形状。它告诉我们,当前看到的是一个值、一个值列表,还是带行和列的数组。
问题场景:我们想一次比较标量、向量、矩阵在代码里分别长什么样。 输入(input):标量数组、一维向量数组、二维矩阵数组。 期望输出(output):依次输出它们各自的 shape。 要确认的概念:shape 是区分“一个数字”“一个列表”“一个行列结构”的基本信息。
这段代码在检查三个值的形状。结果可以读成:标量 ()、向量 (3,)、矩阵 (2, 3)。
根据库或设置不同,标量的显示方式可能会略有差别,但核心不变。标量就是一个数字,向量是数字列表,矩阵是带行和列的数字数组。
shape 之所以重要,是因为能不能计算会随着 shape 改变。例如,长度不同的向量很难逐位置相加。
这个式子无法对齐到底哪些值应该相加。在代码里也是一样,如果 shape 对不上,就可能报错,或者以并非你原本打算的方式继续计算。
行和列的意义由问题本身决定¶
矩阵是数字数组,但这些数字的意义由问题定义来决定。即使是同一个 \(3 \times 3\) 矩阵,在表格数据里,行可以表示人、列可以表示特征;在图像的一部分里,行和列可以表示像素位置;在句子数据里,行可以表示 token、列可以表示 embedding 维度;在 batch 数据里,行可以表示样本、列可以表示特征。
因此,阅读矩阵时不能只看数字的形状,还要检查:这一行表示什么,这一列表示什么,每个值的单位是什么,行和列的顺序是不是固定的。
当你在 AI 文档里看到 输入矩阵、特征矩阵、嵌入矩阵 这类表达时,第一步应该先确认行和列的意义。
通过案例来看¶
案例 1. 一个客户会变成向量,多个客户会变成矩阵¶
学习者在看客户数据表时,通常会围绕“人”来阅读,比如姓名、年龄、访问次数。但一旦把这张表转成模型输入,一个人的多个属性就会开始被读成一个向量,几个人的向量叠起来就会开始被读成一个矩阵。
例如,如果用 年龄、每月访问次数、平均购买金额 三个数字来表示一个客户,它就会成为一个长度为 3 的向量。如果按照同样方式收集 5 个客户,结果就是一个 5 x 3 的矩阵。此时,一行表示一个客户,一列表示一种特征。
这个案例说明了为什么标量、向量、矩阵需要分开学习。只看一个数字时,标量就够了;如果一个对象要用多个值表示,就需要向量;如果多个对象要一起计算,就需要矩阵。
所以,线性代数入门更接近于学习 怎样把现实世界的数据折叠成可计算的形状,而不是背诵抽象符号。没有这种直觉,后面像特征矩阵、batch 输入、embedding 这样的概念就很难用同一种语言读懂。
标量、向量、矩阵会在哪里再次出现¶
标量、向量、矩阵会在几乎所有后续 AI 计算说明里再次出现。
- embedding:把文本或条目表示成向量
- feature:把一个数据样本表示成由多个值组成的向量
- batch:把多个样本打包成矩阵或更高维数组
- loss:把多个计算结果汇总成一个标量
- model parameter:权重(weight)可以呈现为向量或矩阵
- matrix multiplication:它会成为同时计算多个输入与权重的基本工具
这里仍然还不去计算矩阵乘法。现在先固定一种感觉:AI 数据经常会被表示成一个数字、一串数字列表、或者一张数字表。
一个简单的阅读例子¶
假设我们有下面这组数据。
假设在这个矩阵里,行(row)表示学生,列(column)表示 [学习时间, 测验分数]。
那么这个矩阵表示:第一个学生的学习时间是 2、测验分数是 8;第二个学生的学习时间是 4、测验分数是 6;第三个学生的学习时间是 5、测验分数是 9。
这里,一个学生的数据就是一个向量。
如果把三个学生的数据收集在一起,它就成为一个矩阵。
这个例子里,重要的不是怎么计算,而是怎样阅读。一个值是标量,一个学生的一组特征是向量,多个学生的一组特征就是矩阵。
检查清单¶
- 能把标量(scalar)解释成一个数字吗?
- 能把向量(vector)解释成有顺序的值列表吗?
- 能把矩阵(matrix)解释成带有行(row)和列(column)的数字数组吗?
- 能说明 shape 会影响计算是否可行、是否会出错吗?
- 能说明行和列的意义会随着问题定义而改变吗?
- 能把一个样本(sample)读成向量,把多个样本读成矩阵吗?
- 能说明为什么标量、向量、矩阵会在 embedding、feature、batch、loss、parameter 里再次出现吗?
- 能说明 shape 相同的向量和矩阵可以逐位置相加,而标量乘法是把同一个数字乘到每个值上吗?
- 能说明从标量到向量、矩阵、位置比较逐步扩展的思路吗?
- 能把标量、向量、矩阵同时解释成线性代数术语和阅读数据形状的语言吗?
- 当
X的 shape、样本数、特征数混在一起时,能用 shape 直觉重新把它们分开吗?
来源与参考资料¶
- Marc Peter Deisenroth, A. Aldo Faisal, Cheng Soon Ong, Mathematics for Machine Learning, Cambridge University Press, 2020, 确认日期: 2026-07-19.
- Ian Goodfellow, Yoshua Bengio, Aaron Courville, Deep Learning, MIT Press, 2016, 确认日期: 2026-07-19.
- Charles R. Harris et al., Array Programming with NumPy, Nature, 2020, 确认日期: 2026-07-19.
- NumPy Developers, numpy.ndarray.shape, NumPy User Guide, 确认日期:2026-07-19. 这个官方参考资料支持把
shape读成数组维度信息,并在代码中检查它。 - scikit-learn developers, Glossary of Common Terms and API Elements, scikit-learn User Guide, 确认日期:2026-07-19. 这是确认把
X读作输入数据矩阵、把y读作 target 这一惯例的参考资料。