上一节把数据表示成了向量。本节回答:怎么对一整个空间的向量做统一的操作? 答案是矩阵。理解本节的关键口号是——矩阵就是一个动作。
一、矩阵(Matrix)是什么
表面上,矩阵是一个数的长方形表格,m×n 表示 m 行 n 列:
A=a11a21⋮am1a12a22⋮am2⋯⋯⋱⋯a1na2n⋮amn
但真正重要的是它的第二重身份:一个线性变换。一个 m×n 矩阵,是一台把 n 维向量「吃进去」、吐出 m 维向量的机器。
跨领域应用:神经网络的每一层就是一次矩阵乘法,即一次线性变换,把向量从一个维度空间映射到另一个。前向传播的完整过程就是一系列矩阵变换的串联。(见后文案例)
二、矩阵的基本运算
矩阵乘法因与变换复合深度绑定,单独放在第五节。其余四种基本运算如下。
2.1 加法与数乘
加法:两个同型矩阵(行列数相同)逐元素相加,(A+B)ij=aij+bij。满足交换律与结合律。
数乘:标量 c 与矩阵逐元素相乘,(cA)ij=c⋅aij。
2.2 转置
转置 A⊤:行列互换,(A⊤)ij=Aji。在内积、协方差、最小二乘中无处不在;A⊤A 一定是对称矩阵。运算规律:
- (A⊤)⊤=A(转两次还原)
- (A+B)⊤=A⊤+B⊤
- (AB)⊤=B⊤A⊤(顺序反转——先做的变换,转置后排到右边)
- (A−1)⊤=(A⊤)−1(A 可逆时)
2.3 外积与投影矩阵
外积(outer product):列向量 × 行向量,结果是 n×m 矩阵。
ab⊤=a1a2⋮an[b1b2⋯bm]=a1b1a2b1⋮anb1a1b2a2b2⋮anb2⋯⋯⋱⋯a1bma2bm⋮anbm
与内积相比:a⊤b(行×列)压缩为标量;ab⊤(列×行)展开为矩阵。
投影矩阵:单位方向向量 u^ 的外积 u^u^⊤ 就是沿 u^ 方向的投影矩阵。
对任意向量 x:
(u^u^⊤)x=u^(u^⊤x),其中 u^⊤x 是投影长度(标量),乘以方向 u^ 得到投影向量。
对矩阵 X 同理:u^u^⊤X 将 X 的每一列都投影到 u^ 方向上。
2.4 迹(Trace)
迹 tr(A):方阵对角元之和,tr(A)=∑iaii。关键性质:tr(AB)=tr(BA)——即使 AB=BA,迹仍相等。Frobenius 范数 ∥A∥F2=tr(A⊤A) 由此而来。
2.5 逆矩阵
逆矩阵 A−1:满足 A−1A=AA−1=I 的矩阵。几何直觉:A−1 是「撤销 A 这个变换」的操作。
存在条件:A 必须是方阵,且 det(A)=0——即变换没有把空间压缩到更低维度。
三、矩阵 × 向量 = 变换空间 / 测量输入
3.1 基(Basis)
理解变换之前,先明确坐标系。二维平面默认使用标准基:
e1=[10],e2=[01]
任意二维向量都是它们的线性组合——例如 [32]=3e1+2e2。
3.2 列视角——换基:Ax 的本质
A 的每列是标准基变换后的落点——当各列线性无关时,它们构成一组新基;Ax 就是把 x 的各坐标在这组新基下展开,合成变换后的向量。
核心直觉:A 做的事不是「移动 x 这个点」,而是「重新定义坐标轴的方向」——数字没动,动的是那把尺子。列向量线性无关时,这就是真正的换基;列向量线性相关时,变换将空间压进更低维的子空间,即降维。
3.3 行视角——批量内积:Ax 的另一种描述
A 的每一行是一个「探测器」,Ax 的每个分量衡量输入与该探测器的匹配程度。
把 A 按行切开,第 i 行记为 ai⊤(1×n 行向量),则 Ax 的第 i 个分量为:
(Ax)i=ai⊤x=k=1∑naikxk
这正是内积——A 的第 i 行与 x 逐元素相乘再求和。把 m 个分量叠在一起,就是 m 个内积打包成一列。
两种视角的对照:
- 列视角(换基):坐标乘基向量再相加,回答「合成后的向量在哪」
- 行视角(内积):每行跟输入做内积,回答「输入与每行模板有多匹配」
两种视角是同一件事的两面:列视角看到「空间被变换」,行视角看到「输入被测量」——前者改变空间,后者测量输入。
跨领域应用:图形渲染的本质就是矩阵乘向量——每个顶点坐标(x, y)是一个向量,乘以变换矩阵就得到新坐标。GPU 每帧对数百万顶点并行执行矩阵乘法,才能实时渲染效果。
四、常见线性变换与雅可比矩阵
对变换 T 的每个输出分量分别对各输入变量求偏导、按行排成矩阵,即雅可比矩阵(Jacobian):
J=[∂T1/∂x∂T2/∂x∂T1/∂y∂T2/∂y]
- 线性变换的 Jacobian 是常数(全局一致)。
- 非线性变换的 Jacobian 随坐标变化——每个点都有自己的「局部线性近似」。
五、矩阵乘法 = 变换的复合 / 行列内积排表
C=AB 不是数字的机械搬运——整体看是变换的复合,从列看是逐列施以变换,从行看是两两内积排成表。
5.1 为什么不可交换
AB=BA 是常态,可交换是例外。
原因:每个变换都会重塑整个空间,第二个变换作用的是已经被第一个变换改造过的空间——顺序不同,第二步「看到」的东西完全不同。
虽然不可交换,但结合律始终成立:(AB)C=A(BC)——无论怎么分组结果都一样。这是深度网络能多层串联的理论基础。
六、跨领域应用案例
案例一:AI / 深度学习 — 神经网络的前向传播
全连接网络的核心计算是 z=Wx+b。
W 的每一行是一个探测器,zi=wi⊤x 衡量输入与该探测器的匹配程度。
训练过程就是在寻找「对识别最有用的那组探测器」。学成之后,W 的每一行就固化成一个特征模板:权重值编码了「关注哪些特征、忽略哪些特征」。Wx 一次输出 m 个得分,就是 m 个模板各自测量的结果。
为什么需要非线性激活?
如果只有矩阵乘法:W2(W1x)=(W2W1)x。两层矩阵乘积 W2W1 仍是一个矩阵——无论叠多少层,都等价于单层线性变换。ReLU 这样的激活函数打破了线性叠加的封闭性,使网络能逼近任意连续函数。
案例二:游戏引擎 — 为什么变换顺序不能乱
3D 游戏引擎对每个物体固定按「缩放→旋转→平移」顺序执行。
- 先缩放 S 再旋转 R(正确):缩放作用在物体的本地轴上,旋转再改变整体朝向。
- 先旋转 R 再缩放 S(错误):物体旋转后,缩放仍沿世界坐标轴拉伸,导致资产必定变形。
如果确实需要「沿特定方向拉伸」,可使用投影公式构造矩阵:M=I+(k−1)u^u^⊤。
七、小结
| 概念 |
一句话理解 |
| 矩阵 |
一个线性变换(动作) |
| 矩阵 × 向量 |
列视角:新基下的坐标组合;行视角:各方向上的投影读数;二者完全一致 |
| 矩阵乘法 |
列视角:逐列变换;行视角:逐行扫描;行列交叉 = 内积排表 |
| 不可交换 |
动作顺序不同结果不同 |
下一节:变换能不能「撤销」?什么时候方程有唯一解?这就引出特征值与特征向量。