Back to all posts
Distributional Distillation · A connection to RL

RL, OPD, VSD, and GANsOne Density Ratio, Different Updates

Start from a divergence between generated and target distributions. Different targets and gradient calculations connect policy gradients, mean MSE, diffusion scores, and GANs.

Fu-Yun Wang · · Mathematical notes
The connection
\(\underbrace{\log p-\log q_\theta}_{\text{a reward}}\;\xrightarrow{\;\nabla_x\;}\;\underbrace{s_p-s_q}_{\text{a direction}}\)

1. Why these updates are connected

A generator produces a distribution of outputs. Suppose we want that distribution to match a target. A divergence measures the mismatch:

\[ \min_\theta D(q_\theta\|p_{\rm target}). \] Student distribution \(q_\theta\), target distribution \(p_{\rm target}\), chosen divergence \(D\)

First choose what to match. Distillation uses a teacher distribution; GANs use the real data distribution. In KL-regularized RL, reward reshapes a reference distribution, giving higher-reward outputs more weight. Each specifies a target in a different way.

Next choose how to measure the mismatch. We will use reverse KL. With a suitable adversarial loss, GAN training can optimize this same divergence toward real data.

Finally choose how to compute the update. Evaluating probabilities lets us reward sampled outputs. Differentiating through outputs lets us move them toward lower loss. For Gaussian predictions with the same fixed variance, averaging the sampling noise gives a mean-squared-error gradient.

Choose the target, choose the divergence, then choose how to differentiate it.

We will follow these choices to connect policy gradients (REINFORCE / GRPO), On-Policy Distillation (OPD), Gaussian mean matching (DiffusionOPD), and sample movement using diffusion scores (VSD / DMD) or a discriminator (GAN).

Student \(q_\theta\) · Target \(p\) Match a student to a target
\(\mathcal L=\mathrm{KL}(q_\theta\|p)\)

Our working example: reverse KL to a chosen target.

Figure 1. Two ways to differentiate reverse KL: weight sampled outputs by a log ratio, or move continuous outputs using its gradient. With shared fixed variance, Gaussian KL is mean MSE, whose gradient also equals the expected policy gradient. Scores and discriminator logits provide directions for sample movement.

Notation: \(q_\theta\) is the student distribution, \(p_T\) the teacher, and \(p\) a fixed target. We hold the prompt fixed and assume the KLs and gradients are well-defined.

2. RL: improve the policy through a scalar reward

For a complete output \(x\) and fixed reward \(r(x)\), optimize the policy \(q_\theta\) to increase expected reward:

\[ J(\theta)=\mathbb E_{x\sim q_\theta}[r(x)]. \] \[ \begin{aligned} \nabla_\theta J &=\int r(x)\,\nabla_\theta q_\theta(x)\,dx\\ &=\mathbb E_{q_\theta}\!\left[r(x)\nabla_\theta\log q_\theta(x)\right]. \end{aligned} \] (1) The likelihood-ratio / REINFORCE identity

This is REINFORCE: sample outputs from the policy and use their rewards to weight the log-probability gradients. [1]

3. OPD: a teacher supplies an implicit reward

In On-Policy Distillation, the student generates responses and the teacher evaluates them. [2] Treat each complete response as one sample, and choose reverse KL between their distributions:

\[ \mathcal L_{\mathrm{OPD}}(\theta) =\mathrm{KL}(q_\theta\|p_T) =\int q_\theta(x)\log\frac{q_\theta(x)}{p_T(x)}\,dx. \] \[ \begin{aligned} \nabla_\theta\mathcal L_{\mathrm{OPD}} &=\int \nabla_\theta q_\theta(x) \left(\log\frac{q_\theta(x)}{p_T(x)}+1\right)dx\\ &=\mathbb E_{q_\theta}\!\left[ (\log q_\theta-\log p_T)\nabla_\theta\log q_\theta\right]. \end{aligned} \] (2) The +1 integrates to zero: \(\nabla_\theta\int q_\theta\,dx=0\)

