看得见的大模型

大模型用到的
数学基础

大学学的线代概率微积分,现在忘得差不多了?这一页把符号和公式都捡回来。

公式用离线 KaTeX。另有水墨本

∇∫∑
00

从这里开始

大学里的符号忘得差不多了也没关系。按这条线走:认识符号,理解向量,掌握概率,学会求导。

符号速查认字,到A1 向量建立坐标直觉,再看P1 概率——模型说的每一句话都是分布——最后用C1 梯度理解「猜错了就改一点」。

每个大类只留一个可动手的演示,其余是静图。先感受,再看公式。公式下面都标了对应模型页的哪一章。

00

数学符号速查表

数学符号就像外语,认识了就不吓人。这里列出大模型里最常用的符号,包括怎么读、什么意思、在哪儿用。

希腊字母(最常用)

符号 读音 用途 常见场景
$\alpha$阿尔法学习率、权重系数Adam 优化器里的学习率
$\beta$贝塔动量系数、超参数Adam 的 $\beta_1, \beta_2$
$\gamma$伽马折扣因子强化学习的奖励折扣
$\delta$德尔塔误差、变化量反向传播的误差项 $\delta$
$\epsilon$艾普西隆很小的数防止除零:$x/(y+\epsilon)$
$\theta$西塔参数向量模型所有参数 $\theta = \{W, b\}$
$\lambda$兰姆达特征值、正则化系数L2 正则:$\lambda\lVert W\rVert^2$
$\mu$均值高斯分布的均值 $\mu$
$\sigma$西格玛标准差、激活函数高斯分布的 $\sigma$,Sigmoid $\sigma(x)$
$\Sigma$大写西格玛求和、协方差矩阵$\sum_{i=1}^{n} x_i$
$\phi$特征函数特征映射 $\phi(x)$
$\omega$欧米伽频率、权重傅里叶变换的角频率

运算符号

符号 读音 用途 常见场景
$\nabla$纳布拉(梯度)梯度算子$\nabla f$ 是 $f$ 的梯度向量
$\partial$偏导数偏导数符号$\frac{\partial f}{\partial x}$ 对 $x$ 求偏导
$\int$积分积分符号$\int_a^b f(x)dx$ 从 $a$ 到 $b$ 积分
$\sum$求和累加$\sum_{i=1}^{n} x_i = x_1+x_2+\cdots+x_n$
$\prod$连乘累乘$\prod_{i=1}^{n} x_i = x_1 \cdot x_2 \cdot \cdots \cdot x_n$
$\propto$正比于正比关系$y \propto x$ 表示 $y = cx$ ($c$ 是常数)
$\approx$约等于近似相等$\pi \approx 3.14$
$\equiv$恒等于定义相等$(a+b)^2 \equiv a^2+2ab+b^2$

集合与逻辑

符号 读音 用途 常见场景
$\in$属于元素关系$x \in \mathbb{R}$ 表示 $x$ 是实数
$\mathbb{R}$实数集所有实数$\mathbb{R}^n$ 是 $n$ 维实向量空间
$\mathbb{R}^{m\times n}$实矩阵$m$ 行 $n$ 列矩阵权重矩阵 $W \in \mathbb{R}^{d\times k}$
$\forall$对所有全称量词$\forall x, f(x) > 0$ 表示任意 $x$ 都满足
$\exists$存在存在量词$\exists x, f(x)=0$ 表示至少有一个 $x$ 满足
$\mid$给定、条件条件概率$P(A\mid B)$ 表示 $B$ 发生条件下 $A$ 的概率
$\sim$服从分布概率分布$X \sim \mathcal{N}(0,1)$ 表示 $X$ 服从标准正态分布

矩阵运算

符号 读音 用途 常见场景
$A^{\top}$A 转置矩阵转置行变列,$(A^{\top})_{ij} = A_{ji}$
$A^{-1}$A 逆矩阵的逆$AA^{-1} = I$
$\lVert \mathbf{v} \rVert$v 的范数向量长度$\lVert \mathbf{v} \rVert_2 = \sqrt{v_1^2+\cdots+v_n^2}$
$\langle \mathbf{u}, \mathbf{v} \rangle$u v 内积向量内积$\langle \mathbf{u}, \mathbf{v} \rangle = \sum_i u_i v_i$
$\odot$哈达玛积逐元素乘法$(A \odot B)_{ij} = A_{ij} \cdot B_{ij}$
$\otimes$张量积/克罗内克积张量积LoRA 分解用到
$\text{tr}(A)$A 的迹对角线元素和$\text{tr}(A) = \sum_i A_{ii}$
$\det(A)$ 或 $|A|$A 的行列式行列式可逆当且仅当 $\det(A) \ne 0$

