张芷铭的个人博客

朗之万动力学:从物理基础到生成式AI的革命

朗之万动力学:从物理基础到生成式AI的革命

朗之万动力学(Langevin Dynamics)这一诞生于1908年的物理理论,如今已成为深度学习生成模型的核心引擎,推动着AI在图像、语音和科学模拟领域的突破。

朗之万动力学的定义与物理背景

朗之万动力学由法国物理学家保罗·朗之万提出,用于描述微观粒子在势能场中受趋势力、摩擦力与随机力共同作用的运动行为。其核心方程融合了牛顿力学与统计物理的思想:
$$
m\frac{d^2x}{dt^2} = -\nabla U(x) - \gamma \frac{dx}{dt} + \sqrt{2\gamma k_B T} \eta(t)
$$
其中:

  • $m$为粒子质量,$U(x)$为势能函数
  • $\gamma$为摩擦系数,$k_B$为玻尔兹曼常数,$T$为系统温度
  • $\eta(t)$是高斯白噪声(均值为0、方差为1),模拟热浴环境中的随机碰撞

过阻尼极限($m/\gamma \to 0$,如水中微粒)下,惯性项可忽略,方程简化为:
$$
\frac{dx}{dt} = -\frac{1}{\gamma} \nabla U(x) + \sqrt{\frac{2k_B T}{\gamma}} \eta(t)
$$
此时系统的稳态分布收敛至玻尔兹曼分布:$p(x) \propto e^{-U(x)/k_B T}$。这一性质成为连接物理与机器学习的桥梁。


数学基础:从随机微分方程到采样算法

随机微分方程的数值离散化

朗之万方程属于伊藤型随机微分方程(SDE),其一般形式为:
$$
dX_t = f(X_t)dt + g(X_t)dW_t
$$
其中$W_t$为维纳过程(Wiener Process)。采用欧拉-丸山离散化(Euler-Maruyama)可得:
$$
x_{t+\Delta t} = x_t - \frac{\Delta t}{\gamma} \nabla U(x_t) + \sqrt{\frac{2k_B T \Delta t}{\gamma}} z_t, \quad z_t \sim \mathcal{N}(0,I)
$$
此式为朗之万采样的计算基础。

与概率分布的等价关系

通过设定势能函数 $U(x) = -k_B T \log p(x)$,可得:
$$
\nabla U(x) = -k_B T \nabla \log p(x)
$$
代入离散方程后,采样步骤简化为:
$$
x_{t+\Delta t} = x_t + \epsilon \nabla \log p(x_t) + \sqrt{2\epsilon} z_t
$$
其中 $\epsilon = k_B T \Delta t / \gamma$ 为有效步长。仅需概率密度的梯度 $\nabla \log p(x)$(即得分函数)即可采样,无需归一化常数。


生成式AI的革命:得分匹配与朗之万动力学(SMLD)

核心思想与挑战

得分匹配的朗之万动力学(Score-Matching Langevin Dynamics, SMLD)由Yang Song等人在2019年提出。其框架包含两步:

  1. 得分估计:训练神经网络 $s_\theta(x) \approx \nabla \log p_{data}(x)$
  2. 朗之万采样:利用估计的得分生成样本

核心挑战在于:真实数据(如图像)往往集中于低维流形,导致得分函数在流形外无定义且估计不稳定。

多尺度噪声扰动与得分匹配

SMLD通过添加多级高斯噪声解决流形问题:

  1. 设计噪声标准差序列 $\sigma_1 > \sigma_2 > \cdots > \sigma_L$
  2. 构造扰动分布 $p_{\sigma_i}(\tilde{x}) = \int p_{data}(x) \mathcal{N}(\tilde{x}|x, \sigma_i^2 I) dx$
  3. 训练噪声条件得分网络 $s_\theta(\tilde{x}, \sigma_i)$ 逼近 $\nabla_{\tilde{x}} \log p_{\sigma_i}(\tilde{x})$

