题目重点:明确scale参数化,解释条件强度与多样性的取舍。
题意与假设
这道练习题保留了面经中值得训练的核心约束,并将需要澄清的条件单独列出。现场拿到变体时,先和面试官确认这些条件。
- x_t为同一噪声时刻状态;s_c=∇logp(x_t|c)、s_u=∇logp(x_t)。
- 训练时随机drop条件以学习条件/无条件预测;guidance scale约定g,g1为条件预测、g0无条件。
解题路线
- Bayes给∇logp(c|x_t)=s_c−s_u,常数p(c)无x梯度。受引导score可写s_g=s_u+g(s_c−s_u)。
- 若模型输出epsilon,采用一致参数化ε_g=ε_u+g(ε_c−ε_u),不要混合不同t、不同noise或不同输出类型。论文常写(1+w)ε_c−wε_u,对应g=1+w。
- 每步需条件与无条件预测,可拼batch但计算/显存不是免费。增加g通常加强条件约束,需评估质量/多样性与失真,不能保证越大越好;近似score也不保证精确采样某个简单幂密度。
手动走一遍
ε_u=(1,2),ε_c=(3,1),g2得(5,0);g1为(3,1),g0为(1,2)。若条件本来缺失,条件/无条件相同则任意g都不改变结果,这是实现不变量。
规模与取舍
K采样步通常约2K次网络评估或K次双batch调用;吞吐、显存和延迟取决于batch与模型,不能只看调用次数。
易错点与追问
容易失分的边界
- CFG不是另训练一个分类器;classifier guidance才直接用分类器梯度。
- 不同库scale同名可能对应不同参数化,先写等式再谈取值。
继续深挖
- 训练drop概率太高或太低对两路估计可能有什么影响?
- 怎样评估高guidance造成覆盖降低、过饱和或细节伪影?
技术参考
- Classifier-Free Diffusion Guidance:技术语义参考,具体题目按本文约定。
