大家的AI
机器学习AI论文
加载中…

学习

🏅我的成就

Ch.04

矩阵乘法与线性变换:操纵空间的数学

按章节的数学图示

选择章节后,下方图示会切换为该章节内容。可一览中级数学的脉络。

方格 → AAA → 拉歪的格

左边同一坐标的点,右边一步到位;整片格子一起被拉长。

橙色 A 标记: 本图使用的 矩阵 AAA(线性变换)。用它左乘左侧坐标 x\mathbf{x}x,得到右侧的点 AxA\mathbf{x}Ax。

输入区输出区a₁a₂xAxℝ²:输入所在的二维实数空间(坐标对)。与回归里的 R² 不是同一记号。ℝ²实数坐标平面 · 输入ℝ²:绘制变换后点的二维实数空间;本图中与输入同维。ℝ²实数坐标平面 · 输出A灰虚线 = A=I 时的正方形

同一平面上方格经 A 变为平行四边形,点 x 变为 Ax。

输入 / 框|AAA|能到的面|x↦Ax\mathbf{x} \mapsto A\mathbf{x}x↦Ax

记住这张图就够

T(x)=AxT(\mathbf{x})=A\mathbf{x}T(x)=Ax。TTT 表示“用矩阵 AAA 做线性变换”的名字(函数记号)。T(x)T(\mathbf{x})T(x) 即“把 x\mathbf{x}x 经过 TTT 变换后的结果”,与 AxA\mathbf{x}Ax 同一含义。
蓝区 = 由 AAA 的两列向量张成的平行四边形。T(x)=AxT(\mathbf{x})=A\mathbf{x}T(x)=Ax 总落在其内(两列线性组合可达的范围)。
矩阵乘法不只是把许多数字加减乘除的枯燥运算。矩阵与数码照片编辑器里的智能滤镜一样,负责旋转、扭曲、压缩原始数据。本章将深入线性变换(Linear Transformation):把一份数据(向量)放进编辑器(矩阵),映射到截然不同的“空间”。我们还会拆解深度学习最根本的骨架 y=Wx+b\mathbf{y} = W\mathbf{x} + \mathbf{b}y=Wx+b 具有怎样的数学含义、如何运作。

矩阵乘法与线性变换:自如编辑空间