💡 记忆技巧:不用死记所有符号。看到陌生符号时,回来查这张表。多看几次自然就记住了。重点是理解它们代表什么操作,而不是死背名字。

A1

向量与矩阵:神经网络的砖瓦

神经网络里的一切都是向量和矩阵。一句话是向量,一层参数是矩阵,一批数据是三维张量。先把符号和基本运算理清楚。

A1.1 向量

向量是一列数。写成列向量 $\mathbf{v} = \begin{bmatrix}v_1\\v_2\\\vdots\\v_n\end{bmatrix}$,也可以写成行向量 $\mathbf{v}^{\top} = [v_1, v_2, \dots, v_n]$。转置 $(\cdot)^{\top}$ 把行变列、列变行。

符号名称定义
$\mathbf{v}\in\mathbb{R}^n$n 维向量实数向量空间
$\lVert\mathbf{v}\rVert_2$L2 范数$\sqrt{v_1^2+v_2^2+\cdots+v_n^2}$
$\lVert\mathbf{v}\rVert_1$L1 范数$|v_1|+|v_2|+\cdots+|v_n|$
$\langle\mathbf{u},\mathbf{v}\rangle$内积$\mathbf{u}^{\top}\mathbf{v}=\sum_i u_i v_i$
$\lVert\mathbf{v}\rVert_p$Lp 范数$\big(\sum_i |v_i|^p\big)^{1/p}$
$\lVert\mathbf{v}\rVert_\infty$无穷范数$\max_i |v_i|$
柯西-施瓦茨不等式
$$|\langle\mathbf{u},\mathbf{v}\rangle| \le \lVert\mathbf{u}\rVert_2\,\lVert\mathbf{v}\rVert_2$$

等号成立当且仅当两个向量共线。这个不等式在推导注意力的 scaled dot-product 时会用到。

对应模型页:第 04 章 注意力 · 第 03 章 词向量

A1.2 矩阵

矩阵是一张二维数表。$A\in\mathbb{R}^{m\times n}$ 表示 $m$ 行 $n$ 列的实矩阵。神经网络的权重 $W$ 就是矩阵。

符号名称说明
$A_{ij}$元素第 $i$ 行第 $j$ 列的元素
$A^{\top}$转置$(A^{\top})_{ij}=A_{ji}$
$\text{tr}(A)$$\sum_i A_{ii}$,对角线元素之和
$\det(A)$行列式方阵的行列式,记作 $|A|$
$A^{-1}$逆矩阵满足 $AA^{-1}=A^{-1}A=I$
$\text{rank}(A)$线性无关的行(列)数
重要性质
$$(AB)^{\top}=B^{\top}A^{\top},\qquad (AB)^{-1}=B^{-1}A^{-1}$$ $$\text{tr}(AB)=\text{tr}(BA),\qquad \text{tr}(ABC)=\text{tr}(CAB)=\text{tr}(BCA)$$

迹的循环性质在推导梯度时经常用到。$(A^{\top})^{\top}=A$,$(A^{-1})^{-1}=A$。

A2

矩阵运算:神经网络的流水线

前向传播就是一连串矩阵乘法。反向传播就是把这些乘法倒过来求导。

A2.1 矩阵乘法

$C = AB$,要求 $A$ 的列数等于 $B$ 的行数。$A\in\mathbb{R}^{m\times p}$,$B\in\mathbb{R}^{p\times n}$,则 $C\in\mathbb{R}^{m\times n}$。

矩阵乘法定义
$$C_{ij}=\sum_{k=1}^{p} A_{ik}B_{kj}$$

第 $i$ 行第 $j$ 列的元素,是 $A$ 的第 $i$ 行和 $B$ 的第 $j$ 列做内积。复杂度 $O(mnp)$。

对应模型页:第 02 章 神经网络 · 第 04 章 注意力

结合律

$(AB)C = A(BC)$。矩阵乘法满足结合律但不满足交换律:$AB \ne BA$。

分配律

$A(B+C)=AB+AC$,$(A+B)C=AC+BC$。

单位矩阵

$I$ 是对角线全 1 其余全 0 的方阵,$AI=IA=A$。

A2.2 Hadamard 积(逐元素乘法)

记作 $A \odot B$,要求两个矩阵形状完全相同,对应位置相乘。激活函数就是逐元素操作。

Hadamard 积
$$(A\odot B)_{ij}=A_{ij}\cdot B_{ij}$$

例如 ReLU 就是 $\text{ReLU}(x)=\max(0,x)$,逐元素作用。不要和矩阵乘法混淆。

A2.3 Kronecker 积(张量积)

