
矩阵运算完全指南矩阵乘法、Hadamard 积、外积、CSR 稀疏存储与线性方程组求解——深度学习前向传播与梯度更新的计算引擎【免费下载链接】maths-cs-ai-compendiumBecome a cracked AI/ML researcher/engineer with this unconventional textbook covering maths, computing, and ML with intuition.项目地址: https://gitcode.com/GitHub_Trending/mat/maths-cs-ai-compendium本文基于 Maths, CS AI Compendium 开源教科书 chapter 02 - matrices/03. operations.md 展开。矩阵运算是深度学习的计算引擎每一次前向传播都在执行 $A\mathbf{x} \mathbf{b}$每一次梯度更新都在执行大量矩阵-矩阵乘法。读完本文你将掌握矩阵加法/标量乘法、矩阵-向量乘积、矩阵乘法、Hadamard 元素级乘积、外积、稀疏矩阵 CSR 存储格式以及通过jnp.linalg.solve求解线性方程组的完整实战方案。一、概述为什么矩阵运算是深度学习的引擎如果把神经网络的每一层拆开看几乎每一层都只做两件事一个矩阵乘法线性变换加上一个偏置加法。第 04. linear transformations.md 中明确指出Transformer 等当代最强 AI 架构的核心就是反复把数据穿过一系列线性变换。而矩阵运算——加法、标量乘法、矩阵-向量积、矩阵乘法、元素级乘法、外积、稀疏存储——正是支撑这些变换的底层计算原语。在本文所属的 chapter 02 - matrices 章节体系中matrix properties.md 定义了矩阵的维度、转置、迹、秩、行列式、逆与范数等静态属性matrix types.md 介绍了三角、正交、稀疏等特殊结构本文03. operations.md则负责回答矩阵之间如何相互作用为后续的线性变换04与分解05含 LU、Cholesky、SVD、PCA提供运算基础。仓库的 mcp/src/index.ts 中定义的正则CHAPTER_RE /^chapter (\d{2})(?::| -) (.)$/与SECTION_RE /^(\d{2})\. (.)\.md$/印证了这一章节-小节的组织方式03. operations.md是第 2 章的第 3 个小节是 MCP 服务器可供 AI Agent 检索的知识单元之一。二、基础运算矩阵加法与标量乘法矩阵的加法和标量乘法与向量完全一致只是逐元素推广加法要求两个矩阵维度完全相同然后逐元素相加\begin{bmatrix} 1 2 \\ 3 4 \end{bmatrix} \begin{bmatrix} 5 6 \\ 7 8 \end{bmatrix} \begin{bmatrix} 6 8 \\ 10 12 \end{bmatrix}标量乘法把矩阵的每个元素都乘以该标量3 \times \begin{bmatrix} 1 2 \\ 3 4 \end{bmatrix} \begin{bmatrix} 3 6 \\ 9 12 \end{bmatrix}这两种运算都是**逐元素element-wise**的不涉及行列之间的交互。它们虽然简单却是偏置加法$\mathbf{b}$、正则化缩放、学习率缩放等深度学习高频操作的基础。在 01. matrix properties.md 中介绍的转置、迹、秩等属性都是针对单个矩阵定义的而加法与标量乘法则让矩阵之间、矩阵与标量之间开始互动是通向矩阵乘法的第一步。三、矩阵-向量乘法每个神经网络层都在做的事对一个矩阵能做的最简单、也最重要的事情就是把它乘上一个向量。矩阵-向量乘法 $A\mathbf{x}$ 的几何含义是用 $\mathbf{x}$ 的各分量作为权重对 $A$ 的各列做加权求和。\begin{bmatrix} 1 2 \\ 3 4 \end{bmatrix} \begin{bmatrix} 5 \\ 6 \end{bmatrix} 5 \begin{bmatrix} 1 \\ 3 \end{bmatrix} 6 \begin{bmatrix} 2 \\ 4 \end{bmatrix} \begin{bmatrix} 17 \\ 39 \end{bmatrix}这种列的加权组合视角非常重要它解释了矩阵各列为什么直接决定了变换的行为——04. linear transformations.md 中的插图正是矩阵的列展示了基向量落在哪里。在机器学习中这是绝对核心的操作$$ \text{神经网络的每一层} A\mathbf{x} \mathbf{b} $$即权重矩阵乘以输入向量再加上偏置。从线性回归、逻辑回归到 Transformer 的注意力投影$Q XW_Q$、$K XW_K$、$V XW_V$全部可以归结为这种形式。当 $\mathbf{x}$ 变为一批样本组成的矩阵 $X$ 时$A\mathbf{x} \mathbf{b}$ 自然推广为矩阵-矩阵乘法 $XA^T \mathbf{b}$——这就是为什么批量推理batching如此高效。四、矩阵乘法定义、列加权视角与运算规则4.1 定义给定 $A$$m \times n$与 $B$$n \times p$乘积 $C AB$ 是 $m \times p$ 矩阵其中每个元素都是一个点积$$C_{ij} \sum_{k1}^{n} A_{ik} B_{kj}$$关键约束内维度必须匹配$A$ 的列数 $n$ $B$ 的行数 $n$结果的维度取外维度$m \times p$。如果维度不匹配乘法根本无法进行——这也是为什么神经网络的权重矩阵形状必须与特征维度严格对齐。4.2 两种等价视角除了每个元素是行与列的点积之外还有另一种更深刻的看法结果矩阵的每一列都是 $A$ 各列的加权和权重来自 $B$ 的对应列。例如若 $B$ 的某一列是 $[2, 3]^T$则结果中对应的列等于 $2 \times (\text{A 的第 1 列}) 3 \times (\text{A 的第 2 列})$。这个视角与第三节的矩阵-向量乘法一脉相承也直接通向 SVD 中列空间由 $U$ 张成的理解。4.3 一个常用特例矩阵乘以其转置用矩阵乘以其转置总是得到方阵$AA^T$ 是 $m \times m$$A^TA$ 是 $n \times n$\begin{bmatrix} 1 2 3 \\ 4 5 6 \end{bmatrix} \begin{bmatrix} 1 4 \\ 2 5 \\ 3 6 \end{bmatrix} \begin{bmatrix} 14 32 \\ 32 77 \end{bmatrix}注意结果是对称的$14/77$ 主对角线上$32$ 对称出现。这在统计学中极为重要——协方差矩阵正是 $X^TX$ 的缩放版本参见 04. statistics/01. fundamentals.mdPCA 的核心步骤之一就是计算协方差矩阵详见 05. decompositions.md。4.4 运算规则矩阵乘法有一套严格的代数规则不可交换$AB \neq BA$一般情况下。顺序至关重要——04. linear transformations.md 用游戏引擎的例子说明先旋转再平移与先平移再旋转是两个完全不同的结果。可结合$(AB)C A(BC)$。分组方式不影响结果这为优化计算顺序如先算 $AB$ 还是先算 $BC$留出了空间。可分配$A(B C) AB AC$。单位元$AI IA A$其中 $I$ 是单位矩阵见 02. matrix types.md。五、Hadamard 积元素级乘法与门控机制Hadamard 积元素级乘积要求两个矩阵同尺寸逐条目相乘记作 $A \odot B$\begin{bmatrix} 1 2 \\ 3 4 \end{bmatrix} \odot \begin{bmatrix} 5 6 \\ 7 8 \end{bmatrix} \begin{bmatrix} 5 12 \\ 21 32 \end{bmatrix}与标准矩阵乘法不同Hadamard 积可交换$A \odot B B \odot A$且要求两矩阵维度完全相同。它在深度学习中最典型的应用是门控gating用一个取值在 0 到 1 之间的掩码逐元素相乘控制每个条目放行多少信息。经典案例包括LSTM 的遗忘门/输入门/输出门$\mathbf{f}t \odot \mathbf{C}{t-1}$见 06. machine learning/03. deep learning.mdGated Linear UnitsGLU及其在现代 Transformer 前馈网络中的变体Dropout 的推理期缩放与注意力掩码操作。在向量层面逐元素乘法就是第 1 章 04. products.md 中 Hadamard 积的推广二者概念完全一致。六、外积秩 1 矩阵与 SVD 的基础两个向量的外积$\mathbf{u}\mathbf{v}^T$ 产生一个矩阵其每个条目是一个来自 $\mathbf{u}$ 的元素与一个来自 $\mathbf{v}$ 的元素的乘积\begin{bmatrix} 1 \\ 2 \\ 3 \end{bmatrix} \begin{bmatrix} 4 5 \end{bmatrix} \begin{bmatrix} 4 5 \\ 8 10 \\ 12 15 \end{bmatrix}外积的结果总是秩 1 的因为每一行都是 $\mathbf{v}^T$ 的缩放版本这里第二行是第一行的 2 倍第三行是第一行的 3 倍。这与 01. matrix properties.md 中秩等于线性无关行/列的个数的定义直接呼应。更深刻的是任何矩阵都可以写成一系列秩 1 外积之和。这正是 SVD 的核心思想——05. decompositions.md 中指出SVD 将任意矩阵分解为 $A U\Sigma V^T$等价于 $\sum_i \sigma_i \mathbf{u}_i \mathbf{v}_i^T$。低秩近似图像压缩、PCA 降维之所以可行就是因为我们只需要保留前 $k$ 个最大的奇异值对应的外积项。外积在机器学习中还有直接用途训练词嵌入时embedding_lookup后常用外积构造共现统计在注意力机制中$QK^T$ 本质上也是一系列外积的批量计算。七、计算复杂度为什么 $O(n^3)$ 如此昂贵矩阵乘法在计算上是昂贵的。两个 $n \times n$ 矩阵相乘需要 $O(n^3)$ 次运算。对于 $1000 \times 1000$ 的矩阵这意味着十亿次乘法。这个复杂度决定了深度学习的工程现实为什么需要 GPU / TPU / 专用硬件因为矩阵乘法天然高度并行——每个输出元素的计算彼此独立见 16. SIMD and GPU programming为什么会出现 FlashAttention 等 IO 优化算法因为瓶颈往往不在浮点运算而在数据搬运为什么量化、混合精度训练有效因为降低每个乘法单元的位宽能成倍提升吞吐见 17. AI inference/01. quantisation.md。从源码结构看本仓库 mcp/src/index.ts 的read_section工具把整篇文档作为知识库文本返回给 AI Agent正是因为这类理论内容如复杂度分析是面试与工程决策的高频检索对象。八、稀疏矩阵与 CSR 压缩存储当矩阵稀疏绝大多数元素为零时朴素乘法会把大量时间浪费在乘以零上。以社交网络为例一个百万用户的网络可以表示为 $10^6 \times 10^6$ 的矩阵但每个用户只连接少数人几乎全部条目为零02. matrix types.md 用邻接矩阵直观展示了这一点。Compressed Sparse RowCSR格式只存储非零元素及其位置由三个数组组成数组内容示例见下Values值按行顺序排列的非零元素[5, 2, 3, -1]Column indices列索引每个值所属的列号[0, 3, 2, 3]Row offsets行偏移每行在 values 数组中的起始位置[0, 2, 3, 4]例如矩阵A \begin{bmatrix} 5 0 0 2 \\ 0 0 3 0 \\ 0 0 0 -1 \end{bmatrix}存储为values [5, 2, 3, -1]、columns [0, 3, 2, 3]、row offsets [0, 2, 3, 4]。解释第 0 行从values[0]开始有 2 个非零元列 0 的 5、列 3 的 2第 1 行从values[2]开始有 1 个非零元列 2 的 3第 2 行从values[3]开始有 1 个非零元列 3 的 -1数组末尾的4标记整个 values 的长度。这样跳过了所有零稀疏矩阵乘法如邻接矩阵与特征矩阵的乘积会大幅提速。在 12. graph neural networks/03. graph neural networks.md 的图卷积中稀疏邻接矩阵的存储与运算正是依赖这类格式17. AI inference/02. efficient architectures.md 中讨论的稀疏注意力也利用了同样的思想。九、解线性方程组从替换法到三角分解矩阵运算的一个核心应用是求解线性方程组。系统 $A\mathbf{x} \mathbf{b}$ 问的是哪个向量 $\mathbf{x}$ 经过 $A$ 变换后恰好得到 $\mathbf{b}$9.1 直觉案例买水果假设苹果每个 $x_1$ 美元、香蕉每个 $x_2$ 美元。已知 2 个苹果和 1 根香蕉花费 $51 个苹果和 3 根香蕉花费 $10。写成矩阵形式\begin{bmatrix} 2 1 \\ 1 3 \end{bmatrix} \begin{bmatrix} x_1 \\ x_2 \end{bmatrix} \begin{bmatrix} 5 \\ 10 \end{bmatrix}逐行展开每行与 $[x_1, x_2]^T$ 做点积得到两个方程$$2x_1 1x_2 5 \qquad \text{(row 1)} \qquad \qquad x_1 3x_2 10 \qquad \text{(row 2)}$$由第 1 行得 $x_2 5 - 2x_1$代入第 2 行$x_1 3(5 - 2x_1) 10$解得 $x_1 1$再得 $x_2 3$。即苹果 $1、香蕉 $3。验证无误\begin{bmatrix} 2 1 \\ 1 3 \end{bmatrix} \begin{bmatrix} 1 \\ 3 \end{bmatrix} \begin{bmatrix} 2 3 \\ 1 9 \end{bmatrix} \begin{bmatrix} 5 \\ 10 \end{bmatrix}9.2 逆矩阵与伪逆如果 $A$ 有逆解就是 $\mathbf{x} A^{-1}\mathbf{b}$。但直接计算逆矩阵既昂贵又数值不稳定实践中应使用分解详见 05. decompositions.md。并非所有矩阵都是方阵也不是所有方阵都可逆。伪逆pseudo-inverse$A^$ 把逆推广到任意矩阵它总是存在且提供尽可能好的逆$$A^ (A^TA)^{-1}A^T$$伪逆与最小二乘解直接相关当方程组无精确解方程多于未知数时$\mathbf{x} A^\mathbf{b}$ 给出最小二乘意义下的最优近似解。而 05. decompositions.md 给出了更稳健的 SVD 版本$A^ V\Sigma^U^T$其中 $\Sigma^$ 只取非零奇异值的倒数。9.3 三角系统的前向/回代当 $A$ 是下三角矩阵时解 $L\mathbf{x} \mathbf{b}$ 用前向替换forward substitution先解出 $x_1$再代入求 $x_2$依此类推。当 $A$ 是上三角矩阵时解 $U\mathbf{x} \mathbf{b}$ 用回代back substitution先从最后一个变量解起再向上推导。这正是分解如此有用的原因把矩阵分解成三角因子LU、Cholesky 等就把一个难题变成了两个易题——先前向替换、再回代。用 05. decompositions.md 的话说一次分解多次复用同一个 $L$、$U$ 可以用于上千个不同的 $\mathbf{b}$如仿真中的多右端项场景无需重新分解。这也是为什么 Cholesky 比 LU 快约 2 倍且数值稳定——对称正定矩阵如协方差矩阵总能被分解为 $A LL^T$。十、编程实战用 JAX 亲手验证矩阵运算本文档附带的 Coding Tasks 使用 JAX 的jax.numpy接口。本仓库的在线文档通过 javascripts/pyodide-runner.js 提供了浏览器内直接运行这些代码的能力该脚本从 CDN 加载 PyodidePython 运行时并内置了一个基于 NumPy 的jax/jax.numpy兼容层见 javascripts/pyodide-runner.js因此import jax.numpy as jnp在浏览器中也能直接执行。下面两段代码是原文档的完整实战练习附带逐步说明。任务 1矩阵乘法、维度验证与非交换性import jax.numpy as jnp A jnp.array([[1.0, 2.0], [3.0, 4.0]]) B jnp.array([[5.0, 6.0], [7.0, 8.0]]) print(fA B:\n{A B}) print(fB A:\n{B A}) print(fEqual: {jnp.allclose(A B, B A)})要点A B与B A是两个不同的结果Equal: False直观验证了矩阵乘法不可交换若换成非方阵如 $2 \times 3$ 乘 $2 \times 3$内维度不匹配会直接抛出形状错误shape mismatch对应 4.1 节的内维度匹配规则你还可以验证结合律(A B) C A (B C)与分配律A (B C) A B A C。任务 2解线性方程组并验证import jax.numpy as jnp A jnp.array([[2.0, 1.0], [5.0, 3.0]]) b jnp.array([4.0, 7.0]) x jnp.linalg.solve(A, b) print(fSolution x: {x}) print(fA x: {A x})要点jnp.linalg.solve底层使用数值稳定的分解求解而非直接求逆呼应 9.2 节不要直接算逆矩阵;验证方式是把解代回A x应当恰好等于b此处应输出[4., 7.];把b改为[5.0, 10.0]重新求解并观察解的移动——这就是 9.1 节改变右端项、解随之平移的实验版可进一步尝试奇异矩阵如第 2 行是第 1 行的倍数jnp.linalg.solve会报错或产生异常结果对应 01. matrix properties.md 中行列式为零、不可逆的讨论用jnp.linalg.pinv(A) b对比伪逆解尤其当 $A$ 不是方阵时二者关系正是 9.2 节的内容。更完整的验证练习还可以组合使用 05. decompositions.md 的代码块用jnp.linalg.svd(A)重建低秩近似用jnp.linalg.eigh验证对称矩阵的特征向量正交性——它们与本文的矩阵乘法、外积、秩的概念环环相扣。十一、总结运算原语如何贯穿整个知识体系运算一句话本质在 ML 中的直接应用矩阵加法逐元素相加需同维度偏置加法、残差连接标量乘法每个元素乘标量学习率缩放、正则化矩阵-向量积 $A\mathbf{x}$用 $\mathbf{x}$ 加权 A 的列单样本前向传播 $A\mathbf{x} \mathbf{b}$矩阵乘法 $AB$行点积列 / 列的加权和批量前向传播、注意力投影、反向传播Hadamard 积 $\odot$同尺寸逐元素乘可交换LSTM 门控、注意力掩码、GLU外积 $\mathbf{u}\mathbf{v}^T$生成秩 1 矩阵SVD 低秩近似、PCACSR 稀疏存储只存非零值与位置图神经网络邻接矩阵、稀疏注意力$A\mathbf{x}\mathbf{b}$ 求解用分解 前向/回代最小二乘、逆矩阵、仿真多右端项矩阵运算是从数学到机器学习这条主线上的枢纽它向上承接 01. matrix properties.md 的属性体系秩、逆、对称性向下为 04. linear transformations.md 的几何变换与 05. decompositions.md 的 LU/Cholesky/SVD/PCA 提供计算地基。无论是理解梯度反向传播中的雅可比乘积还是优化大规模 GPU 上的 GEMM 内核本文的每一类运算都是绕不开的基本功。建议读者在 03. operations.md 的代码基础上结合 Pyodide 浏览器运行环境逐行实验把每一类运算的手感建立起来。【免费下载链接】maths-cs-ai-compendiumBecome a cracked AI/ML researcher/engineer with this unconventional textbook covering maths, computing, and ML with intuition.项目地址: https://gitcode.com/GitHub_Trending/mat/maths-cs-ai-compendium创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考