像 Euler-Maruyama 方法这样的数值求解器通常用于模拟连续时间扩散模型,这种模型描述了受随机噪声微分方程支配的随机过程。这些求解器通过将时间离散化为小步长来近似随机微分方程 (SDE) 的轨迹。 Euler-Maruyama 方法是确定性 Euler 方法的直接扩展,因其简单性而广受欢迎。它通过结合确定性漂移项(基于当前状态和时间)和随机扩散项(按维纳过程增量缩放)来更新系统状态。例如,给定一个 SDE ( dX_t = \mu(X_t, t)dt + \sigma(X_t, t)dW_t ),Euler-Maruyama 更新是 ( X_{t+1} = X_t + \mu(X_t, t)\Delta t + \sigma(X_t, t)\sqrt{\Delta t} \cdot \mathcal{N}(0,1) ),其中 ( \Delta t ) 是步长。此方法计算效率很高,但弱收敛阶数为 1,这意味着误差随步长线性增长。尽管存在局限性,但由于其易于实现,它被广泛用于扩散模型中,用于训练和采样等任务。
其他求解器,如 Milstein 方法和随机 Runge-Kutta 变体,通过考虑 SDE 展开中的高阶项来提高精度。 Milstein 方法添加了一个涉及扩散系数导数的校正项 ( \sigma ),从而减少了由随机项引起的误差。例如,它的更新规则包括 ( \frac{1}{2}\sigma(X_t, t)\partial_x\sigma(X_t, t)(\Delta W_t^2 - \Delta t) )。这会将强意义上的收敛阶数提高到 1.0(路径精度),使其对于具有不可忽略的噪声依赖性的系统更加精确。随机 Runge-Kutta 方法,如 1.5 阶或 2.0 阶的方法,通过使用中间步骤来近似高阶项,而无需显式导数,从而进一步推广了这些思想。这些方法在需要精确轨迹模拟的扩散模型中非常有用,例如在物理信息生成模型中,或者在需要对噪声过程进行细粒度控制时。
在选择求解器时,开发人员需要在计算成本、准确性和稳定性之间取得平衡。对于基本的扩散模型训练,Euler-Maruyama 通常就足够了,在这些训练中,精确路径的重要性不如整体分布准确性。例如,在基于扩散的图像生成中,许多小步骤的累积效应可以容忍单个步骤的误差。但是,对于像稀有事件模拟或具有刚性动力学(快速变化的项)的系统等应用,可能需要更高阶的方法,如 Milstein 或自适应步长求解器(例如,Kloeden-Platen 方案)。自适应方法动态调整步长以控制误差,这在 SDE 的行为随时间变化显着时非常有用。像 torchsde
或 Diffrax
这样的库实现了这些求解器,允许开发人员试验权衡。最终,选择取决于问题对近似误差的敏感性和可用的计算资源。