$A\otimes B$ 把 $A$ 的每个元素都替换成 $B$ 的一个拷贝再乘上那个元素。LoRA 用到。

Kronecker 积
$$A\otimes B = \begin{bmatrix} A_{11}B & A_{12}B & \cdots\\ A_{21}B & A_{22}B & \cdots\\ \vdots & \vdots & \ddots \end{bmatrix}$$

如果 $A$ 是 $m\times n$,$B$ 是 $p\times q$,则 $A\otimes B$ 是 $mp\times nq$。

对应模型页:第 08 章 LoRA

A3

特征值分解:理解方阵的本质

方阵 $A$ 可以理解成一个线性变换。有些方向被 $A$ 拉伸或压缩,但方向不变,那就是特征向量。

特征值与特征向量
$$A\mathbf{v}=\lambda\mathbf{v}$$

$\mathbf{v}$ 是特征向量,$\lambda$ 是对应的特征值。$\mathbf{v}\ne\mathbf{0}$。

求解:$A\mathbf{v}=\lambda\mathbf{v}$ 等价于 $(A-\lambda I)\mathbf{v}=\mathbf{0}$,要有非零解就要求 $\det(A-\lambda I)=0$。这是特征多项式,解出所有 $\lambda$,再反代求 $\mathbf{v}$。

特征值分解(EVD)
$$A=Q\Lambda Q^{-1}$$

$Q$ 的列是特征向量,$\Lambda$ 是对角矩阵装着特征值。前提:$A$ 有 $n$ 个线性无关的特征向量。

低秩方向的直觉,见模型页 第 08 章 LoRA

对称矩阵的好处 如果 $A$ 是实对称矩阵($A=A^{\top}$),那么: (1) 所有特征值都是实数; (2) 不同特征值对应的特征向量正交; (3) 一定可以被正交对角化:$A=Q\Lambda Q^{\top}$,其中 $Q$ 是正交矩阵($Q^{\top}Q=I$)。 协方差矩阵就是对称的,所以 PCA 能用正交分解。
A4

SVD 奇异值分解:任意矩阵的万能分解

特征值分解只能用于方阵。SVD 能分解任意矩阵,而且比特征值分解稳定。LoRA、PCA、推荐系统都用它。

奇异值分解
$$A = U\Sigma V^{\top}$$

$A\in\mathbb{R}^{m\times n}$,$U\in\mathbb{R}^{m\times m}$ 和 $V\in\mathbb{R}^{n\times n}$ 都是正交矩阵,$\Sigma\in\mathbb{R}^{m\times n}$ 是对角矩阵(非方阵时对角线之外全 0)。

奇异值 $\sigma_1 \ge \sigma_2 \ge \cdots \ge \sigma_r > 0$ 放在 $\Sigma$ 的对角线上,$r=\text{rank}(A)$。

SVD 怎么算出来

关键:$A^{\top}A$ 和 $AA^{\top}$ 都是对称半正定矩阵,可以正交对角化。

$$A^{\top}A = V\Sigma^{\top}\Sigma V^{\top}=V\text{diag}(\sigma_1^2,\dots,\sigma_n^2)V^{\top}$$
$V$ 就是 $A^{\top}A$ 的特征向量

对 $A^{\top}A$ 做特征值分解,得到特征向量矩阵 $V$ 和特征值 $\sigma_i^2$。

$U$ 通过 $AV=U\Sigma$ 反推

已知 $V$ 和 $\Sigma$,令 $U$ 的第 $i$ 列 $\mathbf{u}_i = \frac{1}{\sigma_i}A\mathbf{v}_i$,这样构造出来的 $U$ 是正交的。

A4.1 截断 SVD 与低秩近似

只保留前 $k$ 个最大的奇异值,丢掉后面的小奇异值,得到低秩近似 $A_k = U_k \Sigma_k V_k^{\top}$。这是所有秩为 $k$ 的矩阵里最接近 $A$ 的那个(Frobenius 范数意义下)。

LoRA 的思路
$$\Delta W \approx BA,\qquad B\in\mathbb{R}^{d\times r},\ A\in\mathbb{R}^{r\times d},\ r\ll d$$

原权重 $W\in\mathbb{R}^{d\times d}$ 冻结,只训练两个瘦矩阵 $B$ 和 $A$。秩 $r$ 越小,参数越少,表达能力越弱。SVD 告诉我们低秩近似是最优的,但 LoRA 不显式做 SVD,而是直接随机初始化 $A$ 和 $B$ 让梯度下降去学。

对应模型页:第 08 章 微调与 LoRA

模型说的每一句话,都是一个分布。

P1

概率基础:模型的不确定性

语言模型不是输出一个确定的词,而是输出一个概率分布。理解概率是理解生成的前提。