Negate the loss to align with RL's maximization convention:

\[ \boxed{\nabla_\theta(-\mathcal L_{\mathrm{OPD}}) =\mathbb E_{q_\theta}\!\left[ \underbrace{\log p_T(x)-\log q_\theta(x)}_{r_{\rm implicit}(x)} \nabla_\theta\log q_\theta(x)\right].} \] (3) A teacher–student log ratio is a policy-gradient reward [3]

The teacher supplies the reward: \(\log p_T(x)-\log q_\theta(x)\). It is positive when the teacher assigns an output more probability than the student does.

The reward depends on \(\theta\), but its extra derivative averages to zero by the same normalization identity used in (2). In the sampled policy-gradient update, we therefore treat the reward as a fixed weight.

Token rewards, discounting, and practical OPD

For the full-response KL above, an early token affects the rest of the response. Its update therefore includes later rewards. Let \(h_k\) be the prefix before \(y_k\), and \(H\) the maximum response length including EOS; rewards after EOS are zero:

\[ r_k=\log\frac{p_T(y_k\mid h_k)}{q_\theta(y_k\mid h_k)}, \qquad R_k=\sum_{j=k}^{H}r_j. \] \[ \nabla_\theta(-\mathcal L_{\mathrm{OPD}}) =\mathbb E\!\left[\sum_{k=1}^{H} (R_k-b(h_k))\nabla_\theta\log q_\theta(y_k\mid h_k)\right]. \] (4) The full-response KL gradient includes future token rewards

The weight \(\hat A_k=R_k-b(h_k)\) is an advantage estimate: how much better or worse this continuation is than a reference score \(b(h_k)\). For example, return 8 against baseline 5 gives advantage \(+3\).

PPO learns a value function, or critic, to predict the remaining return and help estimate advantages. Its clipped surrogate objective weights new/old policy probability ratios by these advantages, limiting the incentive for large policy changes. [4]

GRPO keeps clipped policy optimization but replaces the learned critic with comparisons among responses to the same prompt. For outcome rewards, it subtracts the group's mean reward and divides by its standard deviation. [15]

Why is there no discount in (4)?

A discounted return would be

\[ R_k^{(\gamma)}=r_k+\gamma r_{k+1}+\gamma^2r_{k+2}+\cdots. \]

\(\gamma=1\) counts every later reward; \(\gamma=0\) keeps only the current reward. To see why the full-response KL uses \(\gamma=1\), write the probability of a response \(y=(y_1,\ldots,y_H)\) as a product:

\[ q_\theta(y)=\prod_{k=1}^{H}q_\theta(y_k\mid h_k), \qquad p_T(y)=\prod_{k=1}^{H}p_T(y_k\mid h_k). \] \[ \begin{aligned} \log\frac{p_T(y)}{q_\theta(y)} &=\log\prod_{k=1}^{H}\frac{p_T(y_k\mid h_k)}{q_\theta(y_k\mid h_k)}\\ &=\sum_{k=1}^{H}\log\frac{p_T(y_k\mid h_k)}{q_\theta(y_k\mid h_k)} =\sum_{k=1}^{H}r_k. \end{aligned} \] \[ R_k=\sum_{j=k}^{H}r_j =\log\frac{p_T(y_{k:H}\mid h_k)}{q_\theta(y_{k:H}\mid h_k)}. \]

Taking a log turns the product into a sum. Every token has weight one, so no discount appears. The same identity applied to the remaining response gives \(R_k\).

In practice, Thinking Machines Lab's OPD explicitly sets \(\gamma=0\). Each token's log-ratio \(r_k\) goes directly into the training code's advantages field. The authors report no improvement from including future rewards. [16]

4. KL-regularized RL defines a target distribution

In KL-regularized RL, we reward good outputs while keeping the policy close to a reference. For fixed reward \(r\), reference \(p_{\rm ref}\), and strength \(\beta>0\):

