Diffusion 三种预测目标:epsilon、sample、v prediction
在 3D Diffusion Policy 这类动作生成模型里x不是图像而是一段动作轨迹。例如x0: [B, horizon, action_dim]但数学原理和图像 diffusion 是一样的。1. 前向加噪过程先定义x0 干净样本例如专家动作轨迹epsilon 标准高斯噪声epsilon ~ N(0, I)t diffusion timestepxt 第 t 步加噪后的样本前向过程可以写成xt alpha_t * x0 sigma_t * epsilon通常alpha_t sqrt(alpha_bar_t)sigma_t sqrt(1 - alpha_bar_t)并且常见情况下alpha_t^2 sigma_t^2 1直观理解t 小alpha_t 大sigma_t 小xt 更像 x0t 大alpha_t 小sigma_t 大xt 更像 noise训练时模型输入一般都是model(xt, t, condition)区别只在于模型输出被监督成什么。2. epsilon prediction预测噪声原理epsilon prediction让模型预测前向过程中加入的噪声epsilon_pred model(xt, t, condition)target epsilonloss MSE(epsilon_pred, epsilon)如果知道xt和epsilon_pred就可以反推出干净样本x0_pred (xt - sigma_t * epsilon_pred) / alpha_t所以模型虽然直接预测的是噪声但 scheduler 可以用它得到x0_pred再继续反向去噪。直觉模型在回答这个 noisy sample 里面哪些成分是噪声推理时从纯噪声开始模型一步步预测并移除噪声。优点最经典DDPM/DDIM 早期和大量 baseline 都使用这种方式。数学推导和工程实现最常见。高噪声阶段比较自然因为xt本来就接近噪声。很多 scheduler、论文、代码默认支持。缺点优化目标和最终想要的x0是间接关系。低噪声阶段xt已经很接近x0但模型仍然要预测完整的标准高斯噪声目标不一定最自然。对动作轨迹这种低维连续控制任务直接预测噪声有时不如直接预测动作直观。3. sample prediction预测干净样本 x0原理sample prediction让模型直接预测干净样本x0_pred model(xt, t, condition)target x0loss MSE(x0_pred, x0)如果知道xt和x0_pred可以反推出噪声epsilon_pred (xt - alpha_t * x0_pred) / sigma_t所以它和 epsilon prediction 信息等价知道一个就能算出另一个。直觉模型在回答这个 noisy sample 对应的干净样本应该是什么在 DP3 中默认配置是prediction_type: sample也就是模型直接学习noisy action trajectory - clean expert action trajectory优点目标最直观最终要什么就直接预测什么。对动作轨迹、状态轨迹等低维连续数据很自然。低噪声阶段比较容易因为xt已经接近x0。在强条件生成任务中常常合理例如已知点云和机器人状态后生成动作。缺点高噪声阶段更难因为此时xt几乎是纯噪声却要求模型直接预测x0。不同 timestep 的难度差异明显低噪声步容易高噪声步困难。如果条件不够强或数据分布多峰高噪声阶段直接预测x0可能更容易平均化。4. v prediction预测速度变量 v原理v_prediction不直接预测噪声也不直接预测干净样本而是预测一个线性组合v alpha_t * epsilon - sigma_t * x0配合前向过程xt alpha_t * x0 sigma_t * epsilon可以写成矩阵形式[ xt ] [ alpha_t sigma_t ] [ x0 ][ v ] [ -sigma_t alpha_t ] [ epsilon ]如果alpha_t^2 sigma_t^2 1这个矩阵可以看成旋转矩阵。因此(xt, v)只是(x0, epsilon)的另一种坐标表示没有丢失信息。知道xt和v_pred后可以恢复x0_pred alpha_t * xt - sigma_t * v_predepsilon_pred sigma_t * xt alpha_t * v_pred训练时v_pred model(xt, t, condition)target alpha_t * epsilon - sigma_t * x0loss MSE(v_pred, target)为什么叫 velocity如果令alpha_t cos(theta)sigma_t sin(theta)那么xt cos(theta) * x0 sin(theta) * epsilon对theta求导d xt / d theta -sin(theta) * x0 cos(theta) * epsilon也就是d xt / d theta alpha_t * epsilon - sigma_t * x0 v所以v可以理解为样本沿着加噪轨迹变化时的速度方向。直觉模型在回答当前 xt 沿着 diffusion 轨迹应该往哪个方向走它不是纯噪声也不是纯数据而是二者随 timestep 改变的混合目标。两个极端低噪声阶段alpha_t ≈ 1sigma_t ≈ 0xt ≈ x0v ≈ epsilon这时v_prediction接近epsilon prediction。高噪声阶段alpha_t ≈ 0sigma_t ≈ 1xt ≈ epsilonv ≈ -x0这时v_prediction接近负的sample prediction。因此它是一种折中参数化

相关新闻