P1.1 基本定义

符号名称定义
$P(A)$概率事件 $A$ 发生的可能性,$0\le P(A)\le 1$
$P(A\mid B)$条件概率$B$ 发生的条件下 $A$ 发生的概率
$P(A,B)$联合概率$A$ 和 $B$ 同时发生的概率
$P(A)+P(B)$概率和互斥事件:$P(A\cup B)=P(A)+P(B)$
条件概率公式
$$P(A\mid B)=\frac{P(A,B)}{P(B)},\qquad P(B)>0$$

$P(A,B)$ 是 $A$ 和 $B$ 同时发生的概率。可以改写成 $P(A,B)=P(A\mid B)P(B)=P(B\mid A)P(A)$。

贝叶斯定理
$$P(A\mid B)=\frac{P(B\mid A)P(A)}{P(B)}$$

从结果反推原因。$P(A)$ 叫先验,$P(A\mid B)$ 叫后验,$P(B\mid A)$ 叫似然。语言模型本质上就是在建模 $P(\text{下一个词}\mid\text{前文})$。

对应模型页:第 06 章 生成下一个字 · 第 07 章 预训练

P1.2 全概率公式

如果事件 $B_1, B_2, \dots, B_n$ 互不相交且覆盖整个样本空间,那么:

全概率公式
$$P(A)=\sum_{i=1}^{n} P(A\mid B_i)P(B_i)$$

把 $A$ 按不同情况拆开算,再加起来。在推导边缘概率时用到。

P1.3 独立性

如果 $A$ 和 $B$ 独立,那么 $P(A,B)=P(A)P(B)$,且 $P(A\mid B)=P(A)$。知道 $B$ 发生与否不影响 $A$ 的概率。

条件独立 $A$ 和 $B$ 在给定 $C$ 的条件下独立,记作 $A \perp B \mid C$,定义为 $P(A,B\mid C)=P(A\mid C)P(B\mid C)$。朴素贝叶斯假设特征之间条件独立,虽然不现实但很有效。
P2

期望与方差:分布的中心和离散程度

期望是分布的「重心」,方差是「散开的程度」。训练神经网络时要控制激活值的期望和方差,否则梯度爆炸或消失。

期望(均值)
$$\mathbb{E}[X]=\sum_x x\,P(X=x)\quad\text{(离散)},\qquad \mathbb{E}[X]=\int x\,p(x)\,dx\quad\text{(连续)}$$

期望是加权平均,权重是概率。记作 $\mu$ 或 $\mathbb{E}[X]$。

方差
$$\text{Var}(X)=\mathbb{E}\big[(X-\mu)^2\big]=\mathbb{E}[X^2]-\big(\mathbb{E}[X]\big)^2$$

方差衡量 $X$ 偏离期望的平方距离的平均。标准差 $\sigma=\sqrt{\text{Var}(X)}$。

对应模型页:第 09 章 强化学习(期望回报)

P2.1 期望的性质

线性性

$\mathbb{E}[aX+bY]=a\mathbb{E}[X]+b\mathbb{E}[Y]$,无论 $X$ 和 $Y$ 是否独立。

乘积期望

如果 $X$ 和 $Y$ 独立,$\mathbb{E}[XY]=\mathbb{E}[X]\mathbb{E}[Y]$。

方差的性质

$\text{Var}(aX)=a^2\text{Var}(X)$。如果 $X$ 和 $Y$ 独立,$\text{Var}(X+Y)=\text{Var}(X)+\text{Var}(Y)$。

P2.2 协方差与相关系数

协方差
$$\text{Cov}(X,Y)=\mathbb{E}\big[(X-\mathbb{E}[X])(Y-\mathbb{E}[Y])\big]=\mathbb{E}[XY]-\mathbb{E}[X]\mathbb{E}[Y]$$

协方差衡量两个变量线性相关的程度。正值表示同增同减,负值表示反向,零表示线性无关(但未必独立)。

相关系数
$$\rho(X,Y)=\frac{\text{Cov}(X,Y)}{\sigma_X\sigma_Y},\qquad -1\le\rho\le 1$$

标准化后的协方差,$|\rho|=1$ 表示完全线性相关,$\rho=0$ 表示线性无关。

P3

常见分布:大模型用到的几个关键分布

伯努利、高斯、Softmax、Categorical,这几个分布串起来就是一个分类模型。

P3.1 伯努利分布(Bernoulli)

抛硬币。$X\in\{0,1\}$,$P(X=1)=p$。

$$P(X=x)=p^x(1-p)^{1-x},\qquad \mathbb{E}[X]=p,\ \text{Var}(X)=p(1-p)$$

P3.2 类别分布(Categorical)