\[ J_\beta(\theta)=\mathbb E_{q_\theta}[r(x)] -\beta\,\mathrm{KL}(q_\theta\|p_{\rm ref}). \] \[ p^*(x)=\frac{p_{\rm ref}(x)e^{r(x)/\beta}}{Z}, \qquad Z=\int p_{\rm ref}(x)e^{r(x)/\beta}\,dx. \] (5) Assume \(0<Z<\infty\)

The target \(p^*\) is the reference distribution reweighted by reward. Substituting its log probability into KL gives

\[ \begin{aligned} \beta\,\mathrm{KL}(q_\theta\|p^*) &=\beta\,\mathrm{KL}(q_\theta\|p_{\rm ref}) -\mathbb E_{q_\theta}[r]+\beta\log Z,\\[2pt] \boxed{J_\beta(\theta)} &\boxed{=-\beta\,\mathrm{KL}(q_\theta\|p^*)+\beta\log Z.} \end{aligned} \] (6) An exact objective identity

KL-regularized RL is reverse-KL matching to a reward-weighted target. The term \(\beta\log Z\) is constant, so it does not affect the update. Choosing this target as the teacher makes the two objectives equivalent up to scale and a constant. [5]

5. Gaussian OPD: KL is mean MSE

For Gaussian predictions with the same fixed variance, KL already has a closed form. Fix the input, the teacher mean \(\mu_T\), and the shared noise scale \(\sigma>0\):

\[ q_\theta(a)=\mathcal N(\mu_\theta,\sigma^2I), \qquad p_T(a)=\mathcal N(\mu_T,\sigma^2I). \] \[ \boxed{\mathcal L(\theta)=\mathrm{KL}(q_\theta\|p_T) =\frac{\|\mu_\theta-\mu_T\|^2}{2\sigma^2}.} \] \[ \nabla_\theta\mathcal L =J_\mu^{\mathsf T}\frac{\mu_\theta-\mu_T}{\sigma^2}, \qquad J_\mu=\frac{\partial\mu_\theta}{\partial\theta}. \] (6a) Evaluate Gaussian KL directly, then differentiate the mean MSE

This gives a simple training objective: minimize the squared difference between the two means. We revisit policy gradient below to show that averaging its sampling noise recovers this same analytic gradient.

The same gradient from policy gradient

Equation (2) writes the KL gradient as \(\mathbb E[c_\theta(a)\nabla_\theta\log q_\theta(a)]\), where \(c_\theta=\log q_\theta-\log p_T\) is the log-ratio cost. Sample a Gaussian action:

\[ \delta=\mu_\theta-\mu_T,\quad a=\mu_\theta+\sigma\epsilon,\quad \epsilon\sim\mathcal N(0,I). \]

Substitute the sampled action into the log ratio, and compute the log-probability gradient with the action held fixed:

\[ \begin{aligned} c_\theta(a) &=\frac{\|a-\mu_T\|^2-\|a-\mu_\theta\|^2}{2\sigma^2}\\ &=\underbrace{\frac{\|\delta\|^2}{2\sigma^2}}_{C_\theta} +\frac{\delta^{\mathsf T}\epsilon}{\sigma},\\ \left.\nabla_\theta\log q_\theta(a)\right|_a &=J_\mu^{\mathsf T}\frac{\epsilon}{\sigma}. \end{aligned} \]

Multiply them and use \(\mathbb E[\epsilon]=0\), \(\mathbb E[\epsilon\epsilon^{\mathsf T}]=I\):

\[ \begin{aligned} \mathbb E[c_\theta\nabla_\theta\log q_\theta] &=J_\mu^{\mathsf T}\!\left( \frac{C_\theta}{\sigma}\mathbb E[\epsilon] +\frac{\mathbb E[\epsilon\epsilon^{\mathsf T}]\delta}{\sigma^2}\right)\\ &=\boxed{J_\mu^{\mathsf T}\frac{\mu_\theta-\mu_T}{\sigma^2}}\\ &=\boxed{\nabla_\theta\frac{\|\mu_\theta-\mu_T\|^2}{2\sigma^2}}. \end{aligned} \] (6b) Gaussian policy gradient = scaled mean-MSE gradient

