线性代数-程序员补数学
线性代数是AI的底层语言,程序员无论使用推荐系统、NLP还是图像识别,本质上都在处理矩阵运算。文章从标量、向量、矩阵到张量逐层解析数据结构,揭示线性代数如何将世界抽象为数字并描述其变化。重点阐释了范数、内积、特征值等核心概念在推荐系统、降维等场景的应用,指出矩阵既是变换工具也是坐标系。最终强调,理解线性空间才能超越API调用,真正掌握AI模型的空间映射和表示学习本质。程序员逃不掉的线性代数,正是拆
线性代数:你写的每一行AI代码,本质都是矩阵
出来混,迟早要还的。
当年逃掉的线性代数,现在在神经网络里等你。
一、为什么程序员一定会撞上线性代数?
你可能觉得:
- 我是后端工程师
- 我是架构师
- 我只是调个模型 API
但只要你接触:
- 推荐系统
- NLP
- 图像识别
- 向量数据库
- 大模型
你已经站在了线性代数的地盘上。
因为:
人工智能的底层语言,不是 Java,不是 Python,而是矩阵。
二、线性代数在干什么?一句话说清
线性代数干的事情其实非常简单:
把世界抽象成数字结构,然后描述它们的变化。
听起来抽象?我们慢慢拆开。
三、从“水果集合”开始:什么是抽象?
想象一个集合:
{ 苹果, 橘子, 梨 }
它们的共性是——水果。
再看一个集合:
{ 牛, 马, 羊 }
共性是——动物。
那这个集合呢?
{ 苹果, 牛 }
可以构成集合,但它没什么意义。
数学关心的是“有结构的集合”。
但问题来了——
“苹果”这种具体概念,计算机怎么理解?
答案是:
把一切变成数字。
四、从标量到张量:程序员版理解
1️⃣ 标量(Scalar)——一个数字
- 温度:36.5
- 概率:0.87
- 权重:2.3
在代码里就是:
a = 3.14
零维数据。
2️⃣ 向量(Vector)——一组有序数字
比如一个用户画像:
[年龄, 消费能力, 活跃度]
= [28, 0.8, 0.6]
一个词向量:
"北京" → [0.21, -0.33, 0.78, ...]
向量的本质:
n维空间中的一个点。
每个用户,就是空间中的一个坐标。
3️⃣ 矩阵(Matrix)——变换机器
当你把多个向量排成表格:
用户1
用户2
用户3
你就得到了矩阵。
矩阵最重要的作用不是“存数据”。
而是:
描述变化。
例如:
y = Wx
这句代码,在神经网络中出现无数次。
它的意义是:
把一个空间里的点,映射到另一个空间。
4️⃣ 张量(Tensor)——高维结构
- 灰度图像:二维矩阵
- RGB 图像:三维张量
- 视频:四维张量
如果把一个 3×3×3 的魔方看作数字块:
它就是一个三阶张量。
矩阵只是张量的一个切片。
五、范数:向量到底“多大”?
假设有两个用户:
A = [100, 1, 1]
B = [10, 10, 10]
谁“更大”?
答案取决于你用什么范数。
- L1:绝对值之和
- L2:欧几里得长度
- L∞:最大值
在机器学习中:
- L1 → 稀疏模型
- L2 → 正则化
- Dropout → 其实也在控制范数
范数就是:
把向量映射成一个数,表示“规模”。
六、内积:推荐系统的核心
假设:
用户向量 u
商品向量 v
做内积:
u · v
本质是:
两个向量的“方向相似度”。
如果内积为 0:
- 二维里是垂直
- 高维里是正交
- 工程意义是:互不相关
这就是:
- 协同过滤
- Attention
- 向量检索
的基础。
七、线性空间:抽象世界的容器
当一堆向量可以:
- 做加法
- 做数乘
它们构成一个线性空间。
在 AI 里我们更常听到:
- 特征空间
- 表示空间
- 嵌入空间
每个样本是空间里的一个点。
八、矩阵的双重身份:变换 or 坐标系?
表达式:
Ax = y
可以有两种理解:
1️⃣ x 被变换
矩阵 A 作用在 x 上,让它变成 y。
2️⃣ 你换了观察角度
对象没变,是你换了坐标系。
这就像:
横看成岭侧成峰。
矩阵不仅描述变化,还描述“观察方式”。
九、特征值与特征向量:哪吒分身理论
普通向量被矩阵作用时:
- 会旋转
- 会缩放
但有一类特殊向量:
Ax = λx
方向不变,只缩放。
它们就是:
- 特征向量
- 特征值
可以类比成:
一个三头六臂的哪吒,在不同方向以不同速度奔跑。
- 方向 = 特征向量
- 速度 = 特征值
PCA、谱聚类、PageRank、傅立叶变换,全靠它。
十、线性代数真正的核心
很多人误以为:
线性代数 = 算行列式
错。
它真正做的事是:
- 把对象变成向量
- 把变化变成矩阵
- 把结构拆成特征方向
一句话总结:
线性代数,是把复杂世界拆解成可计算结构的语言。
十一、程序员为什么必须补这一课?
因为你每天写的:
y = Wx + b
不是魔法。
它是:
- 空间映射
- 维度变换
- 基变换
- 表示学习
如果你只会调 API:
你只是用工具。
如果你理解线性空间:
你才真正理解模型。
更多推荐


所有评论(0)