多分类。$X\in\{1,2,\dots,K\}$,每个类的概率是 $p_k$,$\sum_k p_k=1$。语言模型输出的就是类别分布。

Categorical / Multinoulli
$$P(X=k)=p_k,\qquad \mathbb{E}[X]=\sum_k k\,p_k$$

P3.3 高斯分布(正态分布)

最重要的连续分布。中心极限定理说大量独立随机变量的和趋向高斯分布。

一维高斯分布
$$p(x)=\frac{1}{\sqrt{2\pi\sigma^2}}\exp\!\left(-\frac{(x-\mu)^2}{2\sigma^2}\right)$$ $$\mathbb{E}[X]=\mu,\qquad \text{Var}(X)=\sigma^2$$

记作 $X\sim\mathcal{N}(\mu,\sigma^2)$。标准正态分布是 $\mu=0, \sigma=1$ 的特例。

多维高斯分布
$$p(\mathbf{x})=\frac{1}{(2\pi)^{d/2}|\Sigma|^{1/2}}\exp\!\left(-\tfrac{1}{2}(\mathbf{x}-\boldsymbol{\mu})^{\top}\Sigma^{-1}(\mathbf{x}-\boldsymbol{\mu})\right)$$

$\boldsymbol{\mu}\in\mathbb{R}^d$ 是均值向量,$\Sigma\in\mathbb{R}^{d\times d}$ 是协方差矩阵(对称半正定)。VAE 的编码器输出的就是高斯分布的参数 $(\boldsymbol{\mu}, \Sigma)$。

P3.4 Softmax 与交叉熵

把任意实数向量 $\mathbf{z}\in\mathbb{R}^K$ 变成概率分布(和为 1,每项非负)。

Softmax
$$\text{softmax}(\mathbf{z})_k=\frac{\exp(z_k)}{\sum_{j=1}^{K}\exp(z_j)}$$

分类网络最后一层输出 logits $\mathbf{z}$,过 softmax 得到概率 $\mathbf{p}$。温度参数 $T$ 可以调控分布尖锐程度:$\text{softmax}(\mathbf{z}/T)$。

对应模型页:第 04 章 注意力 · 第 06 章 采样

交叉熵损失
$$\mathcal{L}=-\sum_{k=1}^{K} y_k\log p_k=-\log p_{\text{true}}$$

真实标签是 one-hot 向量 $\mathbf{y}$,只有正确类那一项是 1。交叉熵退化成负对数似然。让正确类的概率尽可能高。

对应模型页:第 07 章 预训练

P4

最大似然估计:从数据反推参数

有一堆数据,假设它们服从某个分布,怎么估计分布的参数?最大似然估计说:让这些数据在你的分布下出现的概率最大。

似然函数
$$\mathcal{L}(\theta)=P(\mathcal{D}\mid\theta)=\prod_{i=1}^{n} p(x_i\mid\theta)$$

$\mathcal{D}=\{x_1,\dots,x_n\}$ 是观测数据,$\theta$ 是模型参数。假设样本独立同分布,联合概率是连乘。

对数似然
$$\ell(\theta)=\log\mathcal{L}(\theta)=\sum_{i=1}^{n}\log p(x_i\mid\theta)$$

乘法变加法,数值更稳定,优化更方便。最大化似然等价于最大化对数似然。

对应模型页:第 07 章 预训练 · 第 01 章 机器学习

最大似然估计(MLE)就是求 $\hat{\theta}=\arg\max_{\theta}\ell(\theta)$。对 $\theta$ 求导,令导数为零,解方程。

例子:估计高斯分布的均值和方差

数据 $\{x_1,\dots,x_n\}$ 来自 $\mathcal{N}(\mu,\sigma^2)$,对数似然是:

$$\ell(\mu,\sigma^2)=-\frac{n}{2}\log(2\pi\sigma^2)-\frac{1}{2\sigma^2}\sum_{i=1}^{n}(x_i-\mu)^2$$
对 μ 求导并令其为零
$$\frac{\partial\ell}{\partial\mu}=\frac{1}{\sigma^2}\sum_{i}(x_i-\mu)=0\quad\Rightarrow\quad \hat{\mu}=\frac{1}{n}\sum_{i}x_i$$

就是样本均值。

对 σ² 求导并令其为零
$$\frac{\partial\ell}{\partial\sigma^2}=-\frac{n}{2\sigma^2}+\frac{1}{2\sigma^4}\sum_{i}(x_i-\mu)^2=0 \quad\Rightarrow\quad \hat{\sigma}^2=\frac{1}{n}\sum_{i}(x_i-\hat{\mu})^2$$

样本方差(无偏估计是除以 $n-1$,这里是 MLE 所以除以 $n$)。

