跳转至

Diff-Instruct Distillation

Info

创建时间:2025-12-9 | 更新时间:2025-12-11

本文基于Diff-Instruct : A Universal Approach for Transferring Knowledge From Pre-trained Diffusion Models 做笔记

主要贡献

本文提出一个训练好的Diffusion模型本身就是一种资产,提出了从这个Diffusion Model迁移到任意隐式生成模型的方法,如GAN 等生成模型。因为Diffusion的推理过程太慢了,迁移到其他隐式生成模型上采样会快很多。

主要的方法是使用一个助教模型来学习隐式生成模型的分布,然后要求助教模型和预训练的DM模型在分数上匹配。然后将梯度反向传递给隐式生成模型,来调整其生成的分布。

Note

符号约定:

训练好的模型在时间 t 的分数为 \(s_{q^{(t)}}(x_t)\)

隐式生成器为 \(g_{\theta}\)

助教模型给定隐状态和时间步输出分数 \(s_{\phi}(x_t,t)\)

image-20251211100956743

核心公式

image-20251209192506158

交替学习过程,使用分数匹配先训练助教模型,确定他学习到了隐式生成器的分布。

再要求助教模型和预训练模型在同一隐状态下的分数匹配。用这个分数的loss来更新生成器,调整生成的分布。

数学推导

image-20251209191434160

给定两个分布p,q,两者的IKL散度,即KL散度关于时间积分的项如上。

实际上就是计算不同加噪程度下的KL散度,再加一个关于时间的权重项积分。

容易得到IKL散度的更新梯度:

image-20251209205805897

image-20251209205821747

原文中提到SDS,当生成器的输出为具有可学习参数的狄拉克分布,梯度公式变为上图。无需使用助教模型来预测分数。我的理解就是生成器输出的中间状态也是一张具体图片或者说一个具体的数据点的时候可以直接估计出分数,不需要助教模型。这个取决于隐式生成模型的隐状态,如果是Diffusion类的应该就没问题。