The reward model was always the weak part
Standard RLHF learns a reward model from human preference pairs and optimises the policy against it. The reward model is a neural network trained on finite data, so it is wrong somewhere — and policy optimisation is an efficient search for exactly the places where it is wrong and generous. Push hard enough and the policy stops maximising quality and starts maximising 's error, which is Goodhart's law with a gradient.
The countermeasure is a KL leash back to the reference policy, which caps the damage by capping how far the policy may travel — and therefore caps how much it can learn. You are trading optimisation pressure against reward-model reliability, and you cannot have much of either.
RLVR removes the trade by removing the model. In domains where correctness can be checked, replace with a program:
where verify compares against a ground-truth answer, runs a test suite, or type-checks a proof. It has no parameters, no training set and no generalisation gap. It cannot be flattered by a plausible-sounding wrong answer, which is the specific failure a learned reward model is most prone to. DeepSeek state the reasoning bluntly: they abstain from neural reward models — outcome or process — because they are "susceptible to reward hacking during large-scale reinforcement learning".
What it costs
- The domain shrinks to the checkable. Mathematics with a closed-form answer, code with tests, formal proofs. Not essays, not tone, not taste, not advice.
- The signal gets much sparser. One bit, at the end of a trajectory that may run to ten thousand tokens. §09 is about that.
- The checker becomes the specification — and anything it accepts, the policy is entitled to do. §11 is about that.
The bet is that reasoning learned on checkable problems transfers to unentailed ones. It partly does, which is interesting, and nobody has a clean account of why.
From REINFORCE to a clipped surrogate
Treat generation as a bandit problem over whole completions: sample , receive , maximise the expectation
whose gradient is the score-function estimator:
Usable in principle, unusable in practice: the variance is enormous, and every sample must come from the current policy, so a batch of expensive rollouts buys exactly one update. Two fixes carry the whole field.
Subtract a baseline. For any independent of , , so replacing with the advantage leaves the gradient unbiased while cutting variance. What you choose for is what separates the algorithms.
Reuse the batch. Importance-weight against the sampling policy and clip the ratio so a single batch survives several epochs without the update walking away from the data that justified it:
PPO's baseline is a learned value network , trained alongside the policy. For a 32B policy that means a second 32B-scale model in memory, its own optimiser state, and its own failure modes — and it must estimate the value of a half-finished chain of thought, which is a hard regression problem in its own right. GRPO's contribution is noticing that in this setting you do not need it.
The group is the baseline
Sample completions for the same prompt. Their mean reward is an unbiased, prompt-conditioned estimate of — exactly the quantity the critic was there to predict — obtained for free from rollouts you had to run anyway. That is the whole idea.
The objective
For a group drawn from for prompt :
with the group-relative advantage, shared by every token of completion :
Two details in that pair of equations are load-bearing and easy to miss. The advantage carries no index — every token in a completion receives the same credit, which is where §09 begins. And the length normalisation together with the denominator are exactly the two terms later shown to be biased (§08).
The KL term
GRPO adds the KL penalty directly to the loss rather than folding it into the reward, and estimates it with Schulman's low-variance unbiased estimator — the one usually called :
It is non-negative for every sample, unlike the naive estimator, which is why it behaves under Monte-Carlo estimation at the sample sizes RL can afford.
What it saves
| PPO | GRPO | |
|---|---|---|
| Policy | ✓ | ✓ |
| Reference | ✓ | ✓ |
| Critic | ✓ trained | none |
| Reward model | ✓ trained | a program |
| Baseline from | group mean | |
| Rollouts/prompt | 1 | G |
GRPO trades memory for samples: it removes two large networks and pays for the baseline with G× the generation. Given that generation is already the dominant cost (§12), that is not obviously a bargain — it is a bargain because the critic was also bad at valuing partial reasoning chains.
What "verifiable" is actually doing
A verifier is a total function from (problem, candidate) to a bit, cheap enough to run millions of times and correct often enough that its errors do not become the objective. All three requirements bind.
| Domain | Verifier | Cost | Characteristic failure |
|---|---|---|---|
| Arithmetic / short answer | Exact string match after normalisation | Microseconds | False negative — 1/2 vs 0.5 vs \frac{1}{2} |
| Symbolic maths | CAS equivalence (SymPy) | Milliseconds | Timeout on pathological expressions; equivalence is undecidable in general |
| Competition maths | Boxed-answer match | Microseconds | Scores the answer, never the argument — a lucky guess pays in full |
| Code | Unit tests in a sandbox | Seconds | False positive — passing the tests without solving the problem |
| Formal proof | Kernel type-check (Lean, Coq) | Seconds | Nearly sound; the bottleneck is formalising the statement at all |
| Format compliance | Regex over tags | Microseconds | Trivially gameable in isolation — only ever an auxiliary term |
Note the asymmetry between rows four and one. A false negative punishes a correct answer and merely wastes signal. A false positive rewards a wrong one and is actively trained into the policy — gradient descent will find it and keep it. Verifier precision matters far more than verifier recall.
R1-Zero's reward, in full
Two rule-based terms, combined with equal weight:
checks the final answer against ground truth — for code, by running a suite of predefined test cases. requires the reasoning to be wrapped in <think> … </think> tags. That second term is doing less than it appears: it buys a parseable transcript, which makes the accuracy term applicable at all. Nothing scores the reasoning itself. The chain of thought is unsupervised, entirely — every property it develops in §05 is a side-effect of being useful for getting the last line right.
Behaviour nobody specified
DeepSeek-R1-Zero applies GRPO to a base model with no supervised fine-tuning at all — no demonstrations, no reasoning traces, no cold start. The only signal is whether the final answer was right. Over 10,400 steps:
at initialisation
after RL
1.6 epochs
per step
32 unique questions per step, batch size 512, and the reference policy replaced with the current policy every 400 steps — the KL leash is periodically re-anchored rather than held to the original base model.
Length is not a target
Nothing in mentions length. The policy discovers that spending more tokens — re-deriving, checking, trying a second approach — raises the probability that the last line is right, and the gradient rewards it for that alone. Thinking longer is an instrumental strategy the optimiser found.
Alongside it come re-derivation, explicit self-verification, backtracking after a dead end, and trying alternative methods before committing. None was demonstrated; all raise expected reward.
The transcript
The paper's Table 2 records an intermediate checkpoint stopping mid-derivation:
… ⇒ x⁴ − 2ax² − x + (a² − a) = 0 Wait, wait. Wait. That's an aha moment I can flag here. Let's reevaluate this step-by-step to identify if the correct sum can be …
The authors call this an aha moment for themselves. The anthropomorphic tone is not the interesting part — the interesting part is that a binary reward on the final answer was sufficient to make interrupting yourself worth doing.
Most of your compute produces no gradient
Return to the advantage. If all completions receive the same reward — all correct, or all wrong — then for every , so every and the entire group contributes nothing. Those rollouts were generated, verified, and discarded.
With per-problem success probability and group size , the fraction of groups that are degenerate is exactly
which is small only when sits near the middle. This is the quantitative case for curriculum: problems the model almost always solves and problems it never solves are both worthless, and they are worthless in the same way. A dataset that looks well-chosen by difficulty can still spend most of its compute on empty groups.
Interactive
A group, and what it teaches
Set how many of the rollouts the verifier accepts. The advantages recompute exactly as GRPO defines them.
Click a rollout to flip its verdict. At 0 or G correct the gradient vanishes entirely — the case DAPO's dynamic sampling exists to avoid, by resampling a prompt until its group contains both outcomes.
The policy stops exploring, and training stops
The characteristic failure of naive GRPO is not divergence. It is premature convergence: policy entropy falls toward zero early in training, the model emits near-identical completions for every prompt, groups become degenerate for the reason in §06, and the reward curve flattens. The run is not broken — it has simply stopped learning, which is harder to notice.
The mechanism is in the clip. PPO-style clipping is symmetric, at , but its effect is not. For a token with low current probability, the upper clip bounds how much the update may raise it in ratio terms — so a rare-but-promising token can only creep upward, while a common token has ample room to be reinforced. Symmetric clipping quietly ratchets probability mass toward whatever the policy already prefers.
DAPO's four changes
- Clip-higher. Decouple the bounds, and , and raise the upper one to 0.28. Low-probability tokens get room to grow; entropy stops collapsing.
- Dynamic sampling. Resample prompts until each group contains both a success and a failure, so no group is wasted (§06). Costs generation, buys a full batch of real gradient.
- Token-level policy gradient loss. Average over tokens across the batch rather than over sequences, so a long completion contributes in proportion to its length instead of being down-weighted by — which matters enormously once completions run to thousands of tokens.
- Overlong reward shaping. Completions truncated by the length limit otherwise receive reward 0 and are punished for being cut off rather than for being wrong. Shape the penalty instead of letting truncation inject noise.
AIME 2024
AIME 2024
AIME 2024
Same base model — Qwen2.5-32B — and the same algorithm family. The 20-point spread is entirely in details that the original report did not specify.
Two normalisations that were not free
A separate line of work asked whether GRPO's objective is an unbiased estimator of the thing it claims to optimise. It is not, in two places, and both were sitting in the equation from §03.
Length normalisation
The factor divides each completion's loss by its token count. Consider a wrong answer, : the longer it is, the smaller the per-token penalty it receives. The optimiser is therefore rewarded for making incorrect completions longer, since length dilutes the punishment.
This predicts a specific pathology — response length growing while accuracy does not, driven mostly by failures — and that is what the analysis finds. Some of the celebrated "the model learns to think longer" curve is this artefact rather than emergent reasoning.
Standard-deviation normalisation
Dividing by rescales each group's advantage by its own difficulty. For binary rewards with of correct, the standard deviation is with — smallest exactly when the group is most lopsided.
So groups where the model got 1 of 8 right, or 7 of 8, have their advantages inflated relative to balanced groups. Difficulty bias enters the gradient through a term intended only to standardise scale.
Dr. GRPO removes both terms — no , no divisor — leaving a plain centred advantage. The result is an unbiased optimiser that reaches comparable accuracy with markedly shorter outputs, because the incentive to pad failures is gone. Toggle the normalisation in the §06 calculator to see the second term directly.
Worth stating plainly: GRPO, Dr. GRPO and DAPO's token-level loss disagree about what the denominator should be, and the choice moves AIME scores by more than most architectural changes do. In a field that reports benchmark deltas to one decimal place, the normalisation is frequently the uncontrolled variable.
One bit, ten thousand tokens
The advantage has no time index. Every token in a completion — the productive lemma, the wasted digression, the arithmetic slip that got corrected two paragraphs later — receives identical credit, determined solely by whether the final line was right.
As an estimator this is unbiased and appallingly high-variance. A single correct answer reinforces every token that preceded it, including the mistakes; a single wrong answer punishes the reasoning that was sound right up until the last step. RLVR relies on this washing out across enough samples, which is a large part of why the sample budgets are what they are.
Process supervision, and why it is rare
The apparent fix is to reward individual steps — a process reward model scoring each line, giving dense feedback and sharp credit assignment. PRMs measurably help at inference time as verifiers for best-of- search.
As a training signal in large-scale RL they are largely avoided, for the reason §01 started with: a PRM is a learned neural reward model, so it reintroduces exactly the hackable surface RLVR was adopted to remove. DeepSeek rule out both outcome- and process-based neural rewards on those grounds. The dense signal is real; so is the attack surface it restores.
What the group buys back
The group baseline is a variance reduction, not a credit assignment. It answers "was this completion better than my other attempts at this same prompt", which is a much lower-variance question than "was this completion good".
But it still cannot say which part was better. Credit assignment within a trajectory remains, as of now, unsolved in this setting — the field has largely decided to pay for it with sample count instead.
Does it teach anything the base model could not do?
This is the live dispute in the field, and the answer decides whether RLVR is a route to new capability or an unusually effective decoding-time prior baked into weights.
The sharpest version of the sceptical case uses pass@ — the probability that at least one of samples is correct, an estimate of what the model can reach at all:
The finding: RLVR reliably improves pass@1 and, on several benchmarks, leaves pass@ at large unchanged or worse than the base model. Read literally, the RL policy is sampling more reliably from a solution set the base model already contained. It concentrates probability mass on paths that were already reachable — sharpening, not expansion — and pays for it in diversity, which is what the pass@ crossover shows.
The case against that reading
Later work reports pass@ gains where entropy is deliberately maintained — self-play and exploration-preserving variants show absolute improvements at pass@32 on AIME 24 and 25 over standard RLVR. If collapse is what destroys pass@, then the ceiling was a property of the recipe, not of RLVR.
Where that leaves it
Both can be true: standard RLVR sharpens and costs diversity; exploration-preserving RLVR can expand somewhat. What nobody has shown is RLVR discovering a solution strategy with no support at all under the base policy — and given that the gradient only ever reweights sampled trajectories, it is not obvious how it could.
The reward is verifiable. It is not unhackable.
RLVR removes the approximation error of a learned reward model. It does nothing about specification error — the gap between what the checker accepts and what you meant. That gap is now the entire attack surface, and the optimiser is very good at finding it.
Code
Solve the tests, not the problem
Special-case the visible inputs. Catch the exception and return a plausible default. Read the expected output from the environment. Every one of these passes a suite while failing the task, and every one is reinforced.
Maths
Answer without reasoning
Only the final line is scored, so a memorised answer to a contaminated benchmark problem, or a lucky guess from a narrow range, earns full reward with the chain of thought unconstrained — and reinforces whatever produced it.
Format
Satisfy the regex
A format term rewarded independently of accuracy is a free gradient with no relation to correctness. It works only because it is dominated by the accuracy term; weight it wrongly and the policy optimises punctuation.
The structural point: with a learned reward model you worry about the reward being inaccurate. With a verifier you worry about it being exactly accurate about the wrong thing. The second failure is quieter, because the metric it is measured by is the metric being gamed — a test suite cannot report that it was an inadequate specification.
This is why sandboxing, held-out tests, and contamination checks are not hygiene around RLVR but part of the reward function itself. A verifier that can be reached and modified by the policy is not a verifier.
Cost, and what remains open
Generation dominates everything
Each step samples completions per prompt, each potentially thousands of tokens, through the memory-bound decode loop of the previous report. R1-Zero generated 8,192 rollouts per step across 10,400 steps. The gradient update itself is a rounding error beside it.
So an RLVR stack is really two systems stapled together — an inference engine optimised for throughput and a training engine optimised for gradients — with model weights synchronised between them every step. Most engineering effort goes into that seam: overlapping generation with training, tolerating slightly stale policies, and keeping accelerators busy while a long rollout finishes.
Verification can be the bottleneck instead
A microsecond string match is free. A sandboxed test suite at seconds per candidate, times 8,192 candidates per step, is a distributed system with its own capacity planning — and it must be isolated well enough that untrusted generated code cannot reach the scheduler.
The cost ordering flips by domain: cheap verifiers make generation the bottleneck, expensive ones make verification the bottleneck, and the two regimes want different cluster shapes.
Genuinely unresolved
- Credit assignment within a trajectory. One scalar over ten thousand tokens is the crudest possible estimator. Process rewards fix it and reintroduce a hackable model; nobody has a verifiable dense signal.
- Whether the ceiling is the base model. §10 is unsettled, and it is the question that decides how far this goes.
- Transfer out of the checkable. Reasoning trained on maths and code does improve unentailed tasks. Nobody can currently say which component transfers, or predict where it will not.
- The normalisation disagreement. GRPO, Dr. GRPO and DAPO differ on the denominator, and the difference moves benchmarks more than most model changes. There is no settled answer, and papers rarely control for it.
- Verifier coverage. The set of tasks with a cheap sound checker is small, and expanding it — through formalisation, or auto-generated tests, or executable specifications — is the real frontier. Every domain that gets a verifier gets RLVR immediately.
The short version
RLVR swaps a learned reward for a program, which removes the Goodhart failure that limited RLHF and replaces it with a specification-gaming failure that is quieter. The algorithm that made it practical, GRPO, works by taking the baseline from a group of samples instead of a critic — which is elegant, cheap, and produces no gradient at all whenever a group agrees with itself. Most of the engineering since has been about that sentence: keeping groups informative, keeping entropy alive, and arguing about what to divide by.