神经网络训练就是最大似然估计 分类任务的交叉熵损失,回归任务的均方误差,本质上都是负对数似然。最小化损失 = 最大化似然 = 让模型在训练数据上的概率最大。
P5

信息论:熵、KL 散度、互信息

信息论给了「不确定性」一个数学定义。熵越高,分布越平坦,越难预测。KL 散度衡量两个分布有多不一样。

熵(Entropy)
$$H(X)=-\sum_x P(x)\log P(x)=-\mathbb{E}[\log P(X)]$$

熵是「平均惊讶度」。均匀分布熵最大,确定性分布(某一项概率为 1)熵为 0。log 通常取底数 2(比特)或 $e$(奈特)。

交叉熵(Cross Entropy)
$$H(P,Q)=-\sum_x P(x)\log Q(x)=-\mathbb{E}_{x\sim P}[\log Q(x)]$$

用分布 $Q$ 去编码真实分布 $P$ 产生的数据,需要的平均编码长度。交叉熵 $\ge$ 熵,等号成立当且仅当 $P=Q$。

KL 散度(相对熵)
$$D_{\text{KL}}(P\parallel Q)=\sum_x P(x)\log\frac{P(x)}{Q(x)}=H(P,Q)-H(P)$$

衡量 $P$ 和 $Q$ 的差异。非负,$D_{\text{KL}}(P\parallel Q)\ge 0$,等号成立当且仅当 $P=Q$。不对称:$D_{\text{KL}}(P\parallel Q)\ne D_{\text{KL}}(Q\parallel P)$。

对应模型页:第 07 章 预训练 · 第 09 章 PPO / DPO

PPO 和 DPO 都用 KL 散度约束:优化后的策略 $\pi_\theta$ 不能离参考策略 $\pi_{\text{ref}}$ 太远,否则模型会忘记原本学到的语言能力。

互信息(Mutual Information)
$$I(X;Y)=D_{\text{KL}}\big(P(X,Y)\parallel P(X)P(Y)\big)=H(X)-H(X\mid Y)$$

$X$ 和 $Y$ 共享多少信息。如果独立,$I(X;Y)=0$。互信息对称:$I(X;Y)=I(Y;X)$。

猜错了,就朝下坡走一步。

C1

导数与梯度:神经网络的方向盘

神经网络训练就是求导。误差对每个参数求偏导,得到梯度,然后朝梯度反方向更新参数。

C1.1 导数

函数 $f(x)$ 在 $x_0$ 处的导数定义为:

$$f'(x_0)=\lim_{h\to 0}\frac{f(x_0+h)-f(x_0)}{h}$$

导数是切线斜率,是瞬时变化率。记作 $f'(x)$、$\frac{df}{dx}$ 或 $\frac{d}{dx}f(x)$。

C1.2 偏导数

多元函数 $f(x_1,x_2,\dots,x_n)$ 对某一个变量求导,其他变量当常数。

偏导数
$$\frac{\partial f}{\partial x_i}=\lim_{h\to 0}\frac{f(x_1,\dots,x_i+h,\dots,x_n)-f(x_1,\dots,x_n)}{h}$$

记作 $\frac{\partial f}{\partial x_i}$ 或 $f_{x_i}$。

C1.3 梯度

标量函数 $f:\mathbb{R}^n\to\mathbb{R}$ 的梯度是所有偏导数组成的向量。

梯度
$$\nabla f=\begin{bmatrix} \frac{\partial f}{\partial x_1}\\ \frac{\partial f}{\partial x_2}\\ \vdots\\ \frac{\partial f}{\partial x_n} \end{bmatrix}$$

梯度指向函数增长最快的方向。梯度下降就是朝 $-\nabla f$ 方向走:$\mathbf{x}\leftarrow \mathbf{x}-\eta\nabla f(\mathbf{x})$。

对应模型页:第 01 章 机器学习

为什么是梯度的负方向 泰勒展开:$f(\mathbf{x}+\Delta\mathbf{x})\approx f(\mathbf{x})+\nabla f^{\top}\Delta\mathbf{x}$。如果 $\Delta\mathbf{x}=-\eta\nabla f$,那么 $\nabla f^{\top}\Delta\mathbf{x}=-\eta\lVert\nabla f\rVert^2<0$,函数值下降。学习率 $\eta$ 控制步长。
C2

链式法则:反向传播的核心

神经网络是一层套一层的复合函数。链式法则说:复合函数的导数是每一层导数的连乘。反向传播就是链式法则的递归应用。

一元链式法则
$$\frac{d}{dx}f\big(g(x)\big)=f'\big(g(x)\big)\cdot g'(x)$$