训练目标采用去噪得分匹配(Denoising Score Matching):
$$
\min_\theta \sum_{i=1}^L \sigma_i^2 \mathbb{E}{p{data}(x)} \mathbb{E}{\tilde{x}\sim \mathcal{N}(x,\sigma_i^2 I)} \left[ | s\theta(\tilde{x}, \sigma_i) + \frac{\tilde{x}-x}{\sigma_i^2} |2^2 \right]
$$
该目标避免显式计算 $\tr(\nabla_x s
\theta)$,适合高维数据。

退火朗之万采样

采样过程采用退火策略,从高噪声向低噪声过渡:

1
2
3
4
5
6
7
x = torch.randn_like(data)  # 初始化噪声样本  
for sigma in [sigma_L, sigma_{L-1}, ..., sigma_1]:  
    for t in range(T_steps):  
        # 朗之万更新步骤  
        noise = torch.randn_like(x)  
        grad = s_theta(x, sigma)  
        x = x + epsilon * grad + sqrt(2*epsilon) * noise  

此方法显著提升混合效率,避免陷入局部极小值。


性能优势与实验结果

在CIFAR-10数据集上,SMLD实现了Inception Score 8.87的当时最优结果(2019年),超过同期GAN和VAE模型。其优势包括:

  • 架构灵活:得分网络可使用CNN、Transformer等任意架构
  • 训练稳定:无对抗训练中的模式崩溃问题
  • 可解释性:得分函数具有明确几何意义(指向数据密集方向)

!https://example.com/smld-samples.png
SMLD在CelebA和CIFAR-10上生成的样本(来源:Generative Modeling by Estimating Gradients of the Data Distribution)


最新进展与拓展应用

扩散模型的统一视角

SMLD与去噪扩散概率模型(DDPM) 存在深刻联系:

  • DDPM可视为SMLD的特例(噪声调度为$\alpha_t$)
  • 二者均被统一于随机微分方程(SDE)框架

在SDE视角下,生成过程等价于逆时间SDE:
$$
dx = [f(x,t) - g(t)^2 \nabla \log p_t(x)]dt + g(t)dW_t
$$
其中$f(x,t)$和$g(t)$分别定义漂移和扩散系数。

加速采样技术

二阶BAOAB算法将朗之万方程拆分为五个子步骤(B:位置更新, A:动量更新, O:热浴作用),通过对称分裂达到$\mathcal{O}(\Delta t^2)$精度,显著提升收敛速度。

跨领域应用

  1. 分子动力学:模拟蛋白质折叠(如AMBER软件)
  2. 优化算法:随机梯度朗之万动力学(SGLD)用于贝叶斯推断
  3. 强化学习:策略搜索中的探索机制

代码实践:PyTorch实现朗之万采样

以下代码展示了从高斯混合分布采样的朗之万动力学:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import torch  
import matplotlib.pyplot as plt  

def score_function(x):  
    """高斯混合分布的得分函数(梯度对数密度)"""  
    mu1, mu2 = torch.tensor([-3.0]), torch.tensor([3.0])  
    var = 1.0  
    prob1 = torch.exp(-0.5 * (x - mu1)**2 / var)  
    prob2 = torch.exp(-0.5 * (x - mu2)**2 / var)  
    grad_logp = (- (x - mu1) * prob1 - (x - mu2) * prob2) / (prob1 + prob2 + 1e-5)  
    return grad_logp  

# 朗之万采样  
x = torch.randn(1000, 1).requires_grad_()  
epsilon = 0.01  
steps = 1000  

for _ in range(steps):  
    score = score_function(x)  
    x = x + epsilon * score + torch.sqrt(torch.tensor(2 * epsilon)) * torch.randn_like(x)  

# 可视化  
plt.hist(x.detach().numpy(), bins=50, density=True)  
plt.xlabel('x')  
plt.ylabel('Density')  
plt.title('Langevin Sampling from Gaussian Mixture')  

输出为双峰分布,验证算法正确性


学习资源推荐

  1. 核心论文

  2. 教程与课程

  3. 代码库

朗之万动力学正持续推动生成式AI的边界。正如物理学为随机运动建模提供工具,其在AI中为数据生成开辟了新范式——通过噪声与梯度的共舞,从混沌中创造秩序

💬 评论