知识点卡片:概率分布
基本信息
| 属性 | 内容 |
|---|---|
| 知识点 | 概率分布(离散/连续) |
| 掌握程度 | ★★★★☆ |
| 学习优先级 | P0 |
| 预估时间 | 10小时 |
| 面试频率 | ★★★★☆ |
核心原理
深度学习中,概率分布用于:
- 建模输出:分类任务使用概率分布
- 损失函数:交叉熵/负对数似然
- 正则化:Dropout作为贝叶斯近似
- 生成模型:VAE/Diffusion/GAN
离散分布
1. 伯努利分布 (Bernoulli)
python
# 抛一次硬币,p为正面概率
P(X=1) = p, P(X=0) = 1-p
# 期望:E[X] = p
# 方差:Var[X] = p(1-p)在DL中的应用:二分类问题的建模基础
python
# Sigmoid = 伯努利分布的概率函数
def sigmoid(x):
p = 1 / (1 + np.exp(-x))
# 解释:输入x的logit转换为p(正面)概率
return p2. 多项分布 (Multinomial) / Categorical
python
# K个类别的分布
P(X=k) = p_k, 其中 Σp_k = 1
# 期望:E[X_k] = p_k
# One-hot编码表示在DL中的应用:多分类问题的建模基础
python
# Softmax = 多项分布的概率函数
def softmax(logits):
exp_logits = np.exp(logits - np.max(logits)) # 数值稳定
return exp_logits / np.sum(exp_logits)3. 泊松分布 (Poisson)
python
# 稀有事件的计数
P(X=k) = λ^k * e^(-λ) / k!
# 期望:E[X] = λ
# 方差:Var[X] = λ在DL中的应用:count-based模型的稀疏性问题
连续分布
1. 高斯分布 (Gaussian/Normal)
python
# 概率密度
p(x) = (1/√(2πσ²)) * exp(-(x-μ)² / 2σ²)
# 期望:E[X] = μ
# 方差:Var[X] = σ²在DL中的应用:
- 权重初始化(Xavier/He初始化假设高斯)
- 回归任务的噪声假设
- Layer Norm / Batch Norm 的统计量
- VAE的隐变量先验
python
import torch
import torch.distributions as dist
# 定义高斯分布
mu = torch.zeros(10)
sigma = torch.ones(10)
p_x = dist.Normal(mu, sigma)
# 采样
x = p_x.sample() # shape: (10,)
log_prob = p_x.log_prob(x) # 对数概率2. Laplace分布
python
# 概率密度
p(x) = (1/2b) * exp(-|x-μ|/b)
# 期望:E[X] = μ
# 方差:Var[X] = 2b²在DL中的应用:L1损失的统计动机(比L2对异常值更鲁棒)
3. Beta分布
python
# 概率密度(定义在[0,1]区间)
p(x) = x^(α-1) * (1-x)^(β-1) / B(α, β)
# 期望:E[X] = α / (α + β)在DL中的应用:变分推断中用于建模概率
分布间的转换关系
┌─────────────────────────────────────────────────────────────┐
│ 分布转换关系图 │
├─────────────────────────────────────────────────────────────┤
│ │
│ Bernoulli ──────→ Binomial ──────→ Multinomial │
│ ↓ ↓ ↓ │
│ ↓ ↓ ↓ │
│ Categorical ←────────────────────────── │
│ │
│ 高斯 + 线性变换 ──→ 仍是高斯(线性变换封闭性) │
│ │
│ Bernoulli + Sigmoid = Logistic函数 │
│ Categorical + Softmax = Multinomial概率 │
│ │
└─────────────────────────────────────────────────────────────┘深度学习中的概率解释
1. 分类问题的概率模型
python
# 逻辑回归 = 伯努利分布的最大似然估计
# 输入x,输出p(y=1|x)
# 线性模型
logits = x @ W + b
# Sigmoid转换为概率
p = sigmoid(logits) # P(y=1|x)
# Loss = -log P(y|x) = Binary Cross Entropy
loss = -y * log(p) - (1-y) * log(1-p)2. 多分类问题的概率模型
python
# Softmax回归 = 多项分布的MLE
# 输入x,输出p(y=k|x)
# 线性模型
logits = x @ W + b # shape: (batch, num_classes)
# Softmax转换为概率
probs = softmax(logits) # P(y=k|x)
# Loss = -log P(y|x) = Cross Entropy
loss = -sum(y_true * log(y_pred))3. 从概率角度理解MSE
python
# 回归问题假设:y = f(x) + ε, ε ~ N(0, σ²)
# 则最小化MSE等价于最大化高斯对数似然
# MSE Loss
mse = (y_pred - y_true) ** 2
# 高斯负对数似然
nll = 0.5 * (y_pred - y_true) ** 2 / sigma**2 + const
# 因此:最小化MSE ↔ MLE(假设高斯噪声)面试高频问题
Q1: 为什么分类问题用Cross Entropy而不是MSE?
答:
- 概率解释:CE是分类的自然损失(负对数似然),MSE不是
- 梯度特性:CE的梯度是
pred - label,恒定且有意义;MSE梯度是pred * (1-pred) * (pred - label),在pred接近0/1时梯度消失 - 收敛速度:CE收敛更快,MSE容易陷入饱和
python
# 梯度对比
# CE梯度:∂L/∂pred = pred - label(恒定)
# MSE梯度:∂L/∂pred = 2 * pred * (1-pred) * (pred - label)
# 当pred→0或pred→1时,MSE梯度→0,导致梯度消失Q2: Sigmoid和Softmax的区别?
答:
- Sigmoid:用于二分类,输出伯努利分布参数,不要求输出和为1
- Softmax:用于多分类,输出多项分布参数,要求输出和为1
- 关系:二分类时,
softmax = sigmoid(数学上等价)
python
# 二分类用Sigmoid
p1 = sigmoid(logit) # P(y=1)
p0 = 1 - p1 # P(y=0)
# 等价于Softmax
import torch.nn.functional as F
p = F.softmax(torch.stack([logit_0, logit_1], dim=-1), dim=-1)
p0, p1 = p[..., 0], p[..., 1]Q3: 高斯分布为什么重要?
答:
- 中心极限定理:大量独立随机变量的和趋近高斯
- 数学性质好:线性变换封闭,对共轭先验友好
- 最大熵:在给定均值和方差时,高斯是熵最大的分布
- 计算方便:只需要均值和方差两个参数
代码练习
python
import numpy as np
import torch
from scipy import stats
# 1. 验证Sigmoid和Softmax的关系
def sigmoid(x):
return 1 / (1 + np.exp(-x))
# 二分类Softmax
def softmax_2class(x):
exp_x = np.exp(x - np.max(x)) # 数值稳定
return exp_x / exp_x.sum()
# sigmoid(3) ≈ softmax([0, 3])[1]
print(sigmoid(3)) # 0.9526
print(softmax_2class([0, 3])) # [0.0474, 0.9526]
# 2. 高斯分布的KL散度
def kl_gaussian(mu1, sigma1, mu2, sigma2):
"""KL(N1 || N2)"""
return np.log(sigma2/sigma1) + (sigma1**2 + (mu1-mu2)**2)/(2*sigma2**2) - 0.5
# KL(N(0,1) || N(0,1)) = 0
print(kl_gaussian(0, 1, 0, 1)) # 0.0
# 3. 从伯努利推导Sigmoid
# P(y=1|x) = 1 / (1 + exp(-(w·x + b)))
# 这就是逻辑回归的核心公式分布对比速查表
| 分布 | 类型 | 支撑 | 参数 | DL应用 |
|---|---|---|---|---|
| Bernoulli | 离散 | p | 二分类 | |
| Categorical | 离散 | p₁...pₖ | 多分类 | |
| Binomial | 离散 | n,p | n次二分类 | |
| Multinomial | 离散 | {0,...,n}^K | n,p₁...pₖ | 多分类 |
| Poisson | 离散 | λ | count数据 | |
| Gaussian | 连续 | (-∞,∞) | μ,σ² | 回归/初始化 |
| Laplace | 连续 | (-∞,∞) | μ,b | L1损失 |
| Beta | 连续 | [0,1] | α,β | 变分推断 |
| Dirichlet | 连续 | Σxᵢ=1 | α₁...αₖ | 多分类先验 |