all_lessons/数学的逻辑/11第 12 课 / 共 44 课

第四部分 · 不确定与多维

一次处理很多维:线性代数与向量空间

上一课我们学会和一个不确定的量讲道理。可现代问题从来不只一个量——一张图、一份数据、一个物理状态,动辄几百上千个数同时变动。一个一个处理是死路。这一课,我们造出一次摆弄一大群数的语言。

线性回顾
上一课:我们用概率把"一个不确定的量"变得可计算——样本空间、期望、大数定律、贝叶斯。
留下的问题:但真实问题里的量从来不是孤单一个。一张照片是几百万个像素亮度,一个推荐系统是几千个用户特征,一个物理系统有无数个坐标。这些数互相牵连、同时变化;要是一个变量一个变量地写方程、列算式,人脑和纸笔根本招架不住。能不能把一大串数当成单个对象来处理?
本课新增:把一串数捆成一个对象——向量;把"线性变换"捆成一张表——矩阵;以及维度、基、线性映射。这就是现代数据与人工智能所说的语言。
本课路线
(1) 向量:把一串有序的数,看成空间里的一个点 / 一支箭。(2) 为什么偏偏挑"线性"——可加 + 可数乘——这个最温顺又出奇有用的结构。(3) 矩阵 = 线性映射:把整个空间均匀地拉伸、旋转、压扁。(4) 矩阵乘向量 = 变换一个点。(5) 行列式 = 面积/体积的缩放倍数,= 0 意味着被压扁、不可逆。(6) 维度的威力:把二维直觉推广到 ℝⁿ,一路通向机器学习。

向量:把一串数捆成一个对象

最朴素的念头,往往最有力:既然要处理一大串数,那就给这一串数起一个名字,把它们当成一个整体。这个整体就是向量。一个向量,就是一串有序的数:

v = (x₁, x₂, …, xₙ) (读作"向量 v,分量是 x 下标 1 到 x 下标 n")

"有序"很关键:(3, 1)(1, 3) 是两个不同的向量,位置不能乱换。这一串数可以有两种看法,缺一不可:

关键是:无论这串数有 2 个还是 200 万个,"向量"这个词都把它打包成单个对象。我们对它做的事——相加、缩放、变换——都是对整串数一次性地做。一个一个处理的噩梦,从此变成对一个对象的一次操作。全体 n 个实数组成的向量构成的空间,记作 ℝⁿ(读作"R 的 n 次方",即 n 维实数空间)。

为什么偏偏是"线性"

向量能做两件最基本的事,而且做完还落在同一个空间里:

"线性"指的就是只用这两种操作搭起来的世界:满足可加(先变换再相加,等于先相加再变换)与可数乘(先变换再放大,等于先放大再变换)。为什么数学家偏爱它到近乎偏执?因为线性是最温顺、却出奇有用的结构:

线性为什么好
线性的世界里,整体等于部分之和,没有任何意外的相互纠缠。知道了几个"基本向量"会被怎么处理,就自动知道它们的任意组合会被怎么处理——这让"无穷多种输入"的行为,被压缩成"少数几个基准"的行为。这正是它能驯服成千上万个维度的根本原因。

当然,真实世界并不全是线性的(否则就太无聊了)。但线性是我们唯一能彻底算清的一块;现代方法的通用策略,就是"用线性逼近 + 一点非线性点缀"——这一点,本课结尾会接到机器学习上。

矩阵:把"变换整个空间"捆成一张表

向量是"被处理的对象",那"处理"本身是什么?我们想要的是一种线性变换:把空间里每个点都搬到新位置,而且搬法是"线性"的——网格线变换后依旧保持平行、依旧等距,原点不动。直观地说,它把整张方格纸均匀地拉伸、旋转、剪切或压扁,绝不弯折、不撕裂。

神奇之处在于:这样一个作用在整个空间上的变换,只需要少数几个数就能完全确定。因为线性,只要你告诉我两个基准箭——指向右的单位箭 î = (1, 0)(读作"i 帽")和指向上的单位箭 ĵ = (0, 1)(读作"j 帽")——变换后各落到哪里,整个平面的变换就被锁死了。把这几个"落点"按列排成一张表,就是矩阵

M = [ a b ; c d ] (第一列 (a, c) 是 î 的落点,第二列 (b, d) 是 ĵ 的落点)

这里我用分号隔开两行:第一行是 a, b,第二行是 c, d。所以一张冷冰冰的 2×2 数表,真正的身份是"对整个平面的一次变换"。这是本课最该记住的一句话:矩阵不是数表,矩阵是动作

矩阵乘向量:变换一个点

既然矩阵 M 是个动作,把它"作用"到向量 v 上,就是看这个点被搬到了哪里。算法是矩阵乘向量:

M · (x, y) = (a·x + b·y, c·x + d·y)

它读起来正是"线性"的化身:新位置 = x 份的 î 落点 + y 份的 ĵ 落点。因为变换是线性的,任意点 (x, y) = x·î + y·ĵ 的去向,就是两个基准去向的同等组合——这就是为什么"知道两个基准、就知道全部"。把许多向量排成一张大表去乘,便能一次性变换整批数据,这正是图形渲染、神经网络一层前向计算在做的事。

行列式:面积被放大了几倍

变换会把一块区域拉大或缩小。一个自然的问题是:变换后,面积变成了原来的几倍?这个倍数,就是矩阵的行列式,记作 det(M)。对 2×2 矩阵:

det(M) = a·d − b·c

读作"a 乘 d 减 b 乘 c"。它的含义极其几何:原本由 î、ĵ 张成的单位正方形(面积 1),变换后成了一个平行四边形,它的面积正好是 |det(M)|(行列式的绝对值)。det = 2 就是面积翻倍,det = 0.5 就是缩成一半。而最要命的一种情况是:

行列式 = 0 意味着什么
det(M) = 0,平行四边形被压扁成一条线(面积归零)——整个二维平面被挤进了一维。这时变换把许多不同的点压到了同一处,信息丢了,再也回不去:这个矩阵不可逆det ≠ 0 则保面积不塌、信息不丢,变换可逆。所以行列式不只是个数,它是"这次变换有没有把维度压垮"的体检指标。

下面的小实验让你亲手拨动 a, b, c, d,看整张方格纸被拉伸、旋转、剪切,看着 î、ĵ 跟着跑;尤其试试把行列式调到 0,看网格"啪"地塌成一条线。

2×2 矩阵:把整张网格变个形
四个滑块设定矩阵 [ a b ; c d ]。灰色是原始单位网格,蓝/绿网格是变换后的样子,两支粗箭是变换后的 î、ĵ。注意网格线始终保持平行、等距——这就是"线性"。把 det 调到 0,看网格被压成一条线、不再可逆。
行列式 det = ad − bc
1.00
面积缩放
×1.00
是否可逆
可逆

维度的威力:从二维直觉到 ℝⁿ

现在收回最初的承诺。我们在平面上把一切都看清了:向量是点,矩阵是变换,行列式是面积倍数。关键在于,这套语言一个字都不用改,就能搬到任意维度。三维里向量是三个数、矩阵是 3×3、行列式是体积缩放;到了 n 维(ℝⁿ),向量是 n 个数、矩阵是 n × n 的表,"行列式 = 0 即压扁降维、不可逆"原封不动地成立。

我们想象不出五百维空间长什么样——但根本不必想象。二维里磨出的直觉(加法、缩放、变换、压扁),靠的是代数原样推广上去,几何想象只是脚手架。这就是线性代数最深的馈赠:它让"几百上千个数同时变动"这件本来无从下手的事,变得和摆弄平面上一个点一样有章可循。上一课用概率驯服了一个随机的量;这一课用向量与矩阵,一次驯服了千万个维度。

这门语言通向哪里

不夸张地说,今天的人工智能就泡在线性代数里。一段文字、一张图、一个用户,都先被编码成高维向量;神经网络的每一层,本质就是一次矩阵乘法(线性变换)外加一点非线性"折一下"——线性负责一次性搅动所有维度,非线性负责让它能拟合弯曲的现实。搜索与推荐,核心是在高维向量空间里找"方向相近"的邻居。想看这门语言怎样落地成会写字、会画画的模型,可以接着读 《从零构建 GPT》《连续生成模型:扩散与流匹配》——你在这一课建立的"向量 + 矩阵 + 维度"直觉,正是读懂它们的入场券。

常见误解

一句话带走
把一串数捆成向量(空间里的点/箭),把"保持网格平行等距"的线性变换捆成矩阵(一张其实是"动作"的表);矩阵乘向量就是搬动一个点,行列式是面积/体积的缩放倍数(= 0 即压扁降维、不可逆)。这套语言原样推广到 ℝⁿ,让"千万个维度同时变动"变得有章可循——它正是现代数据与 AI 的母语。
下一步
停下来看看我们走了多远:第 1–4 部分里,数学一路向外征服世界——数(01–04)、形与空间(05)、无穷与变化(06–09)、随机与多维(10–11)。我们造出了一大堆精巧的结构:数系、几何、极限、向量空间……现在,一个全新的问题浮上来:我们亲手造的这些"结构"本身,能不能反过来成为研究的对象?数学要转身向内,开始审视自己。这场内省,从一个看似最朴素的概念——"对称"——开始,并将解开一桩两百年的悬案:为什么五次方程没有求根公式。→ 第 12 课《对称的语言:群与"为什么五次方程没有公式"》。