1. 线性变换(Linear Transformation):图像编辑里的「自由变换」工具
概念: 想象透明网格上画好的图被放进 Photoshop:拖动角点斜向拉伸、旋转 45°、剪切压扁——几何里说的线性变换就是这类操作。
严格规则: 有两条绝不能破坏的程序规则。第一,图像正中央的原点 (0,0)(0,0)(0,0) 变换后仍在原处。第二,原本是直线的仍保持笔直,彼此平行的线变换后仍平行。
2. 矩阵×向量 (AxA\mathbf{x}Ax):给原图加滤镜
概念: 向量 x\mathbf{x}x 是尚未加效果的「原始数据(点的位置)」,矩阵 AAA 是按特定角度与比例扭曲的智能滤镜(变换规则)。把滤镜套在原图上的操作记为 AxA\mathbf{x}Ax(矩阵 AAA 作用于 x\mathbf{x}x)。
深度学习中的用法: 神经网络的一层用同一技巧写出 y=Wx+b\mathbf{y} = W\mathbf{x} + \mathbf{b}y=Wx+b。
* WWW(权重矩阵):把数据扭成更易分析的角度与比例(线性变换)。
* b\mathbf{b}b(偏置向量):像拖动图层那样整体平移。
经过「变形 + 平移」得到的结果 y\mathbf{y}y 会传到下一层。
3. 矩阵×矩阵 (ABABAB):多个滤镜按顺序叠上去
概念: 矩阵 AAA 与 BBB 相乘表示连续应用两种编辑滤镜。注意 ABABAB 的式子从右向左读,所以是先应用 BBB,再把结果套上 AAA。
核心(AB≠BAAB \neq BAAB=BA):「横向拉伸 2 倍再旋转 90°」会得到又高又窄的图;「先旋转 90° 再横向拉伸 2 倍」会得到又宽又扁的图。顺序改变结果就变,因此AB≠BAAB \neq BAAB=BA(交换律一般不成立)非常重要。
4. 矩阵乘法的维度匹配:接对口一致的线缆
概念: 叠多个滤镜时,前后接口规格要对上:左矩阵的列数与右矩阵的行数必须完全一致,运算才能咬合。
核心公式: (m×n)(m\times n)(m×n) 与 (n×p)(n\times p)(n×p) 相乘时,相接的 nnn 在计算中被吸收,输出 (m×p)(m\times p)(m×p)。实务里常对 WWW 做转置,把数据 XXX 与权重规格对齐,写成 Y=XWTY = XW^{\mathsf{T}}Y=XWT 再计算。
5. 变换示例:把三维“压”到平面上
示例 1 把三维点 (x1,x2,x3)(x_1,x_2,x_3)(x1​,x2​,x3​) 映到 z=0z=0z=0 的 xyxyxy 平面(丢掉第三个坐标)的线性变换可写成:
A=(100010000)A=\begin{pmatrix}1&0&0\\0&1&0\\0&0&0\end{pmatrix}A=​100​010​000​​
规则: x↦Ax\mathbf{x}\mapsto A\mathbf{x}x↦Ax。下面把同一乘积按 逐行内积 展开。
第 1 步 — 写出乘积 设 x=(x1,x2,x3)T\mathbf{x}=(x_1,x_2,x_3)^{\mathsf T}x=(x1​,x2​,x3​)T,则
Ax=(100010000)(x1x2x3)A\mathbf{x}=\begin{pmatrix}1&0&0\\0&1&0\\0&0&0\end{pmatrix}\begin{pmatrix}x_1\\x_2\\x_3\end{pmatrix}Ax=​100​010​000​​​x1​x2​x3​​​
第 2 步 — 每一行与 x\mathbf{x}x 内积(第 iii 个分量 = AAA 的第 iii 行 · x\mathbf{x}x)
y1=1⋅x1+0⋅x2+0⋅x3=x1,y2=0⋅x1+1⋅x2+0⋅x3=x2,y3=0⋅x1+0⋅x2+0⋅x3=0.\begin{aligned} y_1 &= 1\cdot x_1+0\cdot x_2+0\cdot x_3 = x_1,\\ y_2 &= 0\cdot x_1+1\cdot x_2+0\cdot x_3 = x_2,\\ y_3 &= 0\cdot x_1+0\cdot x_2+0\cdot x_3 = 0. \end{aligned}y1​y2​y3​​=1⋅x1​+0⋅x2​+0⋅x3​=x1​,=0⋅x1​+1⋅x2​+0⋅x3​=x2​,=0⋅x1​+0⋅x2​+0⋅x3​=0.​
第 3 步 — 结果向量
Ax=(y1y2y3)=(x1x20)A\mathbf{x}=\begin{pmatrix}y_1\\y_2\\y_3\end{pmatrix}=\begin{pmatrix}x_1\\x_2\\0\end{pmatrix}Ax=​y1​y2​y3​​​=​x1​x2​0​​
也就是 保留 x1,x2x_1,x_2x1​,x2​,把 x3x_3x3​ 变为 0。 几何上这是过原点的 xyxyxy 平面的正交投影;用一次矩阵乘法就表达了“去掉一维信息”的滤镜,并与 Ch.02 的内积、投影直觉相连。
给实务者的要点: 矩阵乘法不是把数据看成一堆一维数字,而是在多维空间里扭、转、压的动态空间变换工具(y=Wx+b\mathbf{y} = W\mathbf{x} + \mathbf{b}y=Wx+b)。堆多层时,规格((m×n)×(n×p)(m \times n) \times (n \times p)(m×n)×(n×p))先对齐最重要;还要牢记变换顺序(AB≠BAAB \neq BAAB=BA)会彻底改变结果。
一次处理数十万像素的并行魔法
编辑高分辨率照片时,若逐像素手写计算,一天都不够。矩阵乘法把无数点收进一张大表(矩阵),变换规则也用另一张矩阵表达,于是「加滤镜」的直觉就落成一次矩阵乘。
GPU 为这种乘法做了成千上万核心并行的设计。TensorFlow、PyTorch 里常见的批量 GEMM,把多样本堆成 XXX,再乘以 WWW,用 Y=XWTY = XW^{\mathsf{T}}Y=XWT 一口气推过整个小批量。深度学习能高速吞吐数据,归根结底是因为矩阵这一通用格式能把硬件并行性吃满。
贯穿所有人工智能模型的共同语言
无论是 Netflix 推荐、特斯拉车道线,还是 ChatGPT 对话,最底层都在跑 Y=XWTY = XW^{\mathsf{T}}Y=XWT 这种矩阵乘。全连接层、嵌入、注意力分数——名字不同,根子都是矩阵×矩阵。
有了这份感觉,遇到 Shape mismatch 时能更快判断哪一块尺寸没对上。左矩阵列数必须等于右矩阵行数,就像线缆规格要对口。习惯这套「共同语言」后,不同领域的论文、代码、日志都能用同一张地图来读。
1)Transformer 与注意力:用词与词之间的「关注地图」
ChatGPT 类模型的核心是注意力:计算句子中词与词该多互相关注。QKTQK^{\mathsf{T}}QKT 快速填满「这个词看那个词有多用力」的原始分数;再经 softmax 与 VVV 的加权和,得到缩放点积注意力。一句话:先用矩阵乘画关系图,再用同一套代数做加权混合。
2)线性层与批量学习:整批一次算
全连接层重复 y=Wx+b\mathbf{y} = W\mathbf{x} + \mathbf{b}y=Wx+b。训练时把 NNN 个样本排成 XXX,常写成 Y=XWT+1bTY = XW^{\mathsf{T}} + \mathbf{1}\mathbf{b}^{\mathsf{T}}Y=XWT+1bT 一次处理。卷积在展开后也可看成大矩阵乘,所以框架底层大量用 GEMM。
3)嵌入与推荐:语义向量互相对照
词、用户、物品变成向量后,用内积或矩阵乘得到相似度与分数,驱动推荐、搜索、排序——等于用一张矩阵概括「谁离谁近」。
1)PCA 与降维:把千维压成「影子」
人很难直观想象三维以上,但数据常是成百上千维。PCA 把协方差写成矩阵,选特征向量方向(方差大的轴),再把数据投影上去。写成线性变换,就是「压掉无用方向、只留关键轴」。你看到的二维散点图,其实是高维云被矩阵压扁后的影子。
2)几何直觉:为后面的特征值、行列式预习
同一线性变换在不同方向上伸缩不同;特殊方向是特征向量,伸缩比是特征值。本章掌握的「列张成的平行四边形」与合成 ABABAB,会让 Ch.05 之后的可逆性、行列式、谱更好理解。
3)计算机图形学:上到屏幕仍是矩阵
游戏、CAD 里旋转、平移、透视用齐次坐标和矩阵乘。「把 3D 场景投到 2D 屏」同样是用矩阵一次搬坐标。深度学习和 CG 看似不同,在用矩阵处理空间上共用同一套工具箱。
下表汇总了维度规则与常用公式。例题按典型类型分步说明。
  • 符号ABABAB
  • 含义当 AAA 的列数 = BBB 的行数时有定义
  • 符号(AB)ij(AB)_{ij}(AB)ij​
  • 含义AAA 的第 iii 行与 BBB 的第 jjj 列的内积
  • 符号AxA\mathbf{x}Ax
  • 含义由 AAA 的各行与 x\mathbf{x}x 的内积组成的向量
  • 符号(AB)T(AB)^{\mathsf T}(AB)T
  • 含义BTATB^{\mathsf T}A^{\mathsf T}BTAT
  • 符号合成
  • 含义x↦A(Bx)=(AB)x\mathbf{x}\mapsto A(B\mathbf{x})=(AB)\mathbf{x}x↦A(Bx)=(AB)x
  • 符号线性层
  • 含义y=Wx+b\mathbf{y}=W\mathbf{x}+\mathbf{b}y=Wx+b(权重 WWW,偏置 b\mathbf{b}b)