令 $u=g(x)$,则 $\frac{df}{dx}=\frac{df}{du}\cdot\frac{du}{dx}$。

对应模型页:第 02 章 神经网络

多元链式法则
$$\frac{\partial f}{\partial x_i}=\sum_j \frac{\partial f}{\partial u_j}\cdot\frac{\partial u_j}{\partial x_i}$$

$f$ 依赖中间变量 $u_1,\dots,u_m$,每个 $u_j$ 又依赖 $x_i$。所有路径的贡献加起来。

C2.1 反向传播

神经网络:$\mathbf{x}\xrightarrow{W_1}\mathbf{h}_1\xrightarrow{\sigma}\mathbf{a}_1\xrightarrow{W_2}\mathbf{h}_2\xrightarrow{\sigma}\cdots\xrightarrow{}\mathcal{L}$。

前向:从输入算到损失。反向:从损失往回传梯度。

符号约定

$\mathbf{h}^{(l)}=W^{(l)}\mathbf{a}^{(l-1)}+\mathbf{b}^{(l)}$,$\mathbf{a}^{(l)}=\sigma(\mathbf{h}^{(l)})$,损失是 $\mathcal{L}(\mathbf{a}^{(L)}, \mathbf{y})$。

输出层梯度

先算最后一层对激活的梯度:

$$\boldsymbol{\delta}^{(L)}=\frac{\partial\mathcal{L}}{\partial\mathbf{h}^{(L)}} =\frac{\partial\mathcal{L}}{\partial\mathbf{a}^{(L)}}\odot\sigma'(\mathbf{h}^{(L)})$$

$\odot$ 是逐元素乘法。

往前传递

第 $l$ 层的梯度通过下一层传回来:

$$\boldsymbol{\delta}^{(l)}=\big((W^{(l+1)})^{\top}\boldsymbol{\delta}^{(l+1)}\big)\odot\sigma'(\mathbf{h}^{(l)})$$
对参数的梯度

有了 $\boldsymbol{\delta}^{(l)}$,权重和偏置的梯度是:

$$\frac{\partial\mathcal{L}}{\partial W^{(l)}}=\boldsymbol{\delta}^{(l)}(\mathbf{a}^{(l-1)})^{\top}, \qquad \frac{\partial\mathcal{L}}{\partial\mathbf{b}^{(l)}}=\boldsymbol{\delta}^{(l)}$$

计算复杂度:前向一次 $O(n)$,反向一次 $O(n)$,总共 $O(n)$。如果朴素地对每个参数单独求导,是 $O(n^2)$。反向传播快在复用中间结果。

C3

常用求导公式:背下来就快了

这些公式在推导注意力、LayerNorm、损失函数时反复出现。

C3.1 标量函数

函数导数备注
$x^n$$nx^{n-1}$幂函数
$e^x$$e^x$指数函数自己是自己的导数
$\log x$$\frac{1}{x}$自然对数
$\sin x$$\cos x$
$\cos x$$-\sin x$
$\frac{1}{x}$$-\frac{1}{x^2}$
$\sqrt{x}$$\frac{1}{2\sqrt{x}}$

C3.2 向量函数

$\mathbf{x}\in\mathbb{R}^n$,$A\in\mathbb{R}^{m\times n}$,$\mathbf{b}\in\mathbb{R}^m$。

函数 $f(\mathbf{x})$梯度 $\nabla f$说明
$\mathbf{a}^{\top}\mathbf{x}$$\mathbf{a}$线性函数
$\mathbf{x}^{\top}A\mathbf{x}$$(A+A^{\top})\mathbf{x}$二次型;若 $A$ 对称则是 $2A\mathbf{x}$
$\lVert\mathbf{x}\rVert_2^2$$2\mathbf{x}$$\mathbf{x}^{\top}\mathbf{x}$ 的导数
$\lVert A\mathbf{x}-\mathbf{b}\rVert_2^2$$2A^{\top}(A\mathbf{x}-\mathbf{b})$最小二乘损失

C3.3 矩阵对矩阵求导

$X\in\mathbb{R}^{m\times n}$,$f(X)$ 是标量。梯度 $\nabla_X f$ 是一个和 $X$ 同形状的矩阵,每个位置是 $\frac{\partial f}{\partial X_{ij}}$。

$f(X)$$\nabla_X f$说明
$\text{tr}(AX)$$A^{\top}$
$\text{tr}(AXB)$$A^{\top}B^{\top}$
$\text{tr}(X^{\top}AX)$$(A+A^{\top})X$若 $A$ 对称则 $2AX$
$\lVert X\rVert_F^2$$2X$Frobenius 范数平方

C3.4 激活函数导数