One KL objective, two ways to compute its gradient. Direct differentiation of mean MSE gives the result immediately; the policy-gradient calculation explains its connection to OPD.

From transition means to diffusion predictions

In diffusion, apply this argument to the next-step prediction at a fixed sampled state. DiffusionOPD and Flow-OPD use Gaussian transition KL to obtain a weighted MSE between student and teacher predictions, then differentiate this loss directly. [10] [11]

If the transition mean is \(\mu_\theta(h,t)=b(h,t)+k(t)v_\theta(h,t)\), with shared fixed \(b,k,\sigma_t\), matching means becomes matching model predictions:

\[ \mathrm{KL}\big(q_\theta(\cdot\mid h,t)\|p_T(\cdot\mid h,t)\big) =\frac{k(t)^2}{2\sigma_t^2}\|v_\theta(h,t)-v_T(h,t)\|^2. \] (6c) Matching transition means becomes a weighted prediction MSE

This MSE matches one prediction at a fixed input. For a deterministic ODE step, direct MSE is a regression objective; the Gaussian KL derivation requires positive transition noise.

6. From rewarding samples to moving samples

In OPD, the log ratio tells us which outputs should become more likely. The Gaussian example showed that the same KL gradient can also be computed by directly adjusting the mean. Can we extend this idea to a continuous generator whose output distribution is not Gaussian?

Its KL may have no closed form, but we can differentiate through the generated sample. Keep the reverse-KL objective from Equation (2), with \(p\) as the fixed target, and write sampling as a differentiable function of random input \(z\):

\[ x=G_\theta(z),\qquad z\sim p_z, \qquad J_\theta(z)=\frac{\partial G_\theta(z)}{\partial\theta}. \]

This is reparameterization: changing \(\theta\) moves the sample \(x\), while the distribution of \(z\) stays fixed. Assume smooth positive densities, and define their scores as \(s_q=\nabla_x\log q_\theta\) and \(s_p=\nabla_x\log p\). Rewrite KL using \(x=G_\theta(z)\), then apply the chain rule:

\[ \begin{aligned} \mathcal L(\theta)&=\mathrm{KL}(q_\theta\|p)\\ &=\mathbb E_z\!\left[ \log q_\theta(G_\theta(z))-\log p(G_\theta(z))\right]. \end{aligned} \] \[ \nabla_\theta\mathcal L =\mathbb E_z\!\left[J_\theta^{\mathsf T}(s_q-s_p)\right] +\underbrace{\mathbb E_{x\sim q_\theta}\!\left[ \left.\partial_\theta\log q_\theta(x)\right|_x\right]}_{0}. \] (7) Differentiate through the generated sample

The extra term vanishes by normalization, just as in Equation (2). To reduce KL, backpropagate the target-minus-student score difference through the generator:

\[ \boxed{\nabla_\theta(-\mathcal L) =\mathbb E_z\!\left[J_\theta^{\mathsf T}(s_p-s_q)\right].} \] \[ \boxed{\nabla_x\underbrace{(\log p-\log q_\theta)}_{\text{implicit reward}} =\underbrace{s_p-s_q}_{\text{sample-space direction}}.} \] (8) The log-ratio gradient is the score difference

The log ratio tells us how to weight an output; its gradient tells us where to move it. For the same smooth continuous model, OPD's policy gradient and this sample-based calculation give the same expected parameter gradient. VSD / DMD and discriminator-based updates provide ways to estimate this movement direction, as we will see next.

Two views of a Gaussian student centered at minus one and a target centered at plus one. The scalar log ratio is 2x; its spatial gradient is a constant plus two, pointing every sample to the right.
Figure 2.For \(q=\mathcal N(-1,1)\) and \(p=\mathcal N(1,1)\), the log ratio is \(2x\). Left: larger \(x\) gets a higher reward. Right: its derivative \(+2\) points samples toward the target. Both views come from the same distribution mismatch.
Vector PDFFigure source
Watch the updates

