· 线性代数

2 · 矩阵与线性变换

一个矩阵就是一个动作。从列视角看换基,从行视角看批量内积,揭示深度学习前向传播与游戏引擎变换的底层逻辑。

上一节把数据表示成了向量。本节回答:怎么对一整个空间的向量做统一的操作? 答案是矩阵。理解本节的关键口号是——矩阵就是一个动作

一、矩阵(Matrix)是什么

表面上,矩阵是一个数的长方形表格,m×nm \times n 表示 m 行 n 列:

A=[a11a12a1na21a22a2nam1am2amn]\mathbf{A} = \begin{bmatrix} a_{11} & a_{12} & \cdots & a_{1n} \\ a_{21} & a_{22} & \cdots & a_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{m1} & a_{m2} & \cdots & a_{mn} \end{bmatrix}

但真正重要的是它的第二重身份:一个线性变换。一个 m×nm \times n 矩阵,是一台把 n 维向量「吃进去」、吐出 m 维向量的机器。

跨领域应用:神经网络的每一层就是一次矩阵乘法,即一次线性变换,把向量从一个维度空间映射到另一个。前向传播的完整过程就是一系列矩阵变换的串联。(见后文案例)

二、矩阵的基本运算

矩阵乘法因与变换复合深度绑定,单独放在第五节。其余四种基本运算如下。

2.1 加法与数乘

加法:两个同型矩阵(行列数相同)逐元素相加,(A+B)ij=aij+bij(\mathbf{A}+\mathbf{B})_{ij}=a_{ij}+b_{ij}。满足交换律与结合律。

数乘:标量 cc 与矩阵逐元素相乘,(cA)ij=caij(c\mathbf{A})_{ij}=c\cdot a_{ij}

2.2 转置

转置 A\mathbf{A}^\top:行列互换,(A)ij=Aji(\mathbf{A}^\top)_{ij}=\mathbf{A}_{ji}。在内积、协方差、最小二乘中无处不在;AA\mathbf{A}^\top\mathbf{A} 一定是对称矩阵。运算规律:

2.3 外积与投影矩阵

外积(outer product):列向量 × 行向量,结果是 n×mn\times m 矩阵

ab=[a1a2an][b1b2bm]=[a1b1a1b2a1bma2b1a2b2a2bmanb1anb2anbm]\mathbf{a}\mathbf{b}^\top = \begin{bmatrix}a_1\\a_2\\\vdots\\a_n\end{bmatrix}\begin{bmatrix}b_1 & b_2 & \cdots & b_m\end{bmatrix} = \begin{bmatrix}a_1 b_1 & a_1 b_2 & \cdots & a_1 b_m \\ a_2 b_1 & a_2 b_2 & \cdots & a_2 b_m \\ \vdots & \vdots & \ddots & \vdots \\ a_n b_1 & a_n b_2 & \cdots & a_n b_m\end{bmatrix}

与内积相比:ab\mathbf{a}^\top\mathbf{b}(行×列)压缩为标量;ab\mathbf{a}\mathbf{b}^\top(列×行)展开为矩阵。

投影矩阵:单位方向向量 u^\hat{u} 的外积 u^u^\hat{u}\hat{u}^\top 就是沿 u^\hat{u} 方向的投影矩阵。

对任意向量 x\mathbf{x}(u^u^)x=u^(u^x)(\hat{u}\hat{u}^\top)\mathbf{x} = \hat{u}\,(\hat{u}^\top\mathbf{x}),其中 u^x\hat{u}^\top\mathbf{x} 是投影长度(标量),乘以方向 u^\hat{u} 得到投影向量。

对矩阵 X\mathbf{X} 同理:u^u^X\hat{u}\hat{u}^\top\mathbf{X}X\mathbf{X} 的每一列都投影到 u^\hat{u} 方向上。

2.4 迹(Trace)

tr(A)\text{tr}(\mathbf{A}):方阵对角元之和,tr(A)=iaii\text{tr}(\mathbf{A})=\sum_i a_{ii}。关键性质:tr(AB)=tr(BA)\text{tr}(\mathbf{AB})=\text{tr}(\mathbf{BA})——即使 ABBA\mathbf{AB}\neq\mathbf{BA},迹仍相等。Frobenius 范数 AF2=tr(AA)\|\mathbf{A}\|_F^2=\text{tr}(\mathbf{A}^\top\mathbf{A}) 由此而来。

2.5 逆矩阵

逆矩阵 A1\mathbf{A}^{-1}:满足 A1A=AA1=I\mathbf{A}^{-1}\mathbf{A}=\mathbf{A}\mathbf{A}^{-1}=\mathbf{I} 的矩阵。几何直觉:A1\mathbf{A}^{-1} 是「撤销 A\mathbf{A} 这个变换」的操作。

存在条件A\mathbf{A} 必须是方阵,且 det(A)0\det(\mathbf{A})\neq 0——即变换没有把空间压缩到更低维度。

三、矩阵 × 向量 = 变换空间 / 测量输入

3.1 基(Basis)

