Files
2026-05-16 17:16:51 +08:00

430 lines
15 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: 1-能量模型
draft: false
tags:
- EBM
- 能量模型
- 生成模型
- 深度学习
---
# 能量模型Energy-Based Model, EBM
## 1. EBM 的基本定义
### 1.1 能量函数的定义
**定义 1.1(能量函数)** 设 $x \in \mathcal{X} \subseteq \mathbb{R}^D$ 为观测数据,一个参数化的能量函数定义为:
$$
E_\theta: \mathcal{X} \to \mathbb{R}, \quad x \mapsto E_\theta(x)
$$
其中 $\theta \in \Theta$ 为可学习参数。能量函数 $E_\theta(x)$ 的值可以是任意实数,其物理意义来源于统计物理学——低能量对应高概率状态。
### 1.2 吉布斯分布
**定义 1.2(吉布斯分布)** 基于能量函数EBM 定义概率分布为:
$$
p_\theta(x) = \frac{\exp(-E_\theta(x))}{Z(\theta)}
$$
其中:
- $\exp(-E_\theta(x))$ 称为玻尔兹曼因子Boltzmann factor
- $Z(\theta)$ 是配分函数Partition Function定义为
$$
Z(\theta) = \int \exp\left(-E_\theta(x)\right) dx
$$
**定理 1.1(归一化性)** 由上述定义,$p_\theta(x)$ 满足归一化条件:
$$
\int p_\theta(x) \, dx = \frac{1}{Z(\theta)} \int \exp(-E_\theta(x)) \, dx = 1
$$
### 1.3 EBM 表示任意概率分布的能力
**定理 1.2(通用逼近性)** 给定任意目标概率分布 $p^*(x)$,如果能量函数 $E_\theta(x)$ 足够灵活(如神经网络万能逼近能力),则存在一组参数 $\theta^*$ 使得 $p_\theta(x)$ 任意逼近 $p^*(x)$。
**证明思路**:考虑能量函数 $E_\theta(x) = -\log p^*(x) + C$,其中 $C$ 为归一化常数。则:
$$
p_\theta(x) = \frac{\exp(-E_\theta(x))}{Z(\theta)} = \frac{p^*(x)}{\int p^*(x) dx} = p^*(x)
$$
在实际应用中,我们使用参数化函数 $E_\theta(x)$ 通过学习来拟合目标分布。常见的能量函数形式包括:
- 神经网络:$E_\theta(x) = f_\theta(x)$
- RBM 的能量函数:$E_\theta(x, h) = -b^\top x - c^\top h - h^\top W x$
---
## 2. 对数似然梯度推导
### 2.1 配分函数梯度的计算
**引理 2.1** 配分函数 $Z(\theta)$ 对参数 $\theta$ 的梯度为:
$$
\nabla_\theta Z(\theta) = \int \nabla_\theta \exp(-E_\theta(x)) \, dx = \int (-\nabla_\theta E_\theta(x)) \exp(-E_\theta(x)) \, dx
$$
**引理 2.2** 对数配分函数 $\log Z(\theta)$ 的梯度为:
$$
\nabla_\theta \log Z(\theta) = \frac{\nabla_\theta Z(\theta)}{Z(\theta)} = \int (-\nabla_\theta E_\theta(x)) \frac{\exp(-E_\theta(x))}{Z(\theta)} \, dx = \mathbb{E}_{p_\theta(x)}[-\nabla_\theta E_\theta(x)]
$$
### 2.2 对数似然梯度
给定观测数据 $\mathcal{D} = \{x^{(i)}\}_{i=1}^N$,对数似然为:
$$
\mathcal{L}(\theta) = \frac{1}{N} \sum_{i=1}^N \log p_\theta(x^{(i)})
$$
**定理 2.1(对数似然梯度)** 对数似然 $L(\theta) = \log p_\theta(x)$ 对参数 $\theta$ 的梯度为:
$$
\nabla_\theta \log p_\theta(x) = -\nabla_\theta E_\theta(x) - \mathbb{E}_{p_\theta(x)}[\nabla_\theta E_\theta(x)]
$$
**证明**
$$
\begin{aligned}
\nabla_\theta \log p_\theta(x) &= \nabla_\theta \left[ -E_\theta(x) - \log Z(\theta) \right] \\
&= -\nabla_\theta E_\theta(x) - \nabla_\theta \log Z(\theta) \\
&= -\nabla_\theta E_\theta(x) - \mathbb{E}_{p_\theta(x)}[-\nabla_\theta E_\theta(x)] \\
&= -\nabla_\theta E_\theta(x) + \mathbb{E}_{p_\theta(x)}[\nabla_\theta E_\theta(x)]
\end{aligned}
$$
注意:一些文献中使用正号约定不同,此处按 $p_\theta(x) \propto \exp(-E_\theta(x))$ 定义。
### 2.3 正相与负相的物理意义
将梯度公式写为期望形式:
$$
\nabla_\theta \log p_\theta(x) = \underbrace{-\nabla_\theta E_\theta(x)}_{\text{正相positive phase}} + \underbrace{\mathbb{E}_{p_\theta(x)}[\nabla_\theta E_\theta(x)]}_{\text{负相negative phase}}
$$
**正相Positive Phase**:对于观测数据 $x$,正相项 $-\nabla_\theta E_\theta(x)$ 增大观测数据的概率。具体而言:
- 如果 $\nabla_\theta E_\theta(x)$ 为负,则正相项为正,驱使能量降低
- 正相降低"真实数据"的能量,提高其概率
**负相Negative Phase**:从模型分布 $p_\theta(x)$ 中采样的期望 $\mathbb{E}_{p_\theta(x)}[\nabla_\theta E_\theta(x)]$
- 代表模型当前认为"可能"的数据
- 负相增大这些样本的能量,压制模型分布中过高概率的区域
- 防止模型过度集中于某一模式mode collapse
**物理图景**:能量模型的学习过程可以类比为热力学系统:
- 正相:将真实数据拉向低能量状态(吸引)
- 负相:将模型样本推离低能量状态(排斥)
- 平衡:达到稳态时,负相恰好平衡正相
---
## 3. 对比散度Contrastive Divergence, CD
### 3.1 精确梯度的不可计算性
**问题 3.1** 精确计算负相期望 $\mathbb{E}_{p_\theta(x)}[\nabla_\theta E_\theta(x)]$ 是 intractable 的,因为:
1. 需要从 $p_\theta(x)$ 中精确采样,但 $Z(\theta)$ 通常不可计算
2. 即使知道 $Z(\theta)$,精确采样也需要 Markov Chain Monte Carlo (MCMC) 的极限分布
### 3.2 CD-k 算法
**算法 3.1CD-k 算法)**
输入:数据样本 $x$,参数 $\theta$,步数 $k$
1. **初始化**$\tilde{x}^{(0)} \leftarrow x$
2. **MCMC 步骤**:对于 $t = 0, 1, \ldots, k-1$
- **离散 EBM如 RBM**:使用 Gibbs 采样
- **连续高维 EBM**:使用 Langevin 动力学采样(见第 6 节)
3. **返回**$\tilde{x}^{(k)}$ 作为负相样本的近似
**CD 梯度估计**
$$
\nabla_\theta \log p_\theta(x) \approx -\nabla_\theta E_\theta(x) + \nabla_\theta E_\theta(\tilde{x}^{(k)})
$$
### 3.3 CD 梯度偏差分析
**定理 3.1CD 梯度偏差)** CD-k 提供的梯度估计是有偏的,偏差来源为:
$$
\mathbb{E}_{p_\theta(x, \tilde{x}^{(k)})}[\nabla_\theta E_\theta(x)] - \mathbb{E}_{p_\theta(x)}[\nabla_\theta E_\theta(x)] = \text{bias}_k
$$
其中联合分布 $p_\theta(x, \tilde{x}^{(k)})$ 来自从 $x$ 开始的 $k$ 步 MCMC 链。
**性质 3.1**
- 当 $k \to \infty$ 时,$\tilde{x}^{(k)} \sim p_\theta(x)$,偏差趋于零
- 当 $k=1$ 时CD-1 是最常用的选择,计算效率与估计精度的折中
- CD 梯度估计的方差通常小于精确 MCMC 估计
### 3.4 持续对比散度Persistent CD, PCD
**算法 3.2PCD-k 算法)**
PCD 与 CD 的关键区别在于维护"持久链"persistent chains
1. 维护 $C$ 条独立的 MCMC 链 $\mathcal{C}_1, \ldots, \mathcal{C}_C$
2. 每轮训练后,更新所有持久链的状态
3. 负相样本从更新后的链中取样
**优点**
- 避免每轮从数据点重新初始化链
- 链在轮次间"持久",更快收敛到平稳分布
- 适合在线学习设置
**收敛条件**PCD 需要步长足够小,以确保链能够跟踪缓慢变化的能量 landscape。
---
## 4. 伪似然Pseudolikelihood
### 4.1 伪似然的定义
**定义 4.1(伪似然)** 伪似然是一种基于条件概率的替代目标函数:
$$
\mathcal{L}_{\text{PL}}(\theta) = \sum_{i=1}^N \log p_\theta(x_i \mid x_{-i})
$$
其中 $x_i$ 表示第 $i$ 个变量,$x_{-i}$ 表示除 $x_i$ 外的所有变量。
对于二元变量或离散的 EBM
$$
\log p_\theta(x_i \mid x_{-i}) = \log \frac{\exp(-E_\theta(x))}{\sum_{x_i'} \exp(-E_\theta(x_i', x_{-i}))}
$$
### 4.2 与对数似然的关系
**定理 4.1** 伪似然是对数似然的一阶近似,在某些条件下渐近等价。
**证明思路**:利用分解,
$$
\log p_\theta(x) = \sum_{i=1}^D \log p_\theta(x_i \mid x_{<i})
$$
而伪似然使用"逆向"条件:
$$
\mathcal{L}_{\text{PL}}(\theta) = \sum_{i=1}^D \log p_\theta(x_i \mid x_{-i})
$$
对于满足马尔可夫性质的模型(如 RBM当条件分布 $p_\theta(x_i \mid x_{-i})$ 与 $p_\theta(x_i \mid x_{<i})$ 足够接近时,两者等价。
**定理 4.2(伪似然梯度)** 伪似然的梯度可以写为:
$$
\nabla_\theta \log p_\theta(x_i \mid x_{-i}) = -\nabla_\theta E_\theta(x) + \mathbb{E}_{p_\theta(x_i' \mid x_{-i})}[\nabla_\theta E_\theta(x_i', x_{-i})]
$$
这与对数似然梯度形式相似,但期望仅在 $x_i$ 上计算,降低了计算复杂度。
### 4.3 在图像建模中的应用
**应用 4.1EBM for Image Generation** 近年来EBM 在图像生成中重新受到关注:
- **模型架构**:使用 CNN 或 Transformer 作为能量函数 $E_\theta(x)$
- **训练目标**:伪似然或 CD
- **采样**Langevin 动力学(见第 6 节)
- **优点**:无需显式归一化常数
- **代表工作**EBMs for image generation (Du & Mordatch, 2019)
---
## 5. 噪声对比估计Noise Contrastive Estimation, NCE
### 5.1 NCE 的核心思想
**核心思想**:将估计非归一化分布 $p_\theta(x) \propto \exp(-E_\theta(x))$ 的问题转化为二分类问题:
- 正类:来自真实数据分布 $p_{\text{data}}(x)$
- 负类:来自噪声分布 $q(x)$(如均匀分布、高斯噪声)
### 5.2 目标函数推导
**定义 5.1(二分类问题)** 考虑一个二分类器 $D_\theta(x)$,目标是区分数据 $y=1$(真)和噪声 $y=0$(假)。
**引理 5.1** 后验概率满足:
$$
P(y=1 \mid x) = \frac{p_{\text{data}}(x)}{p_{\text{data}}(x) + \alpha q(x)}
$$
其中 $\alpha$ 是噪声与数据的比例。
**定理 5.1NCE 目标函数)** 定义逻辑损失:
$$
\mathcal{L}_{\text{NCE}}(\theta) = \mathbb{E}_{x \sim p_{\text{data}}}[\log D_\theta(x)] + \mathbb{E}_{x \sim q}[\log(1 - D_\theta(x))]
$$
其中判别器具有 logit 形式。设**非归一化能量密度** $u_\theta(x) = \exp(-E_\theta(x))$,则:
$$
D_\theta(x) = \sigma\left( \log\frac{u_\theta(x)}{\alpha\, q(x)} \right)
$$
**核心优势**NCE 无需计算配分函数 $Z(\theta)$,直接通过噪声对比估计归一化常数。
在最优条件下,可以证明:
$$
D_\theta^*(x) = \frac{p_{\text{data}}(x)}{p_{\text{data}}(x) + \alpha q(x)}
$$
### 5.3 与 EBM 的联系
**定理 5.2** 当 $N \to \infty$ 且噪声比例 $\alpha$ 固定时NCE 估计器满足:
$$
p_\theta(x) \propto \exp(-E_\theta(x))
$$
**证明**:在最优判别器条件下,
$$
\frac{D_\theta^*(x)}{1 - D_\theta^*(x)} = \frac{p_{\text{data}}(x)}{\alpha q(x)} = \frac{u_\theta(x)}{\alpha q(x)}
$$
其中 $u_\theta(x) = \exp(-E_\theta(x))$。从而 $p_\theta(x) \propto u_\theta(x) = \exp(-E_\theta(x))$。
---
## 6. Langevin 动力学采样
### 6.1 Langevin 动力学的定义
**定义 6.1Langevin 动力学)** 对于连续变量 $x \in \mathbb{R}^D$Langevin 动力学定义为离散时间迭代:
$$
x_{t+1} = x_t - \epsilon \nabla_x E_\theta(x_t) + \sqrt{2\epsilon} \, z_t
$$
其中:
- $\epsilon > 0$ 为步长learning rate / step size
- $z_t \sim \mathcal{N}(0, I)$ 为标准高斯噪声
- $\sqrt{2\epsilon} \, z_t$ 是扩散项diffusion term
### 6.2 与 MCMC 的关系
**定理 6.1(平稳分布)** 当步长 $\epsilon \to 0$ 且迭代次数 $T \to \infty$ 时Langevin 动力学的极限分布为吉布斯分布 $p_\theta(x) \propto \exp(-E_\theta(x))$。
**证明(概要)**
1. Fokker-Planck 方程描述概率密度的演化
2. 稳态条件 $\nabla_x \cdot J = 0$$J$ 为概率流)
3. 唯一解为 $p_\theta(x) \propto \exp(-E_\theta(x))$
**与传统 MCMC 的比较**
| 方面 | Metropolis-Hastings | Langevin 动力学 |
|------|---------------------|-----------------|
| 接受率 | 需要计算接受率 | 隐含接受(步长足够小) |
| proposal | 对称 proposal | 使用梯度信息 |
| 效率 | 低维高效 | 高维更高效 |
### 6.3 步长选择与收敛性
**定理 6.2(收敛条件)** 为保证收敛,需要满足:
1. **步长条件**$\epsilon < \epsilon_{\max}$,其中 $\epsilon_{\max}$ 与能量函数的 Lipschitz 常数相关
2. **混合时间**$T_{\text{mix}} = O(D \log(1/\delta))$,其中 $D$ 为维度,$\delta$ 为目标精度
**实践建议**
- 步长 $\epsilon$ 通常选择 $10^{-4}$ 到 $10^{-2}$ 之间
- 需要 burn-in 阶段(前 $T_0$ 步不采样)
- 可与 MALAMetropolis-Adjusted Langevin Algorithm结合以保证精确接受率
---
## 7. 与扩散模型的联系
### 7.1 扩散过程概述
**定义 7.1(前向扩散过程)** 给定数据 $x_0 \sim p_{\text{data}}$,定义前向扩散过程 $\{x_t\}_{t=0}^T$
$$
q(x_t \mid x_{t-1}) = \mathcal{N}(x_t; \sqrt{1 - \beta_t} x_{t-1}, \beta_t I)
$$
其中 $\beta_t \in (0, 1)$ 为噪声调度。
**定义 7.2(反向过程)** 反向过程 $\{p_\theta(x_{t-1} \mid x_t)\}_{t=1}^T$ 是学习的:
$$
p_\theta(x_{t-1} \mid x_t) = \mathcal{N}(x_{t-1}; \mu_\theta(x_t, t), \sigma_t^2 I)
$$
### 7.2 能量函数在 score matching 中的作用
**定义 7.3Score Function** 数据分布的 score 定义为:
$$
\nabla_x \log p(x)
$$
**定理 7.1Score Matching 与 EBM** Score matching 目标函数为 Fisher 散度,即对齐数据真实得分与模型得分:
$$
\mathcal{L}_{\text{SM}}(\theta) = \mathbb{E}_{p_{\text{data}}(x)} \left[ \Big\| \nabla_x \log p_{\text{data}}(x) - \nabla_x \log p_\theta(x) \Big\|_2^2 \right]
$$
> **注**:原文 $\|\nabla_x \log p_\theta(x)\|^2$ 仅是模型得分平方项,是 Fisher 散度的简化形式(忽略常数项),非原始 Score Matching 损失定义。
与 EBM 的联系:
- 能量模型的梯度对应 score function$\nabla_x \log p_\theta(x) = -\nabla_x E_\theta(x)$
- 学习能量函数等价于学习 score function
**引理 7.1** 能量函数 $E_\theta(x)$ 与 score function 的关系:
$$
\nabla_x E_\theta(x) = -\nabla_x \log p_\theta(x)
$$
### 7.3 能量视角下的去噪扩散
**定理 7.2(能量视角)** 扩散模型的反向过程可以理解为能量引导的采样:
$$
p_\theta(x_{t-1} \mid x_t) \propto \exp\left( -\frac{\|x_{t-1} - \mu_\theta(x_t, t)\|^2}{2\sigma_t^2} \right)
$$
其中 $\mu_\theta(x_t, t)$ 可以视为由能量函数导出的条件均值。
**物理图景**
- 前向过程:逐渐向数据添加噪声(熵增)
- 反向过程:学习能量 landscape逐渐去除噪声
- EBM 提供统一的理论框架连接两部分
---
## 附录:常用公式汇总
| 公式 | 表达式 |
|------|--------|
| 吉布斯分布 | $p_\theta(x) = \exp(-E_\theta(x)) / Z(\theta)$ |
| 配分函数 | $Z(\theta) = \int \exp(-E_\theta(x)) dx$ |
| 对数似然梯度 | $\nabla_\theta \log p_\theta(x) = -\nabla_\theta E_\theta(x) - \mathbb{E}_{p_\theta}[\nabla_\theta E_\theta(x)]$ |
| CD-k 梯度 | $\approx -\nabla_\theta E_\theta(x) + \nabla_\theta E_\theta(\tilde{x}^{(k)})$ |
| 伪似然 | $\mathcal{L}_{\text{PL}} = \sum_i \log p_\theta(x_i \mid x_{-i})$ |
| Langevin 动力学 | $x_{t+1} = x_t - \epsilon \nabla_x E_\theta(x_t) + \sqrt{2\epsilon} z_t$ |
| Score function | $\nabla_x \log p(x) = -\nabla_x E(x)$ |
---
## 参考文献
1. LeCun, Y., et al. (2006). A tutorial on energy-based learning. *Predicting Structured Data*.
2. Hinton, G. E. (2002). Training products of experts by minimizing contrastive divergence. *Neural Computation*.
3. Du, Y., & Mordatch, I. (2019). Implicit generation and modeling with energy based models. *NeurIPS*.
4. Gutmann, M., & Hyvärinen, A. (2010). Noise-contrastive estimation: A new estimation principle for unnormalized statistical models. *AISTATS*.
5. Welling, M., & Teh, Y. W. (2011). Bayesian learning via stochastic gradient Langevin dynamics. *ICML*.
6. Song, Y., et al. (2021). Score-based generative modeling through stochastic differential equations. *ICLR*.