符号含义
ABABAB当 AAA 的列数 = BBB 的行数时有定义
(AB)ij(AB)_{ij}(AB)ij​AAA 的第 iii 行与 BBB 的第 jjj 列的内积
AxA\mathbf{x}Ax由 AAA 的各行与 x\mathbf{x}x 的内积组成的向量
(AB)T(AB)^{\mathsf T}(AB)TBTATB^{\mathsf T}A^{\mathsf T}BTAT
合成x↦A(Bx)=(AB)x\mathbf{x}\mapsto A(B\mathbf{x})=(AB)\mathbf{x}x↦A(Bx)=(AB)x
线性层y=Wx+b\mathbf{y}=W\mathbf{x}+\mathbf{b}y=Wx+b(权重 WWW,偏置 b\mathbf{b}b)
① 维度 相乘前内侧两个数必须一致。
② 批量 行是样本时,对每行用同一个 WWW,用 `GEMM` 处理。

例题

例 1 — 乘积形状
问:AAA 为 4×74\times 74×7,BBB 为 7×37\times 37×3,则 ABABAB 是?
答:4×34\times 34×3。

例 2 — 合成顺序
问:对 x\mathbf{x}x 先 BBB 再 AAA 对应的矩阵是?
答:ABABAB。

例 3 — 转置
问:(AB)T(AB)^{\mathsf T}(AB)T 是?
答:BTATB^{\mathsf T}A^{\mathsf T}BTAT。

例 4 — 列视角
问:Ae2A\mathbf{e}_2Ae2​ 是?
答:AAA 的第 2 列。

例 5 — 批量
问:行是样本的 XXX 上如何一次做线性层?
答:常用 XWTXW^{\mathsf T}XWT 形式。

练习题

对线性映射 T(x)=AxT(\mathbf{x})=A\mathbf{x}T(x)=Ax,下列哪一项恒成立?
1 / 10