激活函数 $\sigma(x)$导数 $\sigma'(x)$备注
$\text{ReLU}(x)=\max(0,x)$$\begin{cases}1 & x>0\\0 & x\le 0\end{cases}$$x=0$ 处次梯度取 0 或 1
$\sigma(x)=\frac{1}{1+e^{-x}}$$\sigma(x)(1-\sigma(x))$Sigmoid
$\tanh(x)$$1-\tanh^2(x)$
$\text{GELU}(x)$$\Phi(x)+x\phi(x)$$\Phi$ 是标准正态 CDF,$\phi$ 是 PDF
$\text{Softmax}(\mathbf{z})_i$$p_i(\delta_{ij}-p_j)$雅可比矩阵;$\delta_{ij}$ 是 Kronecker delta
Softmax 导数推导
$$\frac{\partial p_i}{\partial z_j}=\begin{cases} p_i(1-p_i) & i=j\\ -p_i p_j & i\ne j \end{cases}$$

交叉熵 + Softmax 组合后梯度特别简洁:$\frac{\partial\mathcal{L}}{\partial z_i}=p_i-y_i$。

对应模型页:第 02 章 神经网络 · 第 06 章 采样

C4

雅可比矩阵与海森矩阵:二阶信息

雅可比是向量对向量求导,海森是标量对向量求二阶导。二阶优化器(牛顿法、L-BFGS)会用到海森矩阵,但深度学习里通常用不起(太大了)。

C4.1 雅可比矩阵

$\mathbf{f}:\mathbb{R}^n\to\mathbb{R}^m$ 是向量函数,$\mathbf{f}(\mathbf{x})=[f_1(\mathbf{x}),\dots,f_m(\mathbf{x})]^{\top}$。雅可比矩阵是所有偏导数组成的 $m\times n$ 矩阵。

雅可比矩阵
$$J=\frac{\partial\mathbf{f}}{\partial\mathbf{x}}=\begin{bmatrix} \frac{\partial f_1}{\partial x_1} & \cdots & \frac{\partial f_1}{\partial x_n}\\ \vdots & \ddots & \vdots\\ \frac{\partial f_m}{\partial x_1} & \cdots & \frac{\partial f_m}{\partial x_n} \end{bmatrix}$$

第 $i$ 行是 $f_i$ 的梯度。如果 $m=1$,雅可比退化成梯度(行向量)。

链式法则的矩阵形式:$\mathbf{z}=\mathbf{g}(\mathbf{f}(\mathbf{x}))$,则 $\frac{\partial\mathbf{z}}{\partial\mathbf{x}}=\frac{\partial\mathbf{z}}{\partial\mathbf{f}}\cdot\frac{\partial\mathbf{f}}{\partial\mathbf{x}}$。两个雅可比矩阵相乘。

C4.2 海森矩阵

$f:\mathbb{R}^n\to\mathbb{R}$ 是标量函数。海森矩阵是二阶偏导数组成的 $n\times n$ 对称矩阵。

海森矩阵
$$H=\nabla^2 f=\begin{bmatrix} \frac{\partial^2 f}{\partial x_1^2} & \frac{\partial^2 f}{\partial x_1\partial x_2} & \cdots\\ \frac{\partial^2 f}{\partial x_2\partial x_1} & \frac{\partial^2 f}{\partial x_2^2} & \cdots\\ \vdots & \vdots & \ddots \end{bmatrix}$$

$H_{ij}=\frac{\partial^2 f}{\partial x_i\partial x_j}$。若 $f$ 二阶连续可导,$H$ 是对称的(Schwarz 定理)。

海森矩阵刻画曲率。正定 → 局部极小点,负定 → 局部极大点,不定 → 鞍点。

泰勒二阶展开
$$f(\mathbf{x}+\Delta\mathbf{x})\approx f(\mathbf{x})+\nabla f^{\top}\Delta\mathbf{x} +\tfrac{1}{2}\Delta\mathbf{x}^{\top}H\,\Delta\mathbf{x}$$

牛顿法用这个二次近似直接跳到极值点:$\Delta\mathbf{x}=-H^{-1}\nabla f$。但深度学习里 $H$ 太大(参数几十亿),算不起也存不下。实践中用一阶方法(SGD、Adam)或拟牛顿法(L-BFGS)。

对应模型页:第 01 章 机器学习(为什么只用一阶)

为什么不用二阶优化 海森矩阵是 $n\times n$,$n$ 是参数量。GPT-3 有 1750 亿参数,海森矩阵是 $1.75\times 10^{11}\times 1.75\times 10^{11}$,存不下。求逆的复杂度是 $O(n^3)$,算不起。所以深度学习只用一阶梯度(Adam、SGD),或者用对角近似(AdaGrad)、低秩近似(K-FAC)。