理解变换之前,先明确坐标系。二维平面默认使用标准基

e1=[10],e2=[01]\mathbf{e}_1 = \begin{bmatrix}1\\0\end{bmatrix},\quad \mathbf{e}_2 = \begin{bmatrix}0\\1\end{bmatrix}

任意二维向量都是它们的线性组合——例如 [32]=3e1+2e2\begin{bmatrix}3\\2\end{bmatrix} = 3\mathbf{e}_1 + 2\mathbf{e}_2

3.2 列视角——换基:Ax 的本质

A 的每列是标准基变换后的落点——当各列线性无关时,它们构成一组新基;Ax 就是把 x 的各坐标在这组新基下展开,合成变换后的向量。

核心直觉:A 做的事不是「移动 x 这个点」,而是「重新定义坐标轴的方向」——数字没动,动的是那把尺子。列向量线性无关时,这就是真正的换基;列向量线性相关时,变换将空间压进更低维的子空间,即降维。

3.3 行视角——批量内积:Ax 的另一种描述

A 的每一行是一个「探测器」,AxA\mathbf{x} 的每个分量衡量输入与该探测器的匹配程度。

把 A 按切开,第 ii 行记为 ai\mathbf{a}_i^\top1×n1 \times n 行向量),则 AxA\mathbf{x} 的第 ii 个分量为:

(Ax)i=aix=k=1naikxk(A\mathbf{x})_i = \mathbf{a}_i^\top \mathbf{x} = \sum_{k=1}^{n} a_{ik}\, x_k

这正是内积——A 的第 ii 行与 x\mathbf{x} 逐元素相乘再求和。把 mm 个分量叠在一起,就是 mm 个内积打包成一列。

两种视角的对照

两种视角是同一件事的两面:列视角看到「空间被变换」,行视角看到「输入被测量」——前者改变空间,后者测量输入。

跨领域应用:图形渲染的本质就是矩阵乘向量——每个顶点坐标(x, y)是一个向量,乘以变换矩阵就得到新坐标。GPU 每帧对数百万顶点并行执行矩阵乘法,才能实时渲染效果。

四、常见线性变换与雅可比矩阵

对变换 T 的每个输出分量分别对各输入变量求偏导、按行排成矩阵,即雅可比矩阵(Jacobian)

J=[T1/xT1/yT2/xT2/y]J = \begin{bmatrix} \partial T_1/\partial x & \partial T_1/\partial y \\ \partial T_2/\partial x & \partial T_2/\partial y \end{bmatrix}

五、矩阵乘法 = 变换的复合 / 行列内积排表

C=AB\mathbf{C} = \mathbf{A}\mathbf{B} 不是数字的机械搬运——整体看是变换的复合,从列看是逐列施以变换,从行看是两两内积排成表。

5.1 为什么不可交换

ABBA\mathbf{AB} \neq \mathbf{BA} 是常态,可交换是例外。 原因:每个变换都会重塑整个空间,第二个变换作用的是已经被第一个变换改造过的空间——顺序不同,第二步「看到」的东西完全不同。

虽然不可交换,但结合律始终成立:(AB)C=A(BC)(\mathbf{AB})\mathbf{C} = \mathbf{A}(\mathbf{BC})——无论怎么分组结果都一样。这是深度网络能多层串联的理论基础。

六、跨领域应用案例

案例一:AI / 深度学习 — 神经网络的前向传播

全连接网络的核心计算是 z=Wx+bz = Wx + bWW 的每一行是一个探测器,zi=wixz_i = \mathbf{w}_i^\top \mathbf{x} 衡量输入与该探测器的匹配程度。

训练过程就是在寻找「对识别最有用的那组探测器」。学成之后,WW 的每一行就固化成一个特征模板:权重值编码了「关注哪些特征、忽略哪些特征」。WxW\mathbf{x} 一次输出 mm 个得分,就是 mm 个模板各自测量的结果。

为什么需要非线性激活? 如果只有矩阵乘法:W2(W1x)=(W2W1)xW_2(W_1 \mathbf{x}) = (W_2 W_1)\mathbf{x}。两层矩阵乘积 W2W1W_2 W_1 仍是一个矩阵——无论叠多少层,都等价于单层线性变换。ReLU 这样的激活函数打破了线性叠加的封闭性,使网络能逼近任意连续函数。

案例二:游戏引擎 — 为什么变换顺序不能乱

3D 游戏引擎对每个物体固定按「缩放→旋转→平移」顺序执行。

如果确实需要「沿特定方向拉伸」,可使用投影公式构造矩阵:M=I+(k1)u^u^M = I + (k-1)\hat{u}\hat{u}^\top

七、小结

概念 一句话理解
矩阵 一个线性变换(动作)
矩阵 × 向量 列视角:新基下的坐标组合;行视角:各方向上的投影读数;二者完全一致
矩阵乘法 列视角:逐列变换;行视角:逐行扫描;行列交叉 = 内积排表
不可交换 动作顺序不同结果不同

下一节:变换能不能「撤销」?什么时候方程有唯一解?这就引出特征值与特征向量