线性代数直觉:向量、矩阵与变换
WARNING
🧪 Beta公测版本提示:教程主体已完成,正在优化细节,欢迎大家提Issue反馈问题或建议。
本章不是大学线代课的压缩版,只建立 AI 里天天用到的三种直觉:向量是带方向的量、矩阵是线性变换、SVD/PCA 抓住主要方向。学完应能读懂线性回归、注意力里的
、以及「把数据投到低维」在说什么。微积分里「局部当成直线」见 导数;解方程与秩见 线性方程组;特征向与二次型见 特征值。领域地图:数学基础。
一、向量:数组背后的几何
在代码里,向量往往是一维数组 [x1, x2, ..., xd]。几何上,它是从原点出发的一支箭:
- 长度(范数)
:能量、距离; - 方向:和别的向量夹角由内积决定:
- 内积大:方向相近(余弦相似度的亲戚)。
深度学习里的「嵌入」「特征」本质上都是高维向量。你几乎总在问:谁和谁近?朝哪个方向更新?
二、矩阵:把空间捏一捏
矩阵
矩阵 = 线性变换:旋转、拉伸、投影、剪切……都可以写成
。
另一种读法(和实现一致):
即

图解说明:网格被
矩阵变成平行四边形。直线仍是直线,原点不动——这就是「线性」。
逐步推导:为什么 等于「列的线性组合」(点击展开)
把
几何:输入的第
- 列空间 = 所有
能到的点 = 列张成的空间; - 若列线性相关,有非零
使 ,变换把某个方向压扁(降维、不可逆); - 单位基向量
被送到第 列——矩阵的列就是基的像。
深度学习里

图解说明:左是向量;中是网格被
变换;右是「列的加权和」。三种视角描述同一件事。
常见特例:
| 对象 | 形状 | 在模型里 |
|---|---|---|
| 权重矩阵 | 一层线性: | |
| 数据矩阵 | 每行一个样本 | |
| Gram / 核矩阵 | 样本两两相似度 |
矩阵乘法
三、特征与 SVD:谁是「主要方向」
方阵特征分解
对一般的数据矩阵,更通用的是 SVD:
的列:输入空间的正交主方向; 的对角:各方向上的「强度」(奇异值); :输出/样本侧的对应方向。
PCA 本质上是:对中心化数据做 SVD,留下最大的若干奇异值方向,把点投影上去——用更少的坐标保留最多方差。

图解说明:椭圆状散点的长轴就是第一主成分;投到这条轴上,用一维近似二维结构。
世界模型与表示学习里,「低维潜变量
四、范数、条件数(知道就行)
:默认欧氏长度;损失里的 MSE 与之同源。 :把矩阵当成长向量的欧氏范数,常作权重正则。 - 条件数大:输入小扰动 → 输出大变化,数值上「病态」。训练不稳定、矩阵求逆爆炸时,会碰到它的影子。
五、代码在做什么
demo.py 会:
- 画一个 2D 向量,展示旋转矩阵如何把它转起来;
- 生成椭圆状散点,用 SVD 画出前两个主方向并投影。
C++ mat2.hpp 手写 2×2 乘法 / 行列式 / 旋转,与 Python 同一约定(逆时针,


不引入额外黑盒叙事——你看到的箭头就是
六、小结
| 概念 | 一句话 |
|---|---|
| 向量 | 方向 + 长度;内积量相似度 |
| 矩阵 | 线性变换;列的线性组合 |
| 把 | |
| SVD/PCA | 找方差/能量最大的正交方向并降维 |
| 下游 | 线性层、注意力、降维、潜空间、量子态矢量 |
📥 Code
| File | View | Download |
|---|---|---|
| demo.py | Open | Download |
| mat2.hpp | — | Download |
| demo.cpp | — | Download |
| exercise.py | Open | Download |
参考
- Strang, G. Introduction to Linear Algebra(几何直觉极好)
- 3Blue1Brown, Essence of linear algebra(强烈推荐配合看)