HelloAI
L1 第 2 篇 🐣 难度 🕒 14 分钟

线性代数:用图片和位置讲明白向量和矩阵

所有 AI 的本质都是矩阵运算。这一篇不讲行列式不讲特征值,只让你"看见"向量在干什么。

阿莱
2026/6/11

如果你打开任何一篇 AI 论文,第一眼会看到这个

y=Wx+by = W x + b

四个符号,决定了今天所有 AI 模型的命运。xx 是输入,WW 是矩阵,bb 是偏置,yy 是输出。

这是线性代数最核心的应用。这一篇就讲清楚:上面这几个字母在干什么,为什么 AI 离不开它们。

向量:一组带顺序的数

最简单。向量就是一组数,写法上用方括号或一列竖列:

v=[3,5]v = [3, 5]

它有两个数:3 和 5。

关键不是”两个数”——关键是”它代表什么”

向量最强大的地方在于:同一个 [3, 5] 可以表示无数种东西

在二维平面上,它是一个点

[3,5]平面上 (3, 5) 这个位置[3, 5] \to \text{平面上 (3, 5) 这个位置}

在二维平面上,它也是一个箭头

从原点 (0,0) 出发,指向 (3, 5)。点和箭头是同一个向量的两种解读

在更多维度,它表示更复杂的事物

向量它可以代表
[3,5][3, 5]你的身高(米)+ 体重(百斤)
[170,60,25][170, 60, 25]一个人的身高 / 体重 / 年龄
[0,1,0,0][0, 1, 0, 0]”苹果、香蕉、樱桃、橙子”中选择”香蕉”的 one-hot 编码
[0.2,0.5,0.8,...,0.1][0.2, -0.5, 0.8, ..., 0.1](768 个数)一个词的 BERT embedding
[r,g,b][r, g, b]一个像素的颜色

所有这些都是向量——同一个数学对象,不同的含义。

💡 一个关键直觉

向量是 AI 系统里信息的统一货币。无论你的数据原本是文字、图片、声音——最终都被转换成一串数(一个向量),AI 才能处理。

点积:向量之间的”亲密度”

两个向量,可以做一个运算叫点积(dot product)

[3,5][2,4]=3×2+5×4=6+20=26[3, 5] \cdot [2, 4] = 3 \times 2 + 5 \times 4 = 6 + 20 = 26

直接对应位置相乘后求和。

这有什么用?

点积有一个神奇的性质:

两个向量越”指向同一个方向”,点积越大。

  • 完全同方向 → 点积最大(正数)
  • 完全垂直 → 点积 = 0
  • 完全相反方向 → 点积最小(负数)

这个性质让点积成为 AI 系统里测量”相似度”的标准工具

在 L0-11 的词汇表里我们说过 “embedding 相近意思就相近”—— 实际怎么算”相近”的?就是算点积(或者它的变种”余弦相似度”)。

让我们看一个例子。假设我们已经把”king”、“queen”、“banana”映射成了向量:

king   = [0.8, 0.2, 0.9, ...]   # 768 个数
queen  = [0.7, 0.3, 0.85, ...]
banana = [-0.3, 0.6, -0.1, ...]

king · queen  = 大正数  → 它们很相近
king · banana = 接近零  → 它们没啥关系

这就是 RAG 检索、推荐系统、搜索的核心

矩阵:一堆向量整齐摞着

如果向量是一行(或一列)数,矩阵就是多行多列

W=[2003]W = \begin{bmatrix} 2 & 0 \\ 0 & 3 \end{bmatrix}

可以理解成两个向量摞起来[2,0][2, 0][0,3][0, 3]

但矩阵最强大的地方,不是”装数据”——是做变换

矩阵乘以向量:一次”变换”

回到最开始那个公式 y=Wxy = Wx

我们看一个超简单的例子:

[2003]×[35]=[615]\begin{bmatrix} 2 & 0 \\ 0 & 3 \end{bmatrix} \times \begin{bmatrix} 3 \\ 5 \end{bmatrix} = \begin{bmatrix} 6 \\ 15 \end{bmatrix}

计算规则:矩阵每一行 · 向量 → 一个数

  • 第一行 [2,0][2, 0] 点积 [3,5][3, 5] = 66
  • 第二行 [0,3][0, 3] 点积 [3,5][3, 5] = 1515

几何意义是什么?

原本向量是 (3,5)(3, 5),乘完矩阵变成 (6,15)(6, 15)——

  • x 方向被拉伸了 2 倍
  • y 方向被拉伸了 3 倍

这个矩阵是个”拉伸器”

