读AI论文最大的障碍不是英语,是数学符号。看到 $\sum$、$\nabla$、$\mathbb{E}$ 就头大?本文用符号→读法→含义→代码的模式,30分钟帮你扫清障碍。
前置要求:高中数学水平,会基础Python。
一、求和与连乘
1.1 求和符号 $\sum$
读法:Sigma(西格玛),读作"sum"
含义:把一堆数加起来
公式示例: $$\sum_{i=1}^{n} x_i = x_1 + x_2 + \cdots + x_n$$
论文中常见形式:
- 损失函数:$L = \sum_{i=1}^{N} \ell(y_i, \hat{y}_i)$(所有样本的损失加起来)
- 注意力权重:$c = \sum_{i=1}^{T} \alpha_i h_i$(加权求和)
Python实现:
import numpy as np
# 方法1:直接求和
x = [1, 2, 3, 4, 5]
result = sum(x) # 15
# 方法2:NumPy
x = np.array([1, 2, 3, 4, 5])
result = np.sum(x) # 15
# 方法3:带条件的求和(论文常见)
# 例如:只对正数求和
result = sum(xi for xi in x if xi > 0)
1.2 连乘符号 $\prod$
读法:Pi(派),读作"product"
含义:把一堆数乘起来
公式示例: $$\prod_{i=1}^{n} x_i = x_1 \times x_2 \times \cdots \times x_n$$
论文中常见形式:
- 概率链式法则:$P(x_1, x_2, \ldots, x_n) = \prod_{i=1}^{n} P(x_i | x_{<i})$
- 语言模型:$P(\text{句子}) = \prod_{t=1}^{T} P(w_t | w_1, \ldots, w_{t-1})$
Python实现:
import numpy as np
x = [1, 2, 3, 4, 5]
result = np.prod(x) # 120
# 概率连乘(常用log避免下溢)
probs = [0.9, 0.8, 0.7]
log_prob = sum(np.log(p) for p in probs) # 用log求和代替连乘
prob = np.exp(log_prob) # 转回概率
二、向量与矩阵
2.1 向量 $\vec{v}$ 或 $\mathbf{v}$
读法:vector v
含义:一列(或一行)数字
论文中常见形式:
- 词向量:$\vec{v}_{word}$(一个词的向量表示)
- 隐藏状态:$\mathbf{h}_t$(时刻t的隐藏向量)
Python实现:
import numpy as np
# 创建向量
v = np.array([1, 2, 3]) # shape: (3,)
# 向量点积
u = np.array([4, 5, 6])
dot_product = np.dot(v, u) # 1*4 + 2*5 + 3*6 = 32
# 向量拼接(论文中的 [h; x] 或 [h, x])
h = np.array([1, 2])
x = np.array([3, 4])
concat = np.concatenate([h, x]) # [1, 2, 3, 4]
2.2 矩阵 $W$、$A$、$M$
读法:matrix W
含义:二维数组,神经网络的权重通常用矩阵表示
论文中常见形式:
- 权重矩阵:$W_Q$, $W_K$, $W_V$(Transformer中的Query/Key/Value权重)
- 注意力矩阵:$A_{ij}$(第i个query对第j个key的注意力)
Python实现:
import numpy as np
# 创建矩阵
W = np.array([[1, 2], [3, 4], [5, 6]]) # shape: (3, 2)
# 矩阵乘法(论文中的 Wx)
x = np.array([1, 2]) # shape: (2,)
result = W @ x # 或 np.dot(W, x),shape: (3,)
# result = [1*1+2*2, 3*1+4*2, 5*1+6*2] = [5, 11, 17]
2.3 转置 $W^T$
读法:W transpose
含义:行变列,列变行
公式:如果 $W$ 是 $m \times n$ 矩阵,则 $W^T$ 是 $n \times m$ 矩阵
论文中常见形式:
- 注意力计算:$QK^T$(Query和Key的转置相乘)
Python实现:
import numpy as np
W = np.array([[1, 2, 3], [4, 5, 6]]) # shape: (2, 3)
W_T = W.T # shape: (3, 2)
# W_T = [[1, 4], [2, 5], [3, 6]]
2.4 范数 $|W|$
读法:norm of W
含义:衡量向量/矩阵的"大小"
常见类型:
- L1范数:$|x|_1 = \sum_i |x_i|$(绝对值之和)
- L2范数:$|x|_2 = \sqrt{\sum_i x_i^2}$(平方和开根号)
- Frobenius范数:$|W|F = \sqrt{\sum{i,j} W_{ij}^2}$(矩阵的L2范数)
论文中常见形式:
- 正则化:$L = L_{task} + \lambda |W|_2^2$
- 归一化:$\hat{x} = \frac{x}{|x|_2}$
Python实现:
import numpy as np
x = np.array([3, 4])
# L1范数
l1 = np.linalg.norm(x, ord=1) # |3| + |4| = 7
# L2范数
l2 = np.linalg.norm(x, ord=2) # sqrt(9 + 16) = 5
# 归一化
x_normalized = x / np.linalg.norm(x) # [0.6, 0.8]
2.5 逐元素乘法 $\odot$
读法:Hadamard product,或element-wise multiplication
含义:对应位置相乘(不是矩阵乘法!)
公式:$(A \odot B){ij} = A{ij} \times B_{ij}$
论文中常见形式:
- LSTM门控:$c_t = f_t \odot c_{t-1} + i_t \odot \tilde{c}_t$
Python实现:
import numpy as np
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
result = a * b # [4, 10, 18],逐元素相乘
三、概率符号
3.1 概率 $P(\cdot)$
读法:probability of
含义:某事件发生的可能性,取值0到1
论文中常见形式:
- 条件概率:$P(y|x)$(给定x,y发生的概率)
- 联合概率:$P(x, y)$(x和y同时发生的概率)
Python实现:
import numpy as np
# 离散概率分布
probs = np.array([0.1, 0.3, 0.6]) # 三个类别的概率
assert np.isclose(probs.sum(), 1.0) # 概率和为1
# 从概率分布采样
sample = np.random.choice([0, 1, 2], p=probs)
3.2 期望 $\mathbb{E}[\cdot]$
读法:expectation of,或expected value
含义:平均值的推广,概率加权平均
公式: $$\mathbb{E}[X] = \sum_x x \cdot P(x) \quad \text{(离散)}$$ $$\mathbb{E}[X] = \int x \cdot p(x) dx \quad \text{(连续)}$$
论文中常见形式:
- 损失函数:$L = \mathbb{E}_{x \sim D}[\ell(f(x), y)]$(在数据分布上的期望损失)
- RLHF:$\mathbb{E}_{y \sim \pi}[r(y)]$(策略产生输出的期望奖励)
Python实现:
import numpy as np
# 离散期望
values = np.array([1, 2, 3])
probs = np.array([0.2, 0.3, 0.5])
expectation = np.sum(values * probs) # 1*0.2 + 2*0.3 + 3*0.5 = 2.3
# 蒙特卡洛估计(采样近似期望)
samples = np.random.choice(values, size=10000, p=probs)
mc_expectation = np.mean(samples) # 约等于2.3
3.3 高斯分布 $\mathcal{N}(\mu, \sigma^2)$
读法:Normal distribution with mean mu and variance sigma squared
含义:正态分布,最常见的连续概率分布
公式: $$p(x) = \frac{1}{\sqrt{2\pi\sigma^2}} \exp\left(-\frac{(x-\mu)^2}{2\sigma^2}\right)$$
论文中常见形式:
- VAE编码器:$q(z|x) = \mathcal{N}(\mu(x), \sigma^2(x))$
- 重参数化:$z = \mu + \sigma \cdot \epsilon, \quad \epsilon \sim \mathcal{N}(0, 1)$
Python实现:
import numpy as np
# 从高斯分布采样
mu, sigma = 0, 1
samples = np.random.normal(mu, sigma, size=1000)
# 重参数化技巧(VAE中常用)
mu = np.array([1.0, 2.0])
sigma = np.array([0.5, 0.3])
epsilon = np.random.normal(0, 1, size=mu.shape)
z = mu + sigma * epsilon # 可微分的采样
四、微积分符号
4.1 偏导数 $\frac{\partial}{\partial x}$
读法:partial derivative with respect to x
含义:函数对某个变量的变化率(其他变量固定)
论文中常见形式:
- 梯度计算:$\frac{\partial L}{\partial W}$(损失对权重的偏导)
- 链式法则:$\frac{\partial L}{\partial x} = \frac{\partial L}{\partial y} \cdot \frac{\partial y}{\partial x}$
Python实现(PyTorch自动微分):
import torch
# 定义变量(需要梯度)
x = torch.tensor([2.0], requires_grad=True)
y = x ** 2 # y = x^2
# 计算梯度
y.backward()
print(x.grad) # tensor([4.]),即 dy/dx = 2x = 4
4.2 梯度 $\nabla$
读法:nabla,或gradient
含义:所有偏导数组成的向量
公式: $$\nabla_\theta L = \left[\frac{\partial L}{\partial \theta_1}, \frac{\partial L}{\partial \theta_2}, \ldots\right]$$
论文中常见形式:
- 梯度下降:$\theta \leftarrow \theta - \eta \nabla_\theta L$
Python实现:
import torch
# 多变量函数的梯度
x = torch.tensor([1.0, 2.0, 3.0], requires_grad=True)
y = (x ** 2).sum() # y = x1^2 + x2^2 + x3^2
y.backward()
print(x.grad) # tensor([2., 4., 6.]),即 [2x1, 2x2, 2x3]
五、常见函数
5.1 Sigmoid $\sigma(x)$
公式: $$\sigma(x) = \frac{1}{1 + e^{-x}}$$
含义:把任意实数压缩到(0, 1)区间,常用于门控机制
Python实现:
import numpy as np
def sigmoid(x):
return 1 / (1 + np.exp(-x))
# 或使用scipy
from scipy.special import expit
result = expit(0) # 0.5
5.2 Tanh $\tanh(x)$
公式: $$\tanh(x) = \frac{e^x - e^{-x}}{e^x + e^{-x}}$$
含义:把任意实数压缩到(-1, 1)区间
Python实现:
import numpy as np
result = np.tanh(0) # 0.0
result = np.tanh(1) # 约0.76
5.3 ReLU
公式: $$\text{ReLU}(x) = \max(0, x)$$
含义:负数变0,正数不变。最常用的激活函数
Python实现:
import numpy as np
def relu(x):
return np.maximum(0, x)
x = np.array([-1, 0, 1, 2])
result = relu(x) # [0, 0, 1, 2]
5.4 Softmax
公式: $$\text{softmax}(x_i) = \frac{e^{x_i}}{\sum_j e^{x_j}}$$
含义:把一组数转换为概率分布(和为1)
Python实现:
import numpy as np
def softmax(x):
exp_x = np.exp(x - np.max(x)) # 减max防止溢出
return exp_x / exp_x.sum()
x = np.array([1, 2, 3])
probs = softmax(x) # [0.09, 0.24, 0.67]
print(probs.sum()) # 1.0
六、集合与逻辑符号
6.1 属于 $\in$
读法:belongs to,或in
含义:元素属于某个集合
论文中常见形式:
- $x \in \mathbb{R}^d$(x是d维实数向量)
- $w \in V$(w是词表V中的词)
6.2 对所有 $\forall$
读法:for all
含义:对于所有的…
论文中常见形式:
- $\forall i \in {1, \ldots, n}$(对于所有i从1到n)
6.3 存在 $\exists$
读法:there exists
含义:存在某个…
6.4 argmax / argmin
公式: $$\arg\max_x f(x) = \text{使} f(x) \text{最大的} x \text{值}$$
论文中常见形式:
- 预测:$\hat{y} = \arg\max_y P(y|x)$(选择概率最大的类别)
Python实现:
import numpy as np
scores = np.array([0.1, 0.7, 0.2])
best_idx = np.argmax(scores) # 1
best_value = scores[best_idx] # 0.7
七、积分符号
7.1 积分 $\int$
读法:integral
含义:连续版本的求和,计算曲线下的面积
公式示例: $$\int_a^b f(x) dx$$
论文中常见形式:
- 连续期望:$\mathbb{E}[X] = \int x \cdot p(x) dx$
- 信息熵:$H(X) = -\int p(x) \log p(x) dx$
- KL散度:$D_{KL}(P | Q) = \int p(x) \log \frac{p(x)}{q(x)} dx$
Python实现:
import numpy as np
from scipy import integrate
# 数值积分
def f(x):
return x ** 2
result, error = integrate.quad(f, 0, 1) # ∫x²dx from 0 to 1 = 1/3
print(f"积分结果: {result:.4f}") # 0.3333
# 蒙特卡洛积分(高维常用)
samples = np.random.uniform(0, 1, 10000)
mc_result = np.mean(samples ** 2) # 约0.333
八、信息论符号
8.1 信息熵 $H(X)$
读法:entropy of X
含义:衡量随机变量的不确定性/信息量
公式: $$H(X) = -\sum_x P(x) \log P(x)$$
论文中常见形式:
- MDL原理:最小化描述长度
- 复杂度度量:系统的信息熵
Python实现:
import numpy as np
def entropy(p):
"""计算离散分布的熵"""
p = np.clip(p, 1e-10, 1) # 避免log(0)
return -np.sum(p * np.log2(p))
# 示例
p_uniform = np.array([0.25, 0.25, 0.25, 0.25]) # 均匀分布
p_peaked = np.array([0.9, 0.05, 0.03, 0.02]) # 集中分布
print(f"均匀分布熵: {entropy(p_uniform):.2f}") # 2.0 (最大)
print(f"集中分布熵: {entropy(p_peaked):.2f}") # 0.57 (较小)
8.2 互信息 $I(X; Y)$
读法:mutual information between X and Y
含义:X和Y共享的信息量
公式: $$I(X; Y) = H(X) + H(Y) - H(X, Y)$$
Python实现:
from sklearn.metrics import mutual_info_score
# 离散变量的互信息
x = [0, 0, 1, 1, 2, 2]
y = [0, 0, 1, 1, 1, 2]
mi = mutual_info_score(x, y)
print(f"互信息: {mi:.4f}")
九、特殊数学符号
9.1 实数集 $\mathbb{R}$
读法:real numbers
含义:所有实数的集合
论文中常见形式:
- $x \in \mathbb{R}^d$:x是d维实数向量
- $W \in \mathbb{R}^{m \times n}$:W是m行n列的实数矩阵
9.2 约等于 $\approx$
读法:approximately equal to
含义:近似相等
论文中常见形式:
- $\pi \approx 3.14$
- 近似公式:$\log(1+x) \approx x$(当x很小时)
9.3 正比于 $\propto$
读法:proportional to
含义:成正比,忽略常数因子
论文中常见形式:
- 贝叶斯:$P(\theta|D) \propto P(D|\theta) P(\theta)$
9.4 下取整/上取整 $\lfloor \cdot \rfloor$ / $\lceil \cdot \rceil$
读法:floor / ceiling
含义:向下/向上取整
论文中常见形式:
- 卷积输出尺寸:$H_{out} = \lfloor \frac{H_{in} + 2p - k}{s} \rfloor + 1$
Python实现:
import numpy as np
x = 3.7
print(np.floor(x)) # 3.0 (下取整)
print(np.ceil(x)) # 4.0 (上取整)
9.5 最小/最大 $\min$ / $\max$
公式: $$\min_x f(x) = \text{使} f(x) \text{最小的值}$$
论文中常见形式:
- 损失最小化:$\min_\theta L(\theta)$
- 对抗训练:$\min_G \max_D V(D, G)$(GAN)
Python实现:
import numpy as np
x = np.array([3, 1, 4, 1, 5])
print(np.min(x)) # 1
print(np.max(x)) # 5
print(np.argmin(x)) # 1 (最小值的索引)
十、下标与上标约定
| 符号 | 含义 | 示例 |
|---|---|---|
| $x_i$ | 第i个元素 | $x_1, x_2, \ldots$ |
| $x_t$ | 时刻t的值 | 序列中第t步 |
| $x^{(l)}$ | 第l层的值 | 神经网络第l层 |
| $W^T$ | 转置 | 矩阵转置 |
| $W^{-1}$ | 逆矩阵 | 矩阵求逆 |
| $x’$ 或 $\hat{x}$ | 变换后/预测值 | 预测输出 |
完整符号速查表
基础运算符号
| 符号 | 读法 | 含义 | Python |
|---|---|---|---|
| $\sum$ | sigma | 求和 | np.sum() |
| $\prod$ | pi | 连乘 | np.prod() |
| $\int$ | integral | 积分 | scipy.integrate.quad() |
| $\min$ / $\max$ | min / max | 最小/最大值 | np.min() / np.max() |
| $\arg\max$ / $\arg\min$ | argmax / argmin | 最值索引 | np.argmax() / np.argmin() |
| $\lfloor x \rfloor$ / $\lceil x \rceil$ | floor / ceiling | 下取整/上取整 | np.floor() / np.ceil() |
向量与矩阵符号
| 符号 | 读法 | 含义 | Python |
|---|---|---|---|
| $\vec{v}$ / $\mathbf{v}$ | vector v | 向量 | np.array([...]) |
| $W$ | matrix W | 矩阵 | np.array([[...]]) |
| $W^T$ | W transpose | 转置 | W.T |
| $W^{-1}$ | W inverse | 逆矩阵 | np.linalg.inv(W) |
| $|x|$ / $|x|_2$ | norm | L2范数 | np.linalg.norm(x) |
| $|x|_1$ | L1 norm | L1范数 | np.linalg.norm(x, ord=1) |
| $|W|_F$ | Frobenius norm | F范数 | np.linalg.norm(W, 'fro') |
| $\odot$ | hadamard | 逐元素乘 | a * b |
| $[h; x]$ / $[h, x]$ | concatenate | 向量拼接 | np.concatenate([h, x]) |
| $\cdot$ / $@$ | dot product | 矩阵乘法 | A @ B 或 np.dot(A, B) |
概率与统计符号
| 符号 | 读法 | 含义 | Python |
|---|---|---|---|
| $P(\cdot)$ | probability | 概率 | - |
| $P(y|x)$ | conditional prob | 条件概率 | - |
| $p(\cdot)$ | density | 概率密度 | - |
| $\mathbb{E}[\cdot]$ | expectation | 期望 | np.mean() |
| $\text{Var}(\cdot)$ | variance | 方差 | np.var() |
| $\mathcal{N}(\mu, \sigma^2)$ | normal | 高斯分布 | np.random.normal(mu, sigma) |
| $\sim$ | distributed as | 服从分布 | - |
| $H(X)$ | entropy | 信息熵 | -np.sum(p * np.log(p)) |
| $I(X; Y)$ | mutual info | 互信息 | sklearn.metrics.mutual_info_score() |
| $D_{KL}$ | KL divergence | KL散度 | 见第二篇 |
微积分符号
| 符号 | 读法 | 含义 | Python |
|---|---|---|---|
| $\frac{\partial}{\partial x}$ | partial | 偏导数 | tensor.backward() |
| $\nabla$ | nabla / gradient | 梯度 | tensor.grad |
| $\frac{d}{dx}$ | derivative | 导数 | torch.autograd.grad() |
激活函数
| 符号 | 公式 | Python |
|---|---|---|
| $\sigma(x)$ | $\frac{1}{1+e^{-x}}$ | 1/(1+np.exp(-x)) |
| $\tanh(x)$ | $\frac{e^x-e^{-x}}{e^x+e^{-x}}$ | np.tanh(x) |
| $\text{ReLU}(x)$ | $\max(0, x)$ | np.maximum(0, x) |
| $\text{softmax}(x)$ | $\frac{e^{x_i}}{\sum_j e^{x_j}}$ | 见第二篇 |
| $\text{GELU}(x)$ | $x \cdot \Phi(x)$ | torch.nn.GELU() |
集合与逻辑符号
| 符号 | 读法 | 含义 |
|---|---|---|
| $\in$ | in / belongs to | 属于 |
| $\notin$ | not in | 不属于 |
| $\subset$ | subset | 子集 |
| $\forall$ | for all | 对所有 |
| $\exists$ | exists | 存在 |
| $\mathbb{R}$ | real numbers | 实数集 |
| $\mathbb{R}^d$ | R to the d | d维实数空间 |
| $\mathbb{Z}$ | integers | 整数集 |
关系符号
| 符号 | 读法 | 含义 |
|---|---|---|
| $\approx$ | approximately | 约等于 |
| $\propto$ | proportional to | 正比于 |
| $\equiv$ | equivalent | 恒等于 |
| $\leq$ / $\geq$ | less/greater or equal | 小于等于/大于等于 |
| $\ll$ / $\gg$ | much less/greater | 远小于/远大于 |
下标与上标约定
| 符号 | 含义 | 示例 |
|---|---|---|
| $x_i$ | 第i个元素 | $x_1, x_2, \ldots$ |
| $x_t$ | 时刻t的值 | 序列中第t步 |
| $x^{(l)}$ | 第l层的值 | 神经网络第l层 |
| $W^T$ | 转置 | 矩阵转置 |
| $W^{-1}$ | 逆矩阵 | 矩阵求逆 |
| $\hat{x}$ | 预测值 | 模型输出 |
| $\tilde{x}$ | 变换后的值 | 候选值 |
| $x'$ | 导数或变体 | $f’(x)$ |
| $x^*$ | 最优值 | $\theta^*$ |
| $\bar{x}$ | 平均值 | 样本均值 |