课程库 › AI 主线 › 阶段项目与数学直觉 › 第 4 课
数学直觉一:向量与矩阵 —— 数据在机器眼中的样子
普通课约 55 分钟
本课导读
从本课起,为阶段 2 的机器学习铺最后两块砖——不是数学课(没有证明、不用背公式),是直觉课:搞懂两个词在 AI 语境里到底指什么。今天是"向量"与"矩阵"。剧透结论:你已经和它们共事一个月了——DataFrame 的一行就是向量,整张表就是矩阵。本课只是给老熟人补办一场正式介绍。预计 55 分钟。
观看要点
- ▸向量的三种视角——物理系的箭头、计算机系的数字列表、数学系的抽象对象
- ▸对 AI 从业者,「数字列表」视角是主力——正是下文 DataFrame 一行的样子
- ▸向量加法与数乘的几何画面:箭头首尾相接、整体拉伸
看不了视频?文字讲义已覆盖全部内容,直接往下读即可。
向量:一串数字描述一个东西
给"一名用户"画像:年龄 28、月消费 1200 元、本月登录 15 次。把它们按固定顺序排成一列:
用户小雨 = [28, 1200, 15]
这就是向量(vector):用一串数字完整描述一个对象,每个位置代表一个特征(年龄、消费、活跃度)。它不神秘——你写了一个月的"一行数据"就是它:
两个术语立刻打通:
- 维度(dimension)= 向量里有几个数 = 几个特征。3 个特征就是三维向量。AI 里动辄"768 维向量",不过是用 768 个数字描述一个东西——维度不是玄学,是字段数
- 为什么机器要向量?因为数字才能算。"小雨和丽丽像不像"这种问题,变成向量后就是可计算的距离问题——看下面
向量的用处:相似度有了算法
两个用户像不像?向量视角:把每个特征的差距平方相加再开方(就是勾股定理的推广——两点之间的直线距离):
"像不像"变成了"距离多远"——这一步转换是半个 AI 的地基:推荐系统(找相似用户)、搜索(找相似文档)、RAG(阶段 3 的主角,找和问题相似的资料片段),核心都是"算向量距离"。你未来听到的 Embedding(嵌入),就是"把文字/图片变成向量,好让机器算相似度"——现在这句话对你已经不是黑话了。
(细节说明:例子里 spend 的数值远大于其他特征,会主导距离——真实场景要先把各特征缩放到同一量级,这叫标准化,阶段 2 正式学。今天记住直觉即可。)
矩阵:向量的批量形态
三个用户的向量摞在一起,就是矩阵(matrix)——数字的矩形阵列:
谜底完全揭开:
- 矩阵 = 一批向量 = 去掉标签的 DataFrame。
df.values一步到位;shape你早就在用 - AI 语境的读法:每行一个样本,每列一个特征——"训练数据是一个 10000×768 的矩阵"翻译成人话:一万个样本,每个用 768 个数字描述
- 机器学习的"训练",物理上就是对这些矩阵做大批量乘加运算(矩阵乘法)——为什么 GPU 重要?因为它是矩阵运算的专用引擎。U0.2 讲过的"参数",存放形态也是矩阵
提示
类比记忆:向量是一张个人档案卡,矩阵是一抽屉档案卡。DataFrame 是"贴了标签方便人看"的抽屉,矩阵是"卸掉标签方便机器算"的抽屉——df.values 就是撕标签的动作。AI 的世界里,万物先变档案卡(向量化),再进抽屉(组成矩阵),然后才谈计算。
✍️ 练习
练习 1:手搓一个向量
给"一部手机"设计一个 4 维向量(自选 4 个数值特征,如价格/屏幕寸数/电池/重量),用两部真实手机的数据算它们的距离。
✅ 参考答案
def distance(a, b):
return sum((x - y) ** 2 for x, y in zip(a, b)) ** 0.5
# 特征顺序:[价格(元), 屏幕(寸), 电池(mAh), 重量(g)]
phone_a = [5999, 6.7, 4400, 221]
phone_b = [4599, 6.4, 4600, 194]
print(f"距离:{distance(phone_a, phone_b):.0f}")
# 观察:价格数值最大,几乎独占了距离——亲身体会“需要标准化”的原因
练习 2:从表到矩阵
把上一单元的销售数据(数值列)变成矩阵:读出 values、报出形状、并用一句话翻译这个形状("X 个样本 × Y 个特征")。
✅ 参考答案
import pandas as pd
df = pd.DataFrame({
"product": ["键盘", "鼠标", "显示器", "耳机"],
"price": [599, 149, 1599, 459],
"qty": [2, 3, 1, 2],
"amount": [1198, 447, 1599, 918],
})
m = df[["price", "qty", "amount"]].values
print(m)
print(m.shape) # (4, 3):4 个样本(商品)× 3 个特征
注意 product 列没进矩阵——文字进不了数字矩阵。"文字怎么变数字"正是 Embedding 要解决的问题(阶段 3 见)。
练习 3:迷你推荐器(挑战)
用距离函数给"新用户"找出最相似的老用户:遍历老用户逐个算距离,输出最近的那位的名字。(这 10 行代码就是推荐系统的原理核心。)
✅ 参考答案
import pandas as pd
def distance(a, b):
return sum((x - y) ** 2 for x, y in zip(a, b)) ** 0.5
df = pd.DataFrame({
"age": [28, 35, 22, 41],
"spend": [1200, 800, 2100, 500],
"logins": [15, 4, 22, 2],
}, index=["小雨", "老王", "丽丽", "陈叔"])
new_user = [25, 1900, 20]
best_name = None
best_dist = float("inf") # 从“无穷大”起步,逐个打擂台
for name in df.index:
d = distance(new_user, df.loc[name].values)
print(f"{name}: {d:.0f}")
if d < best_dist:
best_name, best_dist = name, d
print(f"最相似:{best_name} → 可参考 TA 的购买记录做推荐")
"逐个算距离、打擂台找最小"——真实推荐系统在亿级用户上做同样的事(用矩阵运算一次算完 + 各种加速索引),原理你今天就懂了。
📝 随堂测验
1. AI 语境下,“向量”最实用的理解是?
2. “把用户变成向量”换来的最大好处是?
3. “训练数据是 10000×768 的矩阵”翻译成人话是?
4. 练习里 spend(上千)几乎独占了距离计算,说明什么?
5. 为什么 GPU 对 AI 如此重要?用本课的话说:
本课小结
- 向量 = 描述一个对象的一串数字(DataFrame 的一行);维度 = 特征数,不神秘
- 向量化的意义:像不像 → 距离多远——推荐/搜索/RAG(Embedding)的共同地基;量级不均要标准化(阶段 2)
- 矩阵 = 一批向量 = 卸了标签的 DataFrame(df.values);每行一样本、每列一特征
- 训练 = 巨型矩阵运算,GPU 是它的专用引擎
下一课第二块直觉:导数与梯度——U0.2 那句"梯度下降是浓雾下山",这次用代码亲手把山下了。
划选正文任意文字可高亮、批注或加入复习卡
讨论
载入中…