Training Diffusion Models with Reinforcement Learning

Kevin Black, Michael Janner, Yilun Du, Ilya Kostrikov, S. Levine
2/12/2026

No official code found. Best implementation: kvablack/ddpo-pytorch (768 stars, MIT, last commit 2024-03-22). 1 more below.

Abstract

Diffusion models are a class of flexible generative models trained with an approximation to the log-likelihood objective. However, most use cases of diffusion models are not concerned with likelihoods, but instead with downstream objectives such as human-perceived image quality or drug effectiveness. In this paper, we investigate reinforcement learning methods for directly optimizing diffusion models for such objectives. We describe how posing denoising as a multi-step decision-making problem enables a class of policy gradient algorithms, which we refer to as denoising diffusion policy optimization (DDPO), that are more effective than alternative reward-weighted likelihood approaches. Empirically, DDPO is able to adapt text-to-image diffusion models to objectives that are difficult to express via prompting, such as image compressibility, and those derived from human feedback, such as aesthetic quality. Finally, we show that DDPO can improve prompt-image alignment using feedback from a vision-language model without the need for additional data collection or human annotation. The project's website can be found at http://rl-diffusion.github.io .

View on arXivView PDF

Code Implementations(2)

MIT

DDPO for finetuning diffusion models, implemented in PyTorch with LoRA support

76872PythonJun 24, 20232 years agoMIT
jannerm/ddpoCommunity67%
MIT

Code for the paper "Training Diffusion Models with Reinforcement Learning"

57335Shell, PythonMay 26, 20233 years agoMIT

Similar Papers

Cite this paper

@article{black2026training,
  title  = {Training Diffusion Models with Reinforcement Learning},
  author = {Kevin Black and Michael Janner and Yilun Du and Ilya Kostrikov and S. Levine},
  year   = {2026},
  eprint = {2305.13301},
  archivePrefix = {arXiv},
  url    = {https://arxiv.org/pdf/2305.13301},
  journal = {ICLR 2023 2023}
}

Add a badge to your README

Shows whether official code is linked for this paper.

Code of Paper badge
[![Code of Paper](https://codeofpaper.com/badge/2305.13301.svg)](https://codeofpaper.com/paper/2305.13301)

Discussion