7. VSD / DMD: match noisy marginals

VSD / DMD apply the same KL-to-score calculation at multiple noise levels. Add the same Gaussian noise process to generated and target images, giving distributions \(q_{\theta,t}\) and \(p_{T,t}\):

\[ x_t=\alpha_tG_\theta(z)+\sigma_t\epsilon, \qquad \epsilon\sim\mathcal N(0,I), \] \[ \boxed{\mathcal L_{\rm noisy}(\theta) =\mathbb E_{t\sim\rho}\!\left[ w(t)\,\mathrm{KL}(q_{\theta,t}\|p_{T,t})\right].} \] (9) Fixed \(\rho\), nonnegative \(w(t)\), and \(\sigma_t>0\) at sampled noise levels
Three exact Gaussian-mixture plots of the same clean student and target after adding noise with standard deviation 0.12, 0.65, and 1.40. Fine separated modes become smoother and more overlapping at larger noise levels.
Figure 3.The same generated and target images at three noise levels. Low noise preserves fine structure; higher noise smooths it. Matching across levels compares both fine and broad structure.
Vector PDFFigure source

Apply Equation (7) at each noise level. With \(s_{q,t}=\nabla_{x_t}\log q_{\theta,t}\), \(s_{T,t}=\nabla_{x_t}\log p_{T,t}\), and \(\partial_\theta x_t=\alpha_tJ_\theta\):

\[ \boxed{\nabla_\theta\mathcal L_{\rm noisy} =\mathbb E_{t,z,\epsilon}\!\left[ w(t)\alpha_tJ_\theta^{\mathsf T} \big(s_{q,t}(x_t)-s_{T,t}(x_t)\big)\right].} \] (10) Loss gradient; gradient descent uses its negative

The teacher supplies the target score; an auxiliary denoiser trained on student outputs estimates the student score. VSD backpropagates their difference through a renderer to optimize 3D scenes; DMD backpropagates through an image generator. [6] [7] [8]

For the full derivation, see From a Marginal KL to Two Scores. For score estimation and the additional losses used by DMD / DMD2, see What SDS, VSD, and DMD Actually Estimate. [9]

8. GANs: learn the ratio, then differentiate it

VSD / DMD obtain a direction for moving samples from two score estimates. A GAN discriminator offers another route: learn the log ratio from real and generated examples, then differentiate it to obtain the score difference in Equation (8).

Start with the original minimax GAN losses. The discriminator \(D_\psi\) classifies real samples from \(p\) and generated samples from \(q_\theta\), with equal class weights; the generator tries to fool it: [12]

\[ \mathcal L_D(\psi) =-\mathbb E_p[\log D_\psi(x)] -\mathbb E_{q_\theta}[\log(1-D_\psi(x))], \] \[ \mathcal L_G^{\rm minimax}(\theta) =\mathbb E_z[\log(1-D_\psi(G_\theta(z)))]. \] (11) Alternately minimize each loss, holding the other network fixed

For a fixed generator, the optimal classifier is \(D^*=p/(p+q_\theta)\). Its logit, \(f=\log[D/(1-D)]\), therefore gives the log ratio:

\[ f^*(x)=\operatorname{logit}D^*(x) =\log\frac{D^*(x)}{1-D^*(x)} =\log p(x)-\log q_\theta(x), \] \[ \boxed{\nabla_x f^*(x)=s_p(x)-s_q(x).} \] (12) Learn a scalar density ratio; differentiate it to obtain the score difference

We can now read the generator update from the same score perspective as VSD / DMD. Freeze the discriminator's parameters and differentiate through its input. Since \(D=\operatorname{sigmoid}(f)\):

\[ \nabla_x\log(1-D(x))=-D(x)\,\nabla_x f(x). \]

