SFT and RL are two directions of the same KL
Up to a constant, SFT minimizes forward KL and RL minimizes reverse KL. That single fact explains most of how they differ in practice.
For distributions and :
For LLMs these are distributions over completions. The key difference is what you sample from to take the expectation: your dataset (offline) or the model itself (on-policy).
SFT ≈ forward KL
Call the data distribution , so an SFT example is . The training objective is negative log-likelihood:
and
The right-hand side is the SFT objective, so minimizing either gives the same result.
RL ≈ reverse KL
With current policy and reference policy , we maximize
from which
This is the reverse KL relative to the SFT expression, and equals the RL objective up to a constant and a factor of . Note the KL inside the RL objective is a regularization term — unrelated to the KL we are showing the objective is equivalent to.
Mode-covering vs. mode-seeking
SFT is mode-covering. The model is punished for assigning low probability to any completion in the data, so it spreads mass across every mode present. Because NLL blows up as probability approaches zero, the loss grows exponentially if the model nearly rules out something in the dataset.
RL is mode-seeking. It maximizes reward on on-policy completions, so it concentrates on high-reward outputs even at the cost of abandoning modes entirely. Assigning near-zero probability to a completion just means that completion stops being sampled — no exponential penalty. Reward can still be maximized over whatever remains covered.
Following “SFT, RL, and On-Policy Distillation Through a Distributional Lens.”
PPO → GRPO
If PPO is already familiar, GRPO is two changes:
- No value function. The advantage no longer uses a critic — the network that takes a state and estimates return, whether as a separate model or a second head sharing a trunk with the actor. GRPO replaces it by normalizing rewards over a group of samples: current reward minus the group mean, divided by the group standard deviation.
- The grouping itself. Draw several samples from the same old policy, evaluate them as a group, then update. This smooths out reward variance in stochastic environments.
The elegance shows up in contextual-bandit-style setups with a direct single-step reward, where PPO forces you to train a critic on the fly against data generated by the agent’s own interaction. GRPO removes that second network entirely and works with the reward directly.
Two framings I want to keep straight:
- Clipping is a surrogate for the trust region. It bounds how far the update can move, standing in for an explicit constraint.
- The policy ratio is an importance sampling weight. Clipping bounds that ratio (new policy over old) to stop destabilizing updates.
Reference: PPO vs GRPO.
Adapter landscape
Worth keeping the family straight: full SFT, direct preference optimization, PEFT methods (LoRA and relatives), and GRPO-style RL all solve different problems, and the choice depends on whether you have preferences, verifiable rewards, or just demonstrations.