完整题目
DDPM 训练时如何利用 q(x_t|x_0) 的闭式边缘,一步构造任意时间步的噪声状态 x_t?为什么不需要顺序执行完整前向加噪链,随机采样 t 又如何估计全部时间步的训练目标?
本文目录
根本原因:目标可按时间步取期望
DDPM前向过程有闭式边缘分布:
x_t = sqrt(alpha_bar_t) x_0 + sqrt(1-alpha_bar_t) epsilon, epsilon~N(0,I)
因此给定 x_0 和任意 t,可直接构造 x_t,无需真的从1到t顺序加噪。标准简化目标可写成对数据、噪声和时间步的期望:
E_{x0,t,epsilon}[||epsilon - epsilon_theta(x_t,t)||^2]
训练时为每个样本采一个 t,就是这个期望的Monte Carlo估计。均匀采样对应常见目标;若非均匀采样,则要按所优化目标做适当重加权。一个batch不需要也不保证覆盖所有时间步,长期采样才形成覆盖。
为什么不训练整条链
逐步生成全部 x_1...x_T 再反传会重复计算并占用更多时间和内存,却不是估计该分解目标的必要条件。每次训练也不是“一张图同时得到1000个独立样本”,更不能说数据量机械翻1000倍。共享网络通过timestep条件在不同噪声水平上学习。