文章目录
-
- 从符号到运算
- 一、分数:公式中出现频率最高的语法
-
- [1.1 基本写法](#1.1 基本写法)
- [1.2 嵌套分数](#1.2 嵌套分数)
- [1.3 行内分数太小怎么办](#1.3 行内分数太小怎么办)
- [1.4 AI 中的分数实战:梯度下降](#1.4 AI 中的分数实战:梯度下降)
- [1.5 分数常见错误对照表](#1.5 分数常见错误对照表)
- [二、求和符号:AI 公式中最常见的运算](#二、求和符号:AI 公式中最常见的运算)
-
- [2.1 基本写法](#2.1 基本写法)
- [2.2 多重求和](#2.2 多重求和)
- [2.3 求和的范围与条件](#2.3 求和的范围与条件)
- [2.4 求和常见错误](#2.4 求和常见错误)
- 三、连乘符号:从最大似然到交叉熵的桥梁
-
- [3.1 基本写法](#3.1 基本写法)
- [3.2 连乘 vs 求和:什么时候用哪个](#3.2 连乘 vs 求和:什么时候用哪个)
- [3.3 为什么实际代码中很少看到连乘](#3.3 为什么实际代码中很少看到连乘)
- 四、极限:从理论到实践的桥梁
- 五、积分:连续世界的求和
-
- [5.1 定积分](#5.1 定积分)
- [5.2 二重积分](#5.2 二重积分)
- [5.3 实战:高斯分布的归一化](#5.3 实战:高斯分布的归一化)
- [5.4 常见积分错误对照](#5.4 常见积分错误对照)
- 六、根号:从归一化到距离度量
-
- [6.1 平方根与 n 次方根](#6.1 平方根与 n 次方根)
- [6.2 AI 中的根号实战](#6.2 AI 中的根号实战)
- 七、自适应括号:让公式更专业
- 八、综合实战:从最大似然到交叉熵的完整推导
-
- [步骤 1:最大似然估计(连乘)](#步骤 1:最大似然估计(连乘))
- [步骤 2:取对数(连乘 → 求和)](#步骤 2:取对数(连乘 → 求和))
- [步骤 3:取负号和均值(求和 → 平均)](#步骤 3:取负号和均值(求和 → 平均))
- [步骤 4:多分类展开(单层求和 → 双层求和)](#步骤 4:多分类展开(单层求和 → 双层求和))
- [步骤 5:添加 L2 正则化(求和 + 范数)](#步骤 5:添加 L2 正则化(求和 + 范数))
- 语法使用统计
- 九、语法速查:本篇涉及的命令
- 小结
从符号到运算
上一篇我们学会了写希腊字母和上下标------那是公式的"字母"和"零件"。但只有零件还不够,你还需要把它们组装成数学表达式。
这篇进入数学运算的核心语法:分数、求和、连乘、极限、积分和根号。这些是表达 AI 算法推导过程的基础工具。最大似然估计的连乘、交叉熵的求和、高斯分布的指数和根号------全都需要这些语法。
但本文不只是语法手册。每个语法点都会回答三个问题:怎么写 、为什么这样写 、写错了会怎样。最后还有一个完整推导实战,把所有语法串起来用。
前置要求 :阅读本文前,建议先看完系列第一篇(行内/块级公式、希腊字母、上下标)。如果你已经熟悉
$和$$的区别,可以直接开始。
一、分数:公式中出现频率最高的语法
1.1 基本写法
markdown
$\frac{a}{b}$ $\frac{1}{N}$ $\frac{\partial L}{\partial W}$
渲染效果: a b \frac{a}{b} ba 1 N \frac{1}{N} N1 ∂ L ∂ W \frac{\partial L}{\partial W} ∂W∂L
语法是 \frac{分子}{分母},两个参数都用花括号包裹。
为什么用 \frac 而不是 a/b :a/b 在渲染时只是一条斜线,分子分母不会上下排列。在复杂公式中(比如 ∂ L ∂ W \frac{\partial L}{\partial W} ∂W∂L),斜线形式几乎无法阅读。\frac 是 LaTeX 的标准分数命令,所有主流编辑器都支持。
1.2 嵌套分数
分数可以无限嵌套,AI 论文中的推导步骤经常用到:
markdown
$$
\frac{1}{1 + \frac{1}{1 + \frac{1}{1+x}}}
$$
渲染效果:
1 1 + 1 1 + 1 1 + x \frac{1}{1 + \frac{1}{1 + \frac{1}{1+x}}} 1+1+1+x111
踩坑提醒 :嵌套超过两层时,内层分数会自动缩小,在移动端可能看不清。如果嵌套分数在你的编辑器中渲染太小,考虑用 \dfrac 替代内层 \frac,或者把公式拆成多步推导。
1.3 行内分数太小怎么办
行内公式中分数会自动缩小,在移动端几乎看不清。用 \dfrac 可以保持正常大小:
markdown
$\frac{a}{b}$ vs $\dfrac{a}{b}$
渲染效果: a b \frac{a}{b} ba vs a b \dfrac{a}{b} ba
| 命令 | 用途 | 使用场景 | 兼容性 |
|---|---|---|---|
\frac |
行内自动缩小 | 块级公式、行内简单分数 | ✅ 全部支持 |
\dfrac |
强制正常大小 | 行内公式中需要清晰展示分数 | ⚠️ 部分旧编辑器不支持 |
\tfrac |
强制缩小 | 块级公式中写紧凑的分数 | ⚠️ 部分旧编辑器不支持 |
编辑器兼容性实测:
| 编辑器 | \frac |
\dfrac |
\tfrac |
|---|---|---|---|
| CSDN | ✅ | ✅ | ✅ |
| Typora (≥1.5) | ✅ | ✅ | ✅ |
| Typora (<1.3) | ✅ | ❌ | ❌ |
| Notion | ✅ | ✅ | ❌ |
| GitHub README | ✅ | ✅ | ❌ |
| Jupyter Notebook | ✅ | ✅ | ✅ |
最佳实践 :如果不确定目标编辑器的兼容性,优先用
\frac。只在行内公式确实看不清时才换\dfrac,并在多种设备上预览确认。
1.4 AI 中的分数实战:梯度下降
梯度下降的参数更新规则,是行内分数最经典的用例:
markdown
$$
\theta \leftarrow \theta - \eta \frac{\partial L}{\partial \theta}
$$
θ ← θ − η ∂ L ∂ θ \theta \leftarrow \theta - \eta \frac{\partial L}{\partial \theta} θ←θ−η∂θ∂L
Python 代码对照:
python
# 对应的 PyTorch 代码
with torch.no_grad():
theta -= lr * theta.grad # θ ← θ - η * ∂L/∂θ
公式中的 ∂ L ∂ θ \frac{\partial L}{\partial \theta} ∂θ∂L 在代码里就是 theta.grad。理解公式和代码的对应关系,能帮你写出更准确的技术博客。
1.5 分数常见错误对照表
| 错误写法 | 渲染结果 | 问题 | 正确写法 |
|---|---|---|---|
1/1+e^{-x} |
1 / 1 + e − x 1/1+e^{-x} 1/1+e−x | 斜线分数无分组,运算优先级错 | \frac{1}{1+e^{-x}} |
\frac 1N |
1 N \frac 1N N1 | 单字符可以省略花括号,但不推荐 | \frac{1}{N} |
\frac{1}{N}/N |
1 N / N \frac{1}{N}/N N1/N | 混用 \frac 和斜线,语义不清 |
\frac{1}{N \cdot N} |
\frac{1}{N} 在行内 |
太小 | 行内自动缩小 | \dfrac{1}{N} |
写作建议 :写损失函数时, 1 N \frac{1}{N} N1 的 N N N 一定要在正文里说明是什么------是样本数、批次大小还是类别数。不要假设读者都知道。这个细节在论文 review 中也经常被指出。
二、求和符号:AI 公式中最常见的运算
2.1 基本写法
markdown
$\sum_{i=1}^{N} x_i$
渲染效果: ∑ i = 1 N x i \sum_{i=1}^{N} x_i ∑i=1Nxi
行内求和的上下标会挤在符号旁边,不太美观。块级公式中会自动放到上下方:
markdown
$$
\sum_{i=1}^{N} x_i
$$
渲染效果:
∑ i = 1 N x i \sum_{i=1}^{N} x_i i=1∑Nxi
行内 vs 块级的视觉差异:行内模式下求和符号较小,上下标在右侧;块级模式下符号更大,上下标在正上方和正下方。重要的求和公式建议用块级。
2.2 多重求和
AI 中经常出现双重求和,比如矩阵所有元素的加权求和:
markdown
$$
\sum_{i=1}^{N} \sum_{j=1}^{M} x_{ij} w_{ij}
$$
渲染效果:
∑ i = 1 N ∑ j = 1 M x i j w i j \sum_{i=1}^{N} \sum_{j=1}^{M} x_{ij} w_{ij} i=1∑Nj=1∑Mxijwij
Python 代码对照:
python
# 双重求和对应的 NumPy 实现
total = np.sum(X * W) # X 和 W 都是 N×M 矩阵
# 或者用显式循环
total = 0
for i in range(N):
for j in range(M):
total += X[i][j] * W[i][j]
2.3 求和的范围与条件
求和符号的下方可以写任意条件,不一定是 i=1:
markdown
$$
\sum_{i \in \mathcal{D}} x_i, \quad \sum_{k=0}^{K} \theta_k x^k, \quad \sum_{c=1}^{C} y_{ic} \log(\hat{y}_{ic})
$$
渲染效果:
∑ i ∈ D x i , ∑ k = 0 K θ k x k , ∑ c = 1 C y i c log ( y ^ i c ) \sum_{i \in \mathcal{D}} x_i, \quad \sum_{k=0}^{K} \theta_k x^k, \quad \sum_{c=1}^{C} y_{ic} \log(\hat{y}_{ic}) i∈D∑xi,k=0∑Kθkxk,c=1∑Cyiclog(y^ic)
| 写法 | 含义 | AI 实例 |
|---|---|---|
\sum_{i=1}^{N} |
从 1 到 N | 样本求和 |
\sum_{i \in \mathcal{D}} |
遍历集合中的元素 | 对数据集 D \mathcal{D} D 中的样本求和 |
\sum_{c=1}^{C} |
从 1 到 C | 多分类中遍历所有类别 |
\sum_{k=0}^{K} |
从 0 到 K | 多项式回归中遍历所有阶数 |
\sum_{(x,y) \in \mathcal{D}} |
遍历数据集中的样本对 | 训练集上的经验损失 |
2.4 求和常见错误
| 错误写法 | 问题 | 正确写法 |
|---|---|---|
\sum_{i=1}^N x_i |
单字符上标可以省略花括号,但不推荐 | \sum_{i=1}^{N} x_i |
\sum_i=1^N x_i |
i=1 没有用花括号包裹 |
\sum_{i=1}^{N} x_i |
$$\sum_{i=1}^{N}$$ x_i |
公式结束标记位置错误 | $$\sum_{i=1}^{N} x_i$$ |
实战举例 :交叉熵损失 L = − 1 N ∑ i = 1 N ∑ c = 1 C y i c log y ^ i c \mathcal{L} = -\frac{1}{N}\sum_{i=1}^{N} \sum_{c=1}^{C} y_{ic} \log \hat{y}_{ic} L=−N1∑i=1N∑c=1Cyiclogy^ic 中,外层求和遍历所有 N N N 个样本,内层求和遍历所有 C C C 个类别。两层求和的组合在多分类问题中是标准写法。对应的 PyTorch 代码就是
F.cross_entropy,它内部就是做的这个双重求和。
三、连乘符号:从最大似然到交叉熵的桥梁
3.1 基本写法
markdown
$$
L = \prod_{i=1}^{N} P(y_i | x_i; \theta)
$$
渲染效果:
L = ∏ i = 1 N P ( y i ∣ x i ; θ ) L = \prod_{i=1}^{N} P(y_i | x_i; \theta) L=i=1∏NP(yi∣xi;θ)
连乘和求和语法完全对称,只是把 \sum 换成 \prod。
3.2 连乘 vs 求和:什么时候用哪个
| 场景 | 用求和还是连乘 | 典型公式 |
|---|---|---|
| 计算总损失 | 求和 | L = ∑ i = 1 N ℓ i \mathcal{L} = \sum_{i=1}^{N} \ell_i L=∑i=1Nℓi |
| 计算联合概率 | 连乘 | L = ∏ i = 1 N P ( y i ∣ x i ) L = \prod_{i=1}^{N} P(y_i | x_i) L=∏i=1NP(yi∣xi) |
| 矩阵元素求和 | 求和 | ∑ i , j x i j \sum_{i,j} x_{ij} ∑i,jxij |
| 矩阵行列式展开 | 连乘 | ∏ i λ i \prod_{i} \lambda_i ∏iλi |
| 边缘概率 | 求和 | P ( x ) = ∑ y P ( x , y ) P(x) = \sum_y P(x, y) P(x)=∑yP(x,y) |
3.3 为什么实际代码中很少看到连乘
这是很多初学者的困惑:论文里写的是连乘 ∏ \prod ∏,但代码里全是求和 ∑ \sum ∑。原因如下:
最大似然估计的原始形式是连乘:
L ( θ ) = ∏ i = 1 N P ( y i ∣ x i ; θ ) L(\theta) = \prod_{i=1}^{N} P(y_i | x_i; \theta) L(θ)=i=1∏NP(yi∣xi;θ)
但在实际计算中,连乘有两个严重问题:
- 数值下溢 : N N N 个小于 1 的概率相乘,结果趋近于 0。比如 0.1 100 = 10 − 100 0.1^{100} = 10^{-100} 0.1100=10−100,浮点数根本存不下。
- 梯度消失:连乘的导数是各概率导数的连乘链,梯度会指数级衰减。
解决方案:取对数,把连乘变成求和:
log L ( θ ) = ∑ i = 1 N log P ( y i ∣ x i ; θ ) \log L(\theta) = \sum_{i=1}^{N} \log P(y_i | x_i; \theta) logL(θ)=i=1∑NlogP(yi∣xi;θ)
对数是单调递增函数,最大化 log L \log L logL 等价于最大化 L L L,但计算上稳定得多。
python
# 连乘形式(不推荐,会下溢)
likelihood = 1.0
for i in range(N):
likelihood *= P(y[i] | x[i], theta) # N=1000 时几乎必为 0
# 对数求和形式(推荐,数值稳定)
log_likelihood = 0.0
for i in range(N):
log_likelihood += math.log(P(y[i] | x[i], theta))
# PyTorch 中的交叉熵损失就是对数似然的负数
loss = F.nll_loss(torch.log(probs), labels) # Negative Log-Likelihood
写博客的关键洞察:当你写 AI 算法博客时,如果涉及最大似然估计,一定要解释"为什么论文写连乘但代码用求和"。这是读者最容易困惑的点,解释清楚了这个细节,文章质量就上了一个档次。
四、极限:从理论到实践的桥梁
markdown
$$
\lim_{N \to \infty} \frac{1}{N} \sum_{i=1}^{N} f(x_i) = \mathbb{E}[f(x)]
$$
渲染效果:
lim N → ∞ 1 N ∑ i = 1 N f ( x i ) = E f ( x ) \lim_{N \to \infty} \frac{1}{N} \sum_{i=1}^{N} f(x_i) = \mathbb{E}f(x) N→∞limN1i=1∑Nf(xi)=Ef(x)
这个公式为什么重要 :大数定律 lim N → ∞ 1 N ∑ i = 1 N X i = E X \lim_{N \to \infty} \frac{1}{N}\sum_{i=1}^{N} X_i = \mathbb{E}X limN→∞N1∑i=1NXi=EX 是机器学习理论基础的核心。它解释了一个根本问题:为什么用训练集上的平均损失(经验风险)能代替真实分布上的期望损失(期望风险)?
答案是:当样本量 N N N 足够大时,经验风险趋近期望风险。这就是机器学习中"更多数据 = 更好模型"的理论依据。
语法注意 :\to 写箭头,\infty 写无穷符号,\mathbb{E} 写期望算子(双线体)。不要把 \to 写成 ->,后者渲染为 − > -> −> 而不是 → \to →。
五、积分:连续世界的求和
5.1 定积分
markdown
$$
\int_{a}^{b} f(x) \, dx
$$
渲染效果:
∫ a b f ( x ) d x \int_{a}^{b} f(x) \, dx ∫abf(x)dx
排版细节 :\, 是一个细空格(thin space),让 d x dx dx 和被积函数之间有视觉间隔。这是数学排版的国际惯例------论文中几乎都会这样写。
不加 \, 的话 d x dx dx 会紧贴函数,看起来像是函数名的一部分。虽然不影响数学含义,但影响可读性。
| 间距命令 | 宽度 | 用途 |
|---|---|---|
\, |
3/18 em | 细空格, d x dx dx 前用 |
\; |
5/18 em | 中空格 |
\quad |
1 em | 大空格,分隔多个公式 |
\qquad |
2 em | 超大空格 |
5.2 二重积分
markdown
$$
\int_{-\infty}^{\infty} \int_{-\infty}^{\infty} f(x, y) \, dx \, dy
$$
渲染效果:
∫ − ∞ ∞ ∫ − ∞ ∞ f ( x , y ) d x d y \int_{-\infty}^{\infty} \int_{-\infty}^{\infty} f(x, y) \, dx \, dy ∫−∞∞∫−∞∞f(x,y)dxdy
5.3 实战:高斯分布的归一化
这条公式综合了分数、根号、指数、自适应括号和积分------是检验公式写作能力的好例子:
markdown
$$
\int_{-\infty}^{\infty} \frac{1}{\sqrt{2\pi}\sigma} \exp\left(-\frac{(x-\mu)^2}{2\sigma^2}\right) dx = 1
$$
渲染效果:
∫ − ∞ ∞ 1 2 π σ exp ( − ( x − μ ) 2 2 σ 2 ) d x = 1 \int_{-\infty}^{\infty} \frac{1}{\sqrt{2\pi}\sigma} \exp\left(-\frac{(x-\mu)^2}{2\sigma^2}\right) dx = 1 ∫−∞∞2π σ1exp(−2σ2(x−μ)2)dx=1
逐层拆解:
| 语法片段 | 渲染效果 | 作用 |
|---|---|---|
\int_{-\infty}^{\infty} |
∫ − ∞ ∞ \int_{-\infty}^{\infty} ∫−∞∞ | 从 − ∞ -\infty −∞ 到 ∞ \infty ∞ 的积分 |
\frac{1}{\sqrt{2\pi}\sigma} |
1 2 π σ \frac{1}{\sqrt{2\pi}\sigma} 2π σ1 | 归一化系数(分数 + 嵌套根号) |
\exp\left(...\right) |
exp ( . . . ) \exp\left(...\right) exp(...) | 指数函数,自适应括号 |
\frac{(x-\mu)^2}{2\sigma^2} |
( x − μ ) 2 2 σ 2 \frac{(x-\mu)^2}{2\sigma^2} 2σ2(x−μ)2 | 指数部分的分数 |
dx = 1 |
d x = 1 dx = 1 dx=1 | 积分结果为 1(概率归一化) |
这个公式在 AI 中的意义:高斯分布是 VAE、扩散模型、贝叶斯推断等众多 AI 模型的核心假设。理解它的归一化条件(积分等于 1),是理解这些模型推导的基础。
5.4 常见积分错误对照
| 错误写法 | 问题 | 正确写法 | 错误渲染 |
|---|---|---|---|
\int_a^b f(x) dx |
d x dx dx 紧贴函数 | \int_{a}^{b} f(x) \, dx |
∫ a b f ( x ) d x \int_a^b f(x) dx ∫abf(x)dx |
\int_{-\infty}^{infty} |
少了负号 | \int_{-\infty}^{\infty} |
∫ − ∞ i n f t y \int_{-\infty}^{infty} ∫−∞infty |
\exp(-\frac{...}{...}) |
括号太小 | \exp\left(-\frac{...}{...}\right) |
exp ( − a b ) \exp(-\frac{a}{b}) exp(−ba) vs exp ( − a b ) \exp\left(-\frac{a}{b}\right) exp(−ba) |
\int f(x) dx |
缺少上下限 | \int_{a}^{b} f(x) \, dx |
不定积分不需要上下限,但要写 dx |
六、根号:从归一化到距离度量
6.1 平方根与 n 次方根
markdown
$\sqrt{x}$ $\sqrt{a^2 + b^2}$ $\sqrt[3]{x}$ $\sqrt[n]{x^n}$
渲染效果: x \sqrt{x} x a 2 + b 2 \sqrt{a^2 + b^2} a2+b2 x 3 \sqrt3{x} 3x x n n \sqrtn{x^n} nxn
| 写法 | 含义 | AI 中的应用 |
|---|---|---|
\sqrt{x} |
x \sqrt{x} x | 标准差、RMS |
\sqrt[n]{x} |
x n \sqrtn{x} nx | Lp 范数( p p p 次方根) |
\sqrt{a^2 + b^2} |
a 2 + b 2 \sqrt{a^2+b^2} a2+b2 | 向量模长、欧氏距离 |
6.2 AI 中的根号实战
RMS 归一化(RMSNorm,Transformer 中常用的归一化方式):
markdown
$$
\text{RMS}(x) = \sqrt{\frac{1}{N}\sum_{i=1}^{N} x_i^2}
$$
RMS ( x ) = 1 N ∑ i = 1 N x i 2 \text{RMS}(x) = \sqrt{\frac{1}{N}\sum_{i=1}^{N} x_i^2} RMS(x)=N1i=1∑Nxi2
python
# 对应的 PyTorch 实现
rms = torch.sqrt(torch.mean(x ** 2, dim=-1, keepdim=True) + eps)
x_normed = x / rms # RMSNorm
欧氏距离(KNN、K-Means 等算法的基础):
markdown
$$
d(\mathbf{x}, \mathbf{y}) = \sqrt{\sum_{i=1}^{N}(x_i - y_i)^2}
$$
d ( x , y ) = ∑ i = 1 N ( x i − y i ) 2 d(\mathbf{x}, \mathbf{y}) = \sqrt{\sum_{i=1}^{N}(x_i - y_i)^2} d(x,y)=i=1∑N(xi−yi)2
python
# 对应的 NumPy 实现
distance = np.sqrt(np.sum((x - y) ** 2))
# 或者直接用库函数
from scipy.spatial.distance import euclidean
distance = euclidean(x, y)
踩坑提醒 :根号内的表达式如果很长,渲染器可能不会自动调整根号上方的横线长度。建议把复杂表达式用
\sqrt{}完整包裹。如果根号内容确实太长,考虑改用(...)^{1/2}的指数形式。
七、自适应括号:让公式更专业
普通括号不会自动调整大小,当公式中有分数或求和时,括号看起来太小:
markdown
$(\frac{a}{b})$ vs $\left(\frac{a}{b}\right)$
渲染效果: ( a b ) (\frac{a}{b}) (ba) vs ( a b ) \left(\frac{a}{b}\right) (ba)
| 写法 | 渲染 | 说明 |
|---|---|---|
(\frac{a}{b}) |
( a b ) (\frac{a}{b}) (ba) | 普通括号,太小 |
\left(\frac{a}{b}\right) |
( a b ) \left(\frac{a}{b}\right) (ba) | 自适应,正好 |
[\sum_{i=1}^{N} x_i] |
∑ i = 1 N x i \\sum_{i=1}\^{N} x_i ∑i=1Nxi | 方括号也偏小 |
\left[\sum_{i=1}^{N} x_i\right] |
∑ i = 1 N x i \left\\sum_{i=1}\^{N} x_i\\right ∑i=1Nxi | 自适应方括号 |
\langle \mathbf{v} \rangle |
⟨ v ⟩ \langle \mathbf{v} \rangle ⟨v⟩ | 尖括号(期望值) |
什么时候必须用自适应括号:
| 场景 | 普通括号 | 自适应括号 |
|---|---|---|
| 括号内只有简单变量 x x x | ( x ) (x) (x) 可以 | 不需要 |
| 括号内有分数 | ( a b ) (\frac{a}{b}) (ba) 太小 | ( a b ) \left(\frac{a}{b}\right) (ba) ✅ |
| 括号内有求和 | ( ∑ i = 1 N x i ) (\sum_{i=1}^{N} x_i) (∑i=1Nxi) 太小 | ( ∑ i = 1 N x i ) \left(\sum_{i=1}^{N} x_i\right) (∑i=1Nxi) ✅ |
| 括号内有根号 | ( x ) (\sqrt{x}) (x ) 还行 | ( x ) \left(\sqrt{x}\right) (x ) 更好 |
| 嵌套括号 | 容易混淆 | 自适应能区分层级 ✅ |
最佳实践 :当括号内有
\frac、\sum、\sqrt、\int时,一律用\left和\right。简单公式不需要。这个习惯能让你的公式看起来更专业------审稿人和读者一眼就能看出作者是否熟悉 LaTeX。
注意 :\left 和 \right 必须成对出现。如果只需要单边括号(比如分段函数的左侧大括号),用 \left.(不可见)配对:
markdown
$$
\left. \frac{\partial L}{\partial \theta} \right|_{\theta=\theta_0}
$$
∂ L ∂ θ ∣ θ = θ 0 \left. \frac{\partial L}{\partial \theta} \right|_{\theta=\theta_0} ∂θ∂L θ=θ0
八、综合实战:从最大似然到交叉熵的完整推导
现在把本文学过的所有语法串起来,写一个完整的推导过程。这个推导是机器学习面试的高频考点,也是理解交叉熵损失为什么这样设计的核心。
步骤 1:最大似然估计(连乘)
假设 N N N 个样本独立同分布,似然函数是各样本概率的连乘:
L ( θ ) = ∏ i = 1 N P ( y i ∣ x i ; θ ) L(\theta) = \prod_{i=1}^{N} P(y_i | x_i; \theta) L(θ)=i=1∏NP(yi∣xi;θ)
步骤 2:取对数(连乘 → 求和)
连乘容易数值下溢,取对数变成求和:
log L ( θ ) = ∑ i = 1 N log P ( y i ∣ x i ; θ ) \log L(\theta) = \sum_{i=1}^{N} \log P(y_i | x_i; \theta) logL(θ)=i=1∑NlogP(yi∣xi;θ)
步骤 3:取负号和均值(求和 → 平均)
最大化似然等价于最小化负对数似然:
L = − 1 N ∑ i = 1 N log P ( y i ∣ x i ; θ ) \mathcal{L} = -\frac{1}{N} \sum_{i=1}^{N} \log P(y_i | x_i; \theta) L=−N1i=1∑NlogP(yi∣xi;θ)
步骤 4:多分类展开(单层求和 → 双层求和)
对于 C C C 分类问题, P ( y i ∣ x i ; θ ) = ∏ c = 1 C y ^ i c y i c P(y_i | x_i; \theta) = \prod_{c=1}^{C} \hat{y}{ic}^{y{ic}} P(yi∣xi;θ)=∏c=1Cy^icyic,取对数后:
L = − 1 N ∑ i = 1 N ∑ c = 1 C y i c log ( y ^ i c ) \mathcal{L} = -\frac{1}{N} \sum_{i=1}^{N} \sum_{c=1}^{C} y_{ic} \log(\hat{y}_{ic}) L=−N1i=1∑Nc=1∑Cyiclog(y^ic)
这就是交叉熵损失。
步骤 5:添加 L2 正则化(求和 + 范数)
L total = − 1 N ∑ i = 1 N ∑ c = 1 C y i c log ( y ^ i c ) + λ ∥ w ∥ 2 2 \mathcal{L}{\text{total}} = -\frac{1}{N} \sum{i=1}^{N} \sum_{c=1}^{C} y_{ic} \log(\hat{y}_{ic}) + \lambda \|\mathbf{w}\|_2^2 Ltotal=−N1i=1∑Nc=1∑Cyiclog(y^ic)+λ∥w∥22
语法使用统计
这个推导过程中用到的语法:
| 语法 | 出现次数 | 出现位置 |
|---|---|---|
\frac |
3 | 1 N \frac{1}{N} N1、 ∂ L ∂ θ \frac{\partial L}{\partial \theta} ∂θ∂L、归一化系数 |
\sum |
5 | 样本求和、类别求和、正则化项 |
\prod |
2 | 连乘似然、多分类概率展开 |
\log |
3 | 对数似然 |
| ` | ` | |
\mathcal{L} |
3 | 损失函数 |
\mathbf{w} |
1 | 权重向量 |
\lambda |
1 | 正则化系数 |
写作建议:在博客中展示这种"从零到一"的推导过程,比单独列出每个公式有价值得多。读者能看到公式之间的逻辑递进,而不仅仅是结论。这就是"教学型博客"和"公式手册"的区别。
九、语法速查:本篇涉及的命令
| 语法 | 效果 | 用途 | 篇章定位 |
|---|---|---|---|
\frac{a}{b} |
a b \frac{a}{b} ba | 分数 | §一 |
\dfrac{a}{b} |
a b \dfrac{a}{b} ba | 行内分数(不缩小) | §一 |
\sum_{i=1}^{N} |
∑ i = 1 N \sum_{i=1}^{N} ∑i=1N | 求和 | §二 |
\prod_{i=1}^{N} |
∏ i = 1 N \prod_{i=1}^{N} ∏i=1N | 连乘 | §三 |
\lim_{N \to \infty} |
lim N → ∞ \lim_{N \to \infty} limN→∞ | 极限 | §四 |
\int_{a}^{b} |
∫ a b \int_{a}^{b} ∫ab | 积分 | §五 |
\sqrt{x} |
x \sqrt{x} x | 平方根 | §六 |
\sqrt[n]{x} |
x n \sqrtn{x} nx | n 次方根 | §六 |
\left( ... \right) |
自适应括号 | 括号 | §七 |
\, |
细空格 | 排版 | §五 |
\to |
→ \to → | 箭头 | §四 |
\infty |
∞ \infty ∞ | 无穷 | §四、§五 |
\exp |
exp \exp exp | 指数函数 | §五 |
\mathbb{E} |
E \mathbb{E} E | 期望算子 | §四 |
小结
读完这篇,你掌握了:
- 分数 :
\frac、\dfrac、嵌套分数的写法和兼容性 - 求和:单层/多重求和、条件求和的写法
- 连乘:连乘与求和的关系、为什么实际代码中用对数求和替代连乘
- 极限:大数定律的公式写法及其在机器学习中的理论意义
- 积分:定积分、二重积分、高斯分布归一化的完整写法
- 根号:平方根、n 次方根在 RMS 和欧氏距离中的应用
- 自适应括号 :什么时候必须用
\left\right,什么时候不需要 - 综合推导:从最大似然到交叉熵的完整公式链
下一篇进入论文写作的刚需:矩阵和各种特殊符号(箭头、集合、范数、梯度),再往后就是用 AI 经典公式做综合实战。
如果你在写文章时遇到本文没覆盖的语法,可以在 KaTeX 文档 查到完整的命令列表。