不同的矩阵能做不同的几何变换:

矩阵变换效果
[2002]\begin{bmatrix} 2 & 0 \\ 0 & 2 \end{bmatrix}整体放大 2 倍
[1001]\begin{bmatrix} 1 & 0 \\ 0 & -1 \end{bmatrix}上下翻转
[cosθsinθsinθcosθ]\begin{bmatrix} \cos\theta & -\sin\theta \\ \sin\theta & \cos\theta \end{bmatrix}旋转 θ 度
[10.501]\begin{bmatrix} 1 & 0.5 \\ 0 & 1 \end{bmatrix}错切(变成平行四边形)

核心洞察

矩阵不是一堆数。矩阵是一个”动作”——它对向量做某种变换。

AI 为什么离不开矩阵

回到我们最开始那个公式:

y=Wx+by = W x + b

这是一个神经网络的单层。它在干什么?

  1. xx 是输入向量(比如 768 维的 BERT embedding)
  2. WW 是一个学到的矩阵(比如 768 × 256 维)
  3. bb 是偏置向量
  4. yy 是输出(256 维)

这一层在做什么? 它把 768 维的输入变换成 256 维的输出。

矩阵 WW 里的具体数字,决定了变换的具体方式。训练神经网络,本质上就是不断调整 WW 里的数,让网络能把输入变换成”我们想要的输出”。

一个 GPT-3 有 1750 亿个参数——它们绝大部分都是某些矩阵 WW 里的数

🔬 一句话总结

神经网络 = 一连串矩阵变换 + 一些激活函数。 你看到的所有”大模型”,本质上都是「向量 → 矩阵 → 向量 → 矩阵 → ……」的接力赛。

用 NumPy 跑一下

让我们用 Python 实际跑一下:

import numpy as np

# 向量
x = np.array([3, 5])
print(x)              # [3 5]
print(x.shape)        # (2,)

# 矩阵
W = np.array([[2, 0],
              [0, 3]])
print(W.shape)        # (2, 2)

# 矩阵乘以向量
y = W @ x            # @ 是矩阵乘法运算符
print(y)              # [6 15] ← 就是我们手算的结果

# 点积
v1 = np.array([3, 5])
v2 = np.array([2, 4])
print(v1 @ v2)        # 26
print(np.dot(v1, v2)) # 26(另一种写法)

# 真实场景:算两个 embedding 的相似度
emb_king  = np.random.randn(768)
emb_queen = np.random.randn(768)
similarity = emb_king @ emb_queen / (np.linalg.norm(emb_king) * np.linalg.norm(emb_queen))
print(f"相似度: {similarity:.3f}")

强烈建议你现在打开 Google Colab 跑一遍这段代码。手指敲过的代码,记得最牢。

真实场景:Transformer 里的 Q、K、V

我们在 L0 词汇表里说过 Q、K、V 是 Transformer 的核心。现在你可以理解它们了:

# X 是输入序列的 embedding 矩阵
# 假设句子有 10 个词,每个词 768 维
X = np.random.randn(10, 768)  # (10, 768)

# Wq, Wk, Wv 是三个"学到的"矩阵
Wq = np.random.randn(768, 64)  # (768, 64)
Wk = np.random.randn(768, 64)
Wv = np.random.randn(768, 64)

# 矩阵乘法 → 得到 Q, K, V
Q = X @ Wq  # (10, 64)
K = X @ Wk  # (10, 64)
V = X @ Wv  # (10, 64)

# 注意力分数 = Q · K^T
scores = Q @ K.T  # (10, 10)

每一行操作都是矩阵乘法。这就是 Transformer 的”心跳”

一句话总结

向量是 AI 的数据,矩阵是 AI 的操作。

学好这两个,AI 论文里 80% 的公式你都能读懂。

想”看见”它

👀 打开 Embedding 空间漫游可视化 —— 看 50 个词在向量空间里的位置,玩 king − man + woman = queen 的算术。

💡 下一篇预告

学完线性代数,我们要解决一个问题:矩阵 WW 里的数是从哪儿来的? 答案是”训练”。训练的本质是导数和梯度——下一篇我们讲。

下一篇:《导数与梯度:“学习”的数学定义》

📬

读到这里说明你认真在学 🎯

订阅每周精选 —— 下一篇新文章 / 新可视化第一时间送到邮箱。

💬

讨论区

· 用 GitHub 账号登录评论
⚠️ Giscus 评论未配置 —— 在 src/components/Comments.astro 顶部填入 仓库 ID 和分类 ID(见组件注释里的配置步骤)。