At the optimal discriminator for the current generator, substitute Equation (12) and backpropagate through \(x=G_\theta(z)\). Under the smooth-density assumptions from Section 6, we obtain:

\[ \boxed{\nabla_\theta\mathcal L_G^{\rm minimax} =-\mathbb E_z\!\left[ J_\theta^{\mathsf T}D^*(x)(s_p(x)-s_q(x))\right].} \] (13) The minimax generator gradient, written using scores

Keep the same discriminator training, but change the generator loss to the negative logit. Its derivative removes the \(D(x)\) factor:

\[ \mathcal L_G^{\rm ratio}=-\mathbb E_z[f(G_\theta(z))], \] \[ \nabla_x[-f(x)]=-\nabla_x f(x), \] \[ \boxed{\nabla_\theta\mathcal L_G^{\rm ratio} =-\mathbb E_z\!\left[ J_\theta^{\mathsf T}(s_p(x)-s_q(x))\right].} \] (14) The negative-logit generator gradient at the same ideal discriminator

Both updates move samples using the same score difference; the generator loss determines the weight. At the ideal current discriminator, the weighted form corresponds to the gradient of \(2\,\mathrm{JS}(p\|q_\theta)\), as follows from the original GAN's minimax result, while the unweighted form recovers the reverse-KL gradient in Equation (8). [12, §4.1]

9. Implementation: where gradients flow

The examples below implement OPD's reward-weighted update, VSD / DMD's score-based update, and GAN's discriminator-based update.

Three short gradient examples

Policy gradient

# x is sampled from exactly q_theta, with no sampling gradient.
# Sum response-token log probabilities, including EOS; mask padding.
logq = student_log_prob(x)
logp = teacher_log_prob(x)
reward = (logp - logq).detach()
loss_pg = -(reward * logq).mean()
loss_pg.backward()

Sample from the current student. Use the full response log probabilities and detach the reward weight.

Score distillation

# Generator update: both score estimates are evaluated, then detached.
x0 = generator(z)
xt = alpha * x0 + sigma * noise
with no_grad():
    grad_xt = w * (fake_score(xt, t) - teacher_score(xt, t))
loss_dm = (grad_xt * xt).flatten(1).sum(1).mean()
loss_dm.backward()  # d xt / d theta supplies alpha * the generator Jacobian

Train the auxiliary denoiser separately. During the generator update, detach the score difference and backpropagate through \(x_t\). The code supplies the KL gradient, not its scalar value.

Discriminator feedback

# Generator step: freeze discriminator parameters, keep its input gradient.
discriminator.eval()
for parameter in discriminator.parameters():
    parameter.requires_grad_(False)
x = generator(z)
loss_ratio = -discriminator.logit(x).mean()
loss_ratio.backward()  # backpropagate through discriminator INTO x
# Restore training mode and parameter gradients for the discriminator update.

Freeze discriminator parameters, but keep its input gradient so the generator receives the update.

10. A compact map of the connection

ViewTraining signalUpdate
Policy gradient / discrete OPDExternal reward or teacher–student log ratioWeight \(\nabla_\theta\log q_\theta\) by a scalar return
Gaussian OPDLocal KL with shared fixed covarianceAnalytic mean-MSE gradient
VSD / DMDScores of noisy output distributionsBackpropagate a two-score field
GAN / discriminatorA learned log-density ratioBackpropagate the logit, weighted by the generator loss

For a new method, ask which distribution it compares, which loss it minimizes, and how it computes the gradient.

Numerical checks cover sequence gradients, Gaussian PG-to-MSE, entropy, noisy scores, and GAN losses using quadrature and finite differences.

References

[1] Ronald J. Williams. Simple statistical gradient-following algorithms for connectionist reinforcement learning. Machine Learning 8, 229–256, 1992. The REINFORCE estimator.

