Skip to content
huc
Go back

SiD:用得分恒等式蒸馏单步生成器

目录 1 / 5

《生成扩散模型漫谈(二十五):基于恒等式的蒸馏(上)》 —— 苏剑林
《生成扩散模型漫谈(二十六):基于恒等式的蒸馏(下)》 —— 苏剑林

不采教师样本,改为匹配得分

设教师扩散模型的噪声预测器为 ϵφ\epsilon_{\varphi^*},单步学生生成器为 x0(g)=gθ(z)x_0^{(g)}=g_\theta(z)zN(0,I)z\sim\mathcal N(0,I)。对学生样本加噪:

xt(g)=αˉtgθ(z)+βˉtε,εN(0,I).(1)x_t^{(g)}=\bar\alpha_t g_\theta(z)+\bar\beta_t\varepsilon, \qquad \varepsilon\sim\mathcal N(0,I). \tag{1}

教师预测器在真实数据分布上训练,不能直接给出学生加噪分布 pθ(xt(g))p_\theta(x_t^{(g)}) 的得分。因此再训练一个学生 Denoiser ϵψ\epsilon_\psi

LD(ψ)=Ez,ε,tϵψ(xt(g),t)ε2.(2)\mathcal L_D(\psi) =\mathbb E_{z,\varepsilon,t} \left\|\epsilon_\psi(x_t^{(g)},t)-\varepsilon\right\|^2. \tag{2}

若对当前 θ\theta 把它优化到最优,则

ϵψ(x,t)=βˉtxlogpθ(x).\epsilon_{\psi^*}(x,t) =-\bar\beta_t\nabla_x\log p_\theta(x).

同理教师满足 ϵφ(x,t)=βˉtxlogpdata,t(x)\epsilon_{\varphi^*}(x,t)=-\bar\beta_t\nabla_x\log p_{\text{data},t}(x)。让两者在学生样本上接近,就在匹配两种加噪分布的得分:

L1(θ)=Ez,ε,tϵφ(xt(g),t)ϵψ(xt(g),t)2.(3)\mathcal L_1(\theta) =\mathbb E_{z,\varepsilon,t} \left\| \epsilon_{\varphi^*}(x_t^{(g)},t) -\epsilon_{\psi^*}(x_t^{(g)},t) \right\|^2. \tag{3}

该方案不需要教师逐步生成训练对,也不需要教师的原始训练集;但与 GAN 一样,实践只能交替更新 ψ\psiθ\thetaψ\psi 未必达到最优,并且通常会错误地把随 θ\theta 变化的 ψ(θ)\psi^*(\theta) 当作常数。

得分恒等式从哪里来

对任意只通过 xtx_t 依赖样本的向量函数 f(xt,t)f(x_t,t),条件得分匹配给出

E[f(xt,t),ϵψ(xt,t)]=E[f(xt,t),ε].(4)\mathbb E\left[ \left\langle f(x_t,t),\epsilon_{\psi^*}(x_t,t)\right\rangle \right] =\mathbb E\left[ \left\langle f(x_t,t),\varepsilon\right\rangle \right]. \tag{4}

原因是最优噪声预测器等于条件期望 E[εxt]\mathbb E[\varepsilon\mid x_t]。按全期望公式,

Ef(xt),E[εxt]=Ef(xt),ε.\mathbb E\langle f(x_t),\mathbb E[\varepsilon\mid x_t]\rangle =\mathbb E\langle f(x_t),\varepsilon\rangle.

恒等式只在整体期望下成立,并不表示对每个样本都有 ϵψ(xt,t)=ε\epsilon_{\psi^*}(x_t,t)=\varepsilon。此外,ff 必须是 xtx_t 的函数;若先求导后某一因子不再满足这个条件,便不能机械替换。

恒等变换削弱对在线 Denoiser 的依赖

展开公式 (3)

ϵφϵψ2=ϵφϵψ,ϵφϵψ.\|\epsilon_{\varphi^*}-\epsilon_{\psi^*}\|^2 =\langle \epsilon_{\varphi^*}-\epsilon_{\psi^*}, \epsilon_{\varphi^*}-\epsilon_{\psi^*} \rangle.

选择其中一个满足条件的 ϵψ\epsilon_{\psi^*},用公式 (4) 替换成已知采样噪声 ε\varepsilon,可构造改进目标

L2(θ)=Eϵφ(xt(g),t)ϵψ(xt(g),t),ϵφ(xt(g),t)ε.(5)\mathcal L_2(\theta) =\mathbb E \left\langle \epsilon_{\varphi^*}(x_t^{(g)},t)-\epsilon_{\psi}(x_t^{(g)},t), \epsilon_{\varphi^*}(x_t^{(g)},t)-\varepsilon \right\rangle. \tag{5}

ψ=ψ\psi=\psi^* 时,它与原目标共享正确期望;实际交替训练中,它只出现一次 ϵψ\epsilon_\psi,因而对在线 Denoiser 的近似误差更不敏感。这是稳定性的来源,不是说消除了双层优化。

SiD 实际使用

LSiD=L2λL1.(6)\mathcal L_{\text{SiD}} =\mathcal L_2-\lambda\mathcal L_1. \tag{6}

负的 L1\mathcal L_1 不是通常意义上的“再做一次得分匹配”,而是调整生成器梯度中不同路径的系数。

先变换再求导与先求导再变换

下篇的关键是:公式 (4) 在函数值层面成立,但求 θ\theta 梯度时,ϵψ\epsilon_{\psi^*} 同时通过输入 xt(g)x_t^{(g)} 和最优参数 ψ(θ)\psi^*(\theta) 依赖 θ\theta。将全导数拆开:

θϵψ(θ)(xt(g),t)=Jxϵψθxt(g)输入路径+Jψϵψθψ最优响应路径.(7)\nabla_\theta\epsilon_{\psi^*(\theta)}(x_t^{(g)},t) =\underbrace{J_x\epsilon_{\psi^*}\,\nabla_\theta x_t^{(g)}}_{\text{输入路径}} +\underbrace{J_\psi\epsilon_{\psi^*}\,\nabla_\theta\psi^*}_{\text{最优响应路径}}. \tag{7}

交替训练通常保留第一项、忽略第二项。先做恒等变换再求导,与先对平方范数求导后再对合法因子应用恒等式,会产生不同的系数。FGM 从分布生成流的目标梯度出发,得到的组合对应 λ=1/2\lambda=1/2;它抵消的是由于 stop-gradient 近似带来的特定重复项。

另一种把目标看成“教师与学生得分差对生成样本的推动方向”的推导,可得到 λ=1\lambda=1 的解释。两者并不说明所有 λ\lambda 等价,而是说明不同代理目标在理想条件下对应不同的梯度分解。实际 ϵψ\epsilon_\psi 未达最优时,仍需把 λ\lambda 当作稳定性和偏差之间的超参数。

训练时真正维护的三套模型

教师 ϵφ\epsilon_{\varphi^*} 固定;学生 Denoiser ϵψ\epsilon_\psi 用公式 (2) 拟合当前学生分布;生成器 gθg_\theta 用公式 (6) 更新。每次生成器更新时应冻结两套 Denoiser 参数,但保留从它们的输出经 xt(g)x_t^{(g)} 回到生成器的输入梯度。

三套同量级网络带来较高显存占用。用 LoRA 表示额外 Denoiser 可以节省参数,但不能改变方法对在线估计学生得分的依赖。SiD 的收益是省掉教师多步采样,代价则是交替优化和更复杂的梯度路径。