Tailwind CSSTailwind CSS
Home
  • Tailwind CSS 书籍目录
  • Vue 3 开发实战指南
  • React 和 Next.js 学习
  • TypeScript
  • React开发框架书籍大纲
  • Shadcn学习大纲
  • Swift 编程语言:从入门到进阶
  • SwiftUI 学习指南
  • 函数式编程大纲
  • Swift 异步编程语言
  • Swift 协议化编程
  • SwiftUI MVVM 开发模式
  • SwiftUI 图表开发书籍
  • SwiftData
  • ArkTS编程语言:从入门到精通
  • 仓颉编程语言:从入门到精通
  • 鸿蒙手机客户端开发实战
  • WPF书籍
  • C#开发书籍
learn
  • Java编程语言
  • Kotlin 编程入门与实战
  • /python/outline.html
  • AI Agent
  • MCP (Model Context Protocol) 应用指南
  • 深度学习
  • 深度学习
  • 强化学习: 理论与实践
  • 扩散模型书籍
  • Agentic AI for Everyone
langchain
Home
  • Tailwind CSS 书籍目录
  • Vue 3 开发实战指南
  • React 和 Next.js 学习
  • TypeScript
  • React开发框架书籍大纲
  • Shadcn学习大纲
  • Swift 编程语言:从入门到进阶
  • SwiftUI 学习指南
  • 函数式编程大纲
  • Swift 异步编程语言
  • Swift 协议化编程
  • SwiftUI MVVM 开发模式
  • SwiftUI 图表开发书籍
  • SwiftData
  • ArkTS编程语言:从入门到精通
  • 仓颉编程语言:从入门到精通
  • 鸿蒙手机客户端开发实战
  • WPF书籍
  • C#开发书籍
learn
  • Java编程语言
  • Kotlin 编程入门与实战
  • /python/outline.html
  • AI Agent
  • MCP (Model Context Protocol) 应用指南
  • 深度学习
  • 深度学习
  • 强化学习: 理论与实践
  • 扩散模型书籍
  • Agentic AI for Everyone
langchain
  • 第2章:概率论与随机过程基础

第2章:概率论与随机过程基础

2.3 随机微分方程(SDEs)与朗之万动力学

2.3.1 随机微分方程的基本概念

随机微分方程(Stochastic Differential Equations, SDEs)是包含随机项的微分方程,用于描述受随机噪声影响的动态系统。其一般形式为:

dXt=μ(Xt,t)dt+σ(Xt,t)dWtdX_t = \mu(X_t, t)dt + \sigma(X_t, t)dW_t dXt​=μ(Xt​,t)dt+σ(Xt​,t)dWt​

其中:

  • XtX_tXt​ 是随机过程
  • μ(Xt,t)\mu(X_t, t)μ(Xt​,t) 是漂移项(drift term)
  • σ(Xt,t)\sigma(X_t, t)σ(Xt​,t) 是扩散项(diffusion term)
  • WtW_tWt​ 是维纳过程(标准布朗运动)

2.3.2 伊藤积分与伊藤引理

由于布朗运动的路径处处不可微,传统微积分不适用。伊藤积分提供了处理SDEs的数学框架:

伊藤积分:

∫0Tf(t)dWt=lim⁡n→∞∑i=0n−1f(ti)(Wti+1−Wti)\int_0^T f(t)dW_t = \lim_{n\to\infty}\sum_{i=0}^{n-1}f(t_i)(W_{t_{i+1}}-W_{t_i}) ∫0T​f(t)dWt​=n→∞lim​i=0∑n−1​f(ti​)(Wti+1​​−Wti​​)

伊藤引理(一维情况): 对于随机过程 XtX_tXt​ 满足 dXt=μtdt+σtdWtdX_t = \mu_t dt + \sigma_t dW_tdXt​=μt​dt+σt​dWt​,若 f(t,Xt)f(t,X_t)f(t,Xt​) 是二次可微函数,则:

df(t,Xt)=(∂f∂t+μt∂f∂x+12σt2∂f∂x2)dt+σt∂f∂xdWtdf(t,X_t) = \left(\frac{\partial f}{\partial t} + \mu_t\frac{\partial f}{\partial x} + \frac{1}{2}\sigma_t^2\frac{\partial f}{\partial x^2}\right)dt + \sigma_t\frac{\partial f}{\partial x}dW_t df(t,Xt​)=(∂t∂f​+μt​∂x∂f​+21​σt2​∂x2∂f​)dt+σt​∂x∂f​dWt​

2.3.3 朗之万动力学

朗之万方程是物理学中描述粒子在势场中受随机力作用的SDE:

dxt=−∇U(xt)dt+2γdWtdx_t = -\nabla U(x_t)dt + \sqrt{2\gamma}dW_t dxt​=−∇U(xt​)dt+2γ​dWt​

其中:

  • U(x)U(x)U(x) 是势能函数
  • γ\gammaγ 是摩擦系数
  • WtW_tWt​ 是热噪声

在扩散模型中,逆向过程常被建模为朗之万动力学:

xt−1=xt+ϵt∇xlog⁡p(xt)+2ϵtzt,zt∼N(0,I)x_{t-1} = x_t + \epsilon_t\nabla_x\log p(x_t) + \sqrt{2\epsilon_t}z_t,\quad z_t\sim\mathcal{N}(0,I) xt−1​=xt​+ϵt​∇x​logp(xt​)+2ϵt​​zt​,zt​∼N(0,I)

2.3.4 与扩散模型的关系

扩散模型的前向过程可以表示为SDE:

dx=f(x,t)dt+g(t)dWdx = f(x,t)dt + g(t)dW dx=f(x,t)dt+g(t)dW

逆向过程对应的时间反转SDE:

dx=[f(x,t)−g(t)2∇xlog⁡pt(x)]dt+g(t)dW‾dx = [f(x,t) - g(t)^2\nabla_x\log p_t(x)]dt + g(t)d\overline{W} dx=[f(x,t)−g(t)2∇x​logpt​(x)]dt+g(t)dW

其中 ∇xlog⁡pt(x)\nabla_x\log p_t(x)∇x​logpt​(x) 就是分数函数(score function),通过分数匹配学习得到。

案例研究:图像去噪中的朗之万动力学

import torch
import numpy as np

def langevin_dynamics(score_fn, initial_noise, steps=1000, step_size=0.01):
    """
    朗之万动力学采样过程
    :param score_fn: 训练好的分数函数
    :param initial_noise: 初始噪声样本
    :param steps: 迭代步数
    :param step_size: 步长
    :return: 生成的样本
    """
    x = initial_noise.clone()
    for _ in range(steps):
        noise = torch.randn_like(x) * np.sqrt(2 * step_size)
        score = score_fn(x)
        x = x + step_size * score + noise
    return x

关键图示(概念示意图)

[前向扩散过程]          [逆向生成过程]
  清晰图像  ────> 噪声图像   (SDE)
   x_0     ────>   x_T      dx = f(x,t)dt + g(t)dW
   
  噪声图像  ────> 清晰图像   (逆向SDE)
   x_T     ────>   x_0      dx = [f(x,t)-g(t)²∇logp]dt + g(t)dW̅

延伸阅读

  1. 高阶数值解法:Euler-Maruyama方法、Milstein方法
  2. Fokker-Planck方程与稳态分布
  3. 不同噪声调度(noise schedule)对SDE的影响
  4. 基于SDE的统一框架(Score SDE, Probability Flow ODE)
Last Updated:: 5/28/25, 11:37 PM