指数族分布
1. 定义与基本形式
1.1 为什么研究指数族?
指数族分布是统计学中最重要的分布类别之一,具有以下优点:
- 统一框架:高斯、伯努利、Poisson等都可以用统一形式表达
- 共轭性:与指数族先验共轭,后验仍是指数族
- 计算高效:许多统计量有解析形式
- 变分推断友好:平均场变分推断在指数族中有闭式解
1.2 标准形式
定义:一个概率分布属于指数族,如果其概率密度(质量)函数可以写成:
其中:
- :自然参数(natural parameter)
- :充分统计量(sufficient statistic)
- :基础度量(base measure)
- :对数配分函数(log partition function),确保归一化
配分函数的归一化作用:
1.3 例子:高斯分布
一维高斯分布 :
写成指数族形式:
2. 常见分布的指数族形式
2.1 伯努利分布
| 参数 | 表达式 |
|---|---|
| 自然参数 | (log-odds) |
| 充分统计量 | |
| 基础度量 | |
| 配分函数 | |
| 反解 | (sigmoid) |
2.2 多项分布
多项分布 用于离散多类问题:
| 参数 | 表达式 |
|---|---|
| 自然参数 | (约束 ) |
| 充分统计量 | |
| 配分函数 |
2.3 泊松分布
| 参数 | 表达式 |
|---|---|
| 自然参数 | |
| 充分统计量 | |
| 基础度量 | |
| 配分函数 |
2.4 Gamma分布
| 参数 | 表达式 |
|---|---|
| 自然参数 | |
| 充分统计量 | |
| 配分函数 |
2.5 Beta分布
| 参数 | 表达式 |
|---|---|
| 自然参数 | |
| 充分统计量 | |
| 基础度量 | |
| 配分函数 |
3. 指数族的数学性质
3.1 矩母函数与累积量
对数配分函数的导数
对数配分函数 的导数给出矩:
例子:对于伯努利分布
3.2 期望参数化
期望参数(expectation parameter)定义为:
例如:
- 伯努利:
- 高斯:
自然参数与期望参数的关系:
3.3 KL散度的简洁形式
指数族之间的KL散度有简洁形式:
对于 和 :
4. 共轭先验
4.1 什么是共轭先验?
定义:如果先验 与似然 的乘积与后验 属于同一分布族,则称该先验为共轭先验。
4.2 指数族共轭先验的形式
对于指数族分布,其共轭先验形式为:
其中:
- :伪观测数(pseudo-count)
- :伪充分统计量
后验更新:
若先验参数为 ,则后验参数为:
4.3 共轭先验对照表
| 似然分布 | 共轭先验 | 先验参数 | 后验参数 |
|---|---|---|---|
| 伯努利 | Beta | ||
| 多项 | Dirichlet | ||
| 泊松 | Gamma | ||
| 高斯(固定) | Gaussian | ||
| 高斯(固定) | Inverse-Gamma |
4.4 共轭先验的直观理解
Beta-Bernoulli例子:
先验:
似然:
后验:
其中 ,。
5. 变分推断中的应用
5.1 平均场变分推断的闭式解
在平均场变分推断中,最优因子 的形式为:
对于指数族,由于对数似然是 的线性函数,我们可以得到闭式解。
5.2 例子:混合高斯模型的变分推断
import numpy as np
class ExponentialFamilyVI:
"""指数族分布的变分推断"""
def fit(self, X, n_components, n_iter=100):
"""变分EM算法"""
N, D = X.shape
# 初始化变分参数
self.alpha = np.ones(n_components) / n_components # 混合系数
self.phi = [self._init_params(D) for _ in range(n_components)] # 高斯参数
for _ in range(n_iter):
# E步:更新隐变量后验
self._e_step(X)
# M步:更新变分参数
self._m_step(X)
def _init_params(self, D):
"""初始化高斯参数(指数族形式)"""
return {
'xi': np.zeros(D), # 线性充分统计量
'tau': 0, # 二次充分统计量
'nu': 1 # 伪观测数
}
def _e_step(self, X):
"""E步:计算隐变量后验"""
N, D = X.shape
responsibilities = np.zeros((N, self.n_components))
for k in range(self.n_components):
# 计算期望充分统计量
E_z_k = self._compute_expected_sufficient_stats(k)
# 计算对数后验
log_resp = np.log(self.alpha[k] + 1e-10)
log_resp += self._gaussian_log_likelihood(X, E_z_k)
responsibilities[:, k] = log_resp
# 归一化
responsibilities = np.exp(responsibilities - responsibilities.max(axis=1, keepdims=True))
responsibilities /= responsibilities.sum(axis=1, keepdims=True)
return responsibilities
def _m_step(self, X):
"""M步:更新指数族参数的闭式解"""
N, D = X.shape
N_k = self.responsibilities.sum(axis=0)
for k in range(self.n_components):
# 更新伪观测数
self.phi[k]['nu'] = N_k[k]
# 更新线性充分统计量
self.phi[k]['xi'] = (self.responsibilities[:, k:k+1] * X).sum(axis=0) / N_k[k]
# 更新二次充分统计量
self.phi[k]['tau'] = (self.responsibilities[:, k:k+1] * (X**2).sum(axis=1)).sum() / N_k[k]
# 更新混合系数
self.alpha = N_k / N
def _compute_expected_sufficient_stats(self, k):
"""计算期望充分统计量"""
phi = self.phi[k]
D = len(phi['xi'])
# E[ξ] = φ['xi'] / φ['nu']
E_xi = phi['xi'] / phi['nu']
# E[τ] = φ['tau'] / φ['nu']
E_tau = phi['tau'] / phi['nu']
return {'E_xi': E_xi, 'E_tau': E_tau}5.3 共轭指数族模型的优势
| 优势 | 说明 |
|---|---|
| 闭式后验 | 无需迭代优化后验参数 |
| 计算高效 | 变分推断有解析解 |
| 数值稳定 | 避免梯度估计 |
| 可解释性 | 先验参数有明确含义(伪观测) |
6. 信息几何视角
6.1 流形结构
指数族分布的集合形成一个黎曼流形:
- 点:分布
- 坐标:自然参数 或期望参数
- 度量:Fisher信息矩阵
6.2 Fisher信息矩阵
Fisher信息矩阵定义了流形上的黎曼度量:
几何意义:
- 曲率由Fisher信息矩阵刻画
- 自然梯度
- 自然梯度下降在信息几何意义上最优
6.3 指数族中的距离
| 距离 | 定义 |
|---|---|
| KL散度 | |
| f-散度 | 一般 |
| Wasserstein距离 | 在高斯族中有闭式解 |
7. 指数族与机器学习
7.1 广义线性模型(GLM)
GLM将指数族分布与线性预测器结合:
链接函数:
- 规范链接:
- Logit链接(伯努利):
- Log链接(Poisson):
7.2 条件随机场(CRF)
CRF是指数族在序列建模中的应用,详见conditional-random-fields-sequence。
7.3 变分推断的理论基础
指数族在变分推断中的重要性:
- 平均场假设下,最优因子是指数族分布
- 共轭性使得后验更新有闭式解
- 充分统计量减少了需要近似的维度
7.4 神经网络与指数族
现代神经网络可以看作是条件指数族模型:
例如:
- Softmax输出层:多项指数族
- Sigmoid输出层:伯努利指数族
- 高斯输出层:高斯指数族
8. 进阶主题
8.1 混合指数族
混合多个指数族分布得到混合指数族:
特点:
- 不再是指数族(失去解析性质)
- 但仍可使用变分推断近似
- EM算法有闭式E步
8.2 规范化流与指数族
归一化流可以将简单指数族转换为复杂分布:
变换后的分布对数密度:
8.3 指数族的扩展
| 扩展 | 说明 |
|---|---|
| 弯曲指数族 | 协方差结构随均值变化 |
| 非指数族 | 如Student-t、混合分布 |
| 非参数指数族 | 在函数空间上的指数族 |