Exponential Moving Average
Adam EMA GAE
Monte Carlo Sampling
蒙特卡洛采样 (Monte Carlo Sampling) MCMC Monte Carlo Tree Search (MCTS) Denoising Score Matching
Importance Sampling
重要性采样 (Importance Sampling) GRPO/PPO中的重要性采样 Partial filter
Trust Region Method
信赖域方法 (Trust Region Method) 的数学原理与实现 Levenberg-Marquardt算法 TRPO和PPO SQP 问题的信赖域方法(trajopt)
从随机微分方程 SDE 到扩散模型
这篇文章想从随机微分方程(Stochastic Differential Equation, SDE)出发,推到扩散模型里常见的逆向 SDE: \[d\mathbf{x} = \left[\mathbf{f}(\mathbf{x}, t) - g^2(t)\nabla_{\mathbf{x}}\log p_t(\mathbf{x})\right]dt {}+ g(t)d\bar{\mathbf{w}}\]这个式子看起来突然出现了一个 \(\nabla_{\mathbf{x}}\log p_t(\mathbf{x})\),也就是 score。本文的主线就是解释:这个 score 是怎么从“把扩散过程反过来”自然出现的。 先给一个大图景: SDE 描述单个样本点如何随机运动。 FPE 描述所有样本形成的概率密度如何随时间变化。 扩散模型的前向过程是从数据分布 \(p_0\) 走向噪声分布 \(p_T\)。 生成过程要从 \(p_T\) 走回 \(p_0\),所以需要把前向 SDE 反过来。 把 FPE 的时间反过来并整理成标准形式,就会得到逆向 SDE,其中自然出现 score。 1. 从 ODE 到 SDE 普通微分方程(ODE)描述确定性系统: \[\frac{d\mathbf{x}}{dt}=f(\mathbf{x},t)\]给定初始状态之后,轨迹是确定的。很多高阶微分方程也可以写成一阶向量形式。例如二阶系统可以引入速度 \(v=\dot{x}\),改写为: \[\frac{d}{dt} \begin{bmatrix} x \\ v \end{bmatrix} = \begin{bmatrix} v \\ F/m \end{bmatrix}\]但现实系统里经常存在随机扰动,比如传感器噪声、建模误差、环境扰动。此时只写确定性漂移不够,需要加入随机过程项: \[d\mathbf{x}_t = \mathbf{f}(\mathbf{x}_t,t)dt {}+ g(\mathbf{x}_t,t)d\mathbf{W}_t\]这里: \(\mathbf{f}(\mathbf{x}_t,t)dt\) 是漂移项,表示平均意义下系统往哪里走。 \(g(\mathbf{x}_t,t)d\mathbf{W}_t\) 是扩散项,表示随机扰动有多强。 \(\mathbf{W}_t\) 是标准布朗运动,也叫 Wiener 过程。 Wiener 过程的增量满足: ...