Learning Thread · 2026-08-20

从 Diffusion SDE 到 π₀.₅ Flow Matching Action Head

Diffusion 为什么每步噪声是 √dt?

问题

Diffusion 为什么不是普通地“加一点随机数”?为什么单步噪声要乘 Δt\sqrt{\Delta t}

确定性运动在小时间步里按 Δt\Delta t 积累;随机运动不同,它积累的是方差。 如果每一步噪声写成 Δtzk\sqrt{\Delta t}z_k,单步方差就是 Δt\Delta t, 走 NN 步后的总方差是 NΔt=TN\Delta t = T,连续极限不会消失也不会爆炸。

关键洞察

确定性变化积累 displacement;随机变化积累 variance。

问题

Δtz\sqrt{\Delta t}z 为什么后来会写成 dWtdW_t

Brownian motion 的短时间增量满足:

Wt+ΔtWtN(0,Δt)W_{t+\Delta t}-W_t \sim \mathcal{N}(0,\Delta t)

Δtz\sqrt{\Delta t}z 也服从同一个分布。因此离散随机增量可以写成 ΔWt\Delta W_t, 连续极限中写作 dWtdW_t。这里的 dWtdW_t 不是普通可微函数的导数乘 dtdt, 而是一个尺度为 dt\sqrt{dt} 的随机增量。

问题

离散随机更新怎么变成 SDE?

Xt+ΔtXtc(t)XtΔt+g(t)ΔtzX_{t+\Delta t} - X_t \approx c(t)X_t\Delta t + g(t)\sqrt{\Delta t}z

Δtz\sqrt{\Delta t}z 换成 ΔWt\Delta W_t,连续极限就是:

dXt=c(t)Xtdt+g(t)dWtdX_t = c(t)X_tdt + g(t)dW_t

线性 SDE 的解可以写成 Xt=atX0+btϵX_t = a_tX_0 + b_t\epsilon, 因为无数次独立高斯扰动的线性组合仍然是一个高斯随机变量。

问题

既然 Diffusion 最终需要知道样本应该怎么移动,为什么不直接学速度场?

这就是 Flow Matching 的入口。它不先设计一个复杂反向 SDE, 而是人为构造一条从数据到噪声的简单路径,然后直接监督速度网络。

例如:

xτ=(1τ)x0+τϵx_\tau=(1-\tau)x_0+\tau\epsilon

则条件速度是:

uτ=ϵx0u_\tau = \epsilon - x_0
关键洞察

Flow Matching 不是记住每一条 noise-data 直线,而是用大量 conditional paths 监督出 marginal velocity field。

问题

这件事在 π₀.₅ action expert 里是什么?

机器人里生成对象不是图像像素,而是 future action chunk:

At=[at,at+1,,at+H1]A_t=[a_t,a_{t+1},\dots,a_{t+H-1}]

π₀.₅ action expert 学到的 velocity 不是机器人物理速度,而是 action chunk 在生成空间中从随机噪声流向合理动作的 probability-flow velocity。

问题

这会怎样影响机器人 demonstration 数据采集?

Flow Matching 的最优速度场可以写成条件期望:

v(x,o,,τ)=E[uτxτ=x,o,,τ]v^*(x,o,\ell,\tau)=\mathbb{E}[u_\tau \mid x_\tau=x,o,\ell,\tau]

所以数据采集真正定义的是:

pdata(Ao,)p_{\mathrm{data}}(A \mid o,\ell)

也就是给定 observation 和 subtask 后,哪些动作是合理的。

关键洞察

数据采集的目标不是盲目增加动作风格,而是扩大有意义的状态覆盖,并让给定条件下的动作结构尽量清晰。

下一个自然问题

这条链继续往下,最自然的前置概念是 Continuity Equation: 为什么 conditional velocity 的条件期望真的能推出正确的 marginal distribution?