[2] Rishabh Agarwal, Nino Vieillard, Yongchao Zhou, Piotr Stanczyk, Sabela Ramos, Matthieu Geist, and Olivier Bachem. On-Policy Distillation of Language Models: Learning from Self-Generated Mistakes. ICLR 2024. See §3.1 for GKD and §5 for the distinction from sequence-level policy-gradient distillation.

[3] Yuxian Gu, Li Dong, Furu Wei, and Minlie Huang. MiniLLM: Knowledge Distillation of Large Language Models. ICLR 2024; linked to the conference-era v2. See §2.1–2.2 and Appendix A.2–A.3 for reverse KL, policy gradient, and future-reward decomposition.

[4] John Schulman, Filip Wolski, Prafulla Dhariwal, Alec Radford, and Oleg Klimov. Proximal Policy Optimization Algorithms. 2017. See §3 for the clipped surrogate objective.

[5] Rafael Rafailov, Archit Sharma, Eric Mitchell, Stefano Ermon, Christopher D. Manning, and Chelsea Finn. Direct Preference Optimization: Your Language Model is Secretly a Reward Model. NeurIPS 2023. See §4 and Appendix A.1 for the reward-tilted optimal policy and KL rearrangement.

[6] Zhengyi Wang, Cheng Lu, Yikai Wang, Fan Bao, Chongxuan Li, Hang Su, and Jun Zhu. ProlificDreamer: High-Fidelity and Diverse Text-to-3D Generation with Variational Score Distillation. NeurIPS 2023. See §3 and Appendix C for the distribution over scene parameters and its particle update.

[7] Weijian Luo, Tianyang Hu, Shifeng Zhang, Jiacheng Sun, Zhenguo Li, and Zhihua Zhang. Diff-Instruct: A Universal Approach for Transferring Knowledge From Pre-trained Diffusion Models. NeurIPS 2023. See §3 for integral KL and the generator gradient.

[8] Tianwei Yin, Michaël Gharbi, Richard Zhang, Eli Shechtman, Fredo Durand, William T. Freeman, and Taesung Park. One-step Diffusion with Distribution Matching Distillation. CVPR 2024. See §3.2–3.4 and Appendix F for the two-score update, regression term, and guidance.

[9] Tianwei Yin, Michaël Gharbi, Taesung Park, Richard Zhang, Eli Shechtman, Fredo Durand, and William T. Freeman. Improved Distribution Matching Distillation for Fast Image Synthesis. NeurIPS 2024. DMD2: critic update timescales, removal of paired regression, and adversarial training.

[10] Quanhao Li et al. DiffusionOPD: A Unified Perspective of On-Policy Distillation in Diffusion Models. 2026. See §3.2, Eqs. (10)–(12), for Gaussian transition KL and the separate deterministic regression objective; §3.3 discusses gradient estimators.

[11] Zhen Fang et al. Flow-OPD: On-Policy Distillation for Flow Matching Models. 2026. See §5.1.1, Eqs. (10)–(12) and (15), for Gaussian transition KL and direct optimization of weighted prediction MSE.

[12] Ian J. Goodfellow et al. Generative Adversarial Nets. NeurIPS 2014. Proposition 1 gives the optimal discriminator; §4.1 connects the minimax game to Jensen–Shannon divergence.

[13] Sebastian Nowozin, Botond Cseke, and Ryota Tomioka. f-GAN: Training Generative Neural Samplers using Variational Divergence Minimization. NeurIPS 2016. A variational framework for adversarial training with different f-divergences.

[14] Ian Goodfellow. NIPS 2016 Tutorial: Generative Adversarial Networks. 2017. See §3.2 and §8.1 for generator objectives and supervised density-ratio estimation.

[15] Zhihong Shao et al. DeepSeekMath: Pushing the Limits of Mathematical Reasoning in Open Language Models. 2024. See §4.1 for GRPO's clipped surrogate and group-relative advantage estimates.

[16] Kevin Lu and Thinking Machines Lab. On-Policy Distillation. October 27, 2025. See “Loss function: reverse KL” for the zero discount factor and “Pseudocode” for per-token log-ratio weights.