← All posts
Machine Learning

Reward Models for Reasoning: ORMs and PRMs

Overview

How outcome and process reward models judge reasoning: scoring the final answer or every step, where their step labels come from, why GRPO already contains one, how verifiers that write and run checks work, and how to train them with few or no labels.

Reward models cover: a step-by-step solution with a score next to every step, one of them flagged as wrong

Introduction

When a language model solves a math problem, it writes a chain of thought: a sequence of steps that ends in an answer. To train such a model, or to pick the best of several of its solutions, we need a way to judge the solution. The simplest judge only checks the final answer. That is easy, but it says nothing about which step went wrong, and it gives full credit to a solution that reached the right answer through a wrong step.

A process reward model (PRM) judges every step instead. It reads the solution one step at a time and gives each step a score: was this step correct? The idea was made popular by OpenAI’s “Let’s Verify Step by Step” [1], which trained a PRM on about step labels written by people, a dataset called PRM800K, and showed that it picks correct solutions better than a judge that only sees the final answer.

That paper left several questions open. Step labels written by people are expensive, so where else can they come from? Is judging each step really better in principle, or only in practice? Can a PRM reason about a step before judging it? And can a PRM be trained with no labels at all? In this post, we go through nine recent papers that answer these questions. We first set up the two kinds of reward model and how they are used, then look at where step labels come from, what theory and GRPO tell us about PRMs, how verifiers that write and run checks work, how to spend compute on verification, and finally how to train PRMs with fewer and fewer labels.

Outcome and Process Reward Models

A problem is solved by a solution made of steps, , where each step is usually a line or a paragraph of the chain of thought. A reward model gives the solution a score. There are two kinds, and they differ in what they score (Figure 1).

Problem: a rectangle's length is twice its width, and its perimeter is 36. Find the width. Step 1: let the width be w 0.97 correct Step 2: then the length is 2w 0.94 correct Step 3: perimeter = w + 2w = 3w 0.05 wrong Step 4: 3w = 36, so w = 12 0.03 wrong PRM: one score per step 0.04 ORM: one score for the whole solution
Figure 1. An outcome reward model (ORM) gives the whole solution one score. A process reward model (PRM) gives every step its own score, so it shows where the solution went wrong: here at step 3, which uses the wrong formula for the perimeter.

An outcome reward model (ORM) reads the whole solution and outputs one number , the probability that the solution is correct. To train it, we sample many solutions, label each one if its final answer matches the reference answer and otherwise, and minimize the binary cross-entropy loss:

The labels are free, since checking a final answer is cheap. But every step of a solution shares the same label, so the ORM has to work out on its own which steps were responsible.

A process reward model outputs a score for every step , the probability that step is correct given the problem and the steps before it. With a label for every step, it is trained with the same loss, applied step by step:

To score a whole solution with a PRM, the step scores have to be combined into one number. A natural choice, used in “Let’s Verify Step by Step” [1], is the probability that every step is correct, which is the product of the step scores:

In Eq. (3), a single wrong step makes its factor small, and with it the whole product. Another common choice is the minimum step score, which follows the same logic: a solution is only as good as its weakest step.

How Reward Models Are Used

Reward models are used in two places. The first is test-time scaling: spending more compute when answering a question. The model writes solutions, and the reward model picks the one with the highest score. This is Best-of-N. The simplest alternative needs no reward model at all: take the final answer that appears most often among the solutions. This is majority voting, also called self-consistency [2]. A PRM can also guide a search: since it scores partial solutions, a beam search can keep only the most promising prefixes after each step and extend those.

The second place is training, as the reward in reinforcement learning, as in RLHF or GRPO. Here a PRM promises finer credit assignment: instead of rewarding or punishing every token of a response equally, it can point to the step that made the difference. But a learned PRM can also be fooled, and the policy can learn to write steps that look correct to the PRM without being correct. This is the familiar problem of reward hacking.

Where Step Labels Come From

The hardest part of building a PRM is getting the step labels in Eq. (2). People can write them, as in PRM800K, but that is slow and expensive, especially for hard problems. The most common automatic alternative is Monte Carlo estimation, introduced by Math-Shepherd [3]. The idea is to judge a step by what happens after it (Figure 2).

Prefix sₜ problem + steps 1 to t completion 1 by the policy ✓ completion 2 by the policy ✓ completion 3 by the policy ✗ completion 4 by the policy ✓ completion 5 by the policy ✓ completion 6 by the policy ✗ completion 7 by the policy ✓ completion 8 by the policy ✗ MC(sₜ) = 5/8 reach the answer
Figure 2. Monte Carlo estimation of a step. From the prefix that ends at the step, the policy writes completions, and the fraction that reaches the correct answer is the step’s estimate.

Take the solution up to step , call this prefix , and let the model complete it times. If the step is good, many of the completions should still reach the correct answer . If the step is wrong, few or none will. The estimate is the fraction of completions whose answer is correct:

where is when the condition holds and otherwise. A hard label can then be made by calling a step correct if , or a soft label can use the fraction directly. This needs only the final answer, no human judgment, but it is expensive: every step of every solution needs extra completions. And it measures something slightly different from correctness. It measures whether the step still allows the model to reach the right answer, which a wrong step sometimes does by luck, and which a correct step on a hard problem sometimes does not.

Several of the papers below come back to this estimate. The first one asks whether we need step labels at all.

Do We Need to Verify Step by Step?

Process supervision seems more informative than outcome supervision, since it tells the learner where the mistake is. The common belief has been that learning from outcomes alone is fundamentally harder. Jia, Rakhlin, and Xie [4] test this belief with theory, and find that it is not true in the way people thought. This section first explains where the belief comes from, then the algorithm the paper uses to show it is wrong, and then a result about which quantity makes a good PRM.

Why Outcome Supervision Looked Harder

The theory uses the language of reinforcement learning. The LLM that writes solutions is the policy . A solution is a trajectory of steps, where the state is the problem and the steps written so far, and the action is the next step. Process supervision gives a reward for every step. Outcome supervision gives only the total reward of the whole trajectory, for example if the final answer is correct and otherwise.

To learn a reward model, we first need data. The LLM writes many solutions, and they are scored. The LLM as it was when it wrote them is called the data policy . Then the reward model is used to improve the LLM, and the improved LLM is a new policy , which writes somewhat different solutions. The reward model has only seen the solutions of , so on a solution of that looks like nothing in the data, it can only guess, and a wrong guess is exactly what the policy learns to exploit. So the question is how far the new policy’s solutions can move away from the data before the reward model stops being trustworthy. This is the question of coverage.

Here the two kinds of supervision seem to differ. Suppose the data contains one solution with the steps and another with the steps , and the new policy writes . A model that learned a reward for every step has seen all three of these steps and can score the new solution. A model that only learned rewards for whole solutions has never seen this combination. With many steps, the number of combinations explodes, so the new policy almost always writes a combination that is not in the data, even when every one of its steps is familiar (Figure 3).

Data (written by the data policy) a b c score 1 a′ b′ c′ score 0 New policy writes a b′ c score ? every step has been seen before a step-level model can score it (step coverage) this whole combination has never been seen a whole-solution model must guess (trajectory coverage)
Figure 3. Why outcome supervision seemed to need more data. Every step of the new solution appears somewhere in the data, but the whole combination does not.

The two kinds of coverage have names. Coverage of whole solutions is measured by the trajectory concentrability, the largest ratio between how often the new policy and the data policy produce the same trajectory:

where is the probability that produces . The , short for supremum, means the largest value: compute the ratio for every possible trajectory and keep the biggest one. It is the same as a maximum, written in a way that also works when the values only approach a largest value without reaching it. Coverage of single steps is measured by the state-action concentrability, the same ratio for a single step:

where is the probability that reaches the state and takes the action there, and the and again keep the largest ratio, over every step and every state and action. A large ratio means the new policy does something the data rarely shows. The probability of a whole trajectory is a product of the probabilities of its steps, so small differences at every step multiply. If the new policy chooses some step times more often than the data policy at each of steps, the single-step ratio is , but the trajectory ratio is , and with steps it is about million. So Eq. (5) is always at least as large as Eq. (6), and the gap can grow exponentially with .

This was the belief: process supervision needs only step coverage, outcome supervision needs trajectory coverage, and therefore outcome supervision needs far more data.

From Final Scores to Step Scores

The paper shows that outcome data also needs only step coverage, and it does so with a simple algorithm that turns a dataset of final scores into a dataset of step scores, the Offline Outcome-to-Process Transformation [4].

The data has no step labels, but each total score is the sum of the unknown step rewards of its trajectory. So the algorithm looks for a per-step reward model whose step rewards add up to the observed total for every trajectory, by least squares:

where is the set of reward models considered and is part of the outcome dataset. A single trajectory does not say which of its steps earned the score. But many trajectories share steps, and the only way to match all of their totals at once is to give each step its proper share. Comparing two trajectories that differ in one step, for example, shows how much that step is worth.

The reward model learned with Eq. (7) is then used to label each step of a different part of the data, , with . Fitting on one half and labeling the other, called sample splitting, keeps the labels honest: a model fitted to some trajectories looks more accurate on those same trajectories than it really is. The result is a dataset with a reward on every step, and any algorithm built for process supervision can be run on it (Figure 4):

Algorithm 1 Offline Outcome-to-Process Transformation
Outcome data solutions + total score R half 1 half 2 fit step rewards r̂ that add up to each R (least squares) r̂ label every step rₕ = r̂(sₕ, aₕ) step-labeled data any offline RL → policy
Figure 4. The Offline Outcome-to-Process Transformation. Step rewards are fitted on one half of the outcome data so that they add up to each total score, and then used to label every step of the other half.

The paper proves how accurate the learned step rewards are. For any policy , the total reward measured with , , is close to the true total reward :

with probability at least , where is the number of trajectories. The error shrinks as the dataset grows, and the coverage term in Eq. (8) is the step-level of Eq. (6), not the trajectory-level . The price of having only final scores is the factor , which grows with the length of the solution, but only polynomially, not exponentially. The key tool behind this bound is a new Change of Trajectory Measure Lemma, which shows that an error measured on whole trajectories under the data policy can be carried over to a new policy at the cost of the step-level coverage.

So outcome supervision is not statistically harder than process supervision, up to polynomial factors in the length of the solution. If PRMs work better than ORMs in practice, the reason is likely the algorithms we use, not a basic limit on what can be learned from outcomes.

The Advantage Function Is an Optimal PRM

The second result concerns a popular way to turn outcomes into step rewards: roll out from each step, as in Eq. (4), and use the result as the step’s reward. Which quantity should the PRM learn? Recall from the PPO post that, for a policy , the action value is the expected reward after taking action in state , the state value is the expected reward from on average, and the advantage is their difference:

The paper proves that the advantage of any policy is an optimal PRM [4]. The reason is the performance difference lemma, which says that the difference between the total rewards of two policies is the advantage of one, summed along the trajectories of the other:

The right side is exactly the total reward that collects when the advantage is used as the step reward. The left side is the true total reward of minus a constant, , which does not depend on . So maximizing the advantage-based reward is the same as maximizing the true reward, and both have the same best policy. If the learned PRM is close to , with squared error at most , and the policy optimization is solved up to an error , the policy it finds is close to the best:

where is the state-action concentrability of Eq. (6), measured against the distribution on which the PRM was trained. Like the main result, the bound in Eq. (11) depends only on step-level coverage.

The action value , on the other hand, can fail as a PRM: the paper builds an example where the best policy under as the reward is not the truly best policy [4]. Eq. (9) shows why. Summing along a trajectory gives the advantage sum of Eq. (10) plus an extra term:

The extra term rewards a policy simply for passing through states that considers promising, whether or not that leads to a good outcome. The Monte Carlo estimate of Eq. (4) estimates the value of a prefix, not an advantage. One way to read this result is that a step should be judged by how much it changes that estimate, rather than by the estimate itself.

GRPO Is Secretly a PRM

If outcome rewards are not fundamentally weaker, maybe the algorithms we already use extract step-level information from them without being asked. Sullivan and Koller [5] show that this is true of GRPO. This section first shows how GRPO hides a PRM, then the flaw this reveals, and then the fix, λ-GRPO.

Shared Prefixes Are Process Steps

Recall from the GRPO post that GRPO samples a group of responses to the same prompt, and gives each response the advantage of its outcome reward , normalized within the group:

Every token of response gets this same advantage. Now notice that the responses in a group often begin the same way. Several of them may share their first few tokens, and some of those may share even more. Each such shared prefix can be seen as a process step, and the set of responses that share it is a process set (Figure 5).

Group of 6 responses (one box per token) reward y1 A B C D 0.5 y2 A B E F H I 0.5 y3 J K L M 1.0 y4 J K L N Q S T 0.0 y5 J K L N Q U 0.0 y6 V W Y Z 0.5 Process steps and their rewards AB shared by y1, y2 mean(0.5, 0.5) = 0.50 JKL shared by y3, y4, y5 mean(1, 0, 0) = 0.33 NQ shared by y4, y5 mean(0, 0) = 0.00 rest one response each its own reward group mean = 0.42
Figure 5. GRPO’s hidden PRM, using the example from the paper [5]. Responses that share a prefix form a process step, and the step’s reward is the mean outcome reward of the responses that share it, a Monte Carlo estimate of the prefix.

For each process set , define its reward as the mean outcome reward of the responses in it:

Eq. (13) is exactly the Monte Carlo estimate of Eq. (4) for the shared prefix: the responses in are several completions of that prefix, and the reward is the fraction, or the mean, of their outcomes. Every token of response gets the reward of the process set its position belongs to, and a token-level advantage, normalized in the same way as Eq. (12):

Training with the step-level advantages of Eq. (14) is a PRM-aware objective, . The paper proves that it is exactly equal to the ordinary GRPO objective with outcome rewards, , for every group [5]:

The proof of Eq. (15) assumes the token-level loss of DAPO and one update per batch, so that the probability ratio is and the clipping can be ignored. The reason it works is that at a token position shared by several responses, the tokens are identical, so their gradients are identical too, and adding up their outcome advantages gives the same result as giving each of them the mean, . The authors also checked that shared prefixes are common in practice: in their training runs, of the groups had at least one shared prefix, and the overlap grew as training converged. So GRPO with an outcome reward is, in practice, already training with a Monte Carlo PRM.

The Hidden Flaw

Looking at GRPO this way reveals a problem. Rewrite the loss at a token position as a sum over the process sets at that position. All responses in a set contribute the same term, so the set’s term is multiplied by its size:

where is the collection of process sets at position , and , , and are the probability ratio, the advantage, and the KL penalty shared by the responses in . A popular prefix therefore gets its update multiplied by the number of responses that share it. If its advantage is positive, it is pushed up many times over, and the model explores other openings less. If its advantage is negative, it is pushed down many times over, even when one of the responses that start with it was the best in the group.

The example in Figure 5 shows this. Response has the highest reward, . But its prefix JKL is shared with and , which both got , so the step reward of JKL is , below the group mean of . The advantage of JKL is negative, about , and Eq. (16) multiplies this push-down by . GRPO makes the best response less likely.

The Fix: λ-GRPO

The fix is to divide each token’s loss by the size of its process set, , which cancels the factor in Eq. (16) so that every process set counts once [5]:

Computing Eq. (17) needs the process sets, and finding them only needs a comparison of the token sequences in each group, which costs almost nothing. In the paper’s experiments, λ-GRPO reached higher accuracy than GRPO on downstream reasoning tasks and reached its peak about twice as fast. The lesson is that we may not always need an explicit PRM: an outcome reward combined with a group of responses already carries step-level information, as long as the algorithm weighs it correctly.

Verifiers That Write Before They Judge

The PRMs so far are discriminative: an LLM reads the solution, and a small classification head on top of it outputs a number. They never write anything. A generative verifier instead uses the LLM as a language model. It writes out a check of the step, and then gives a verdict as a word, such as “Yes” or “No” (Figure 6).

Discriminative PRM problem + steps 1 to t (text in) LLM + classification head no text is written 0.87 Generative PRM problem + steps 1 to t (text in) Step 3 says the perimeter is 3w, but a perimeter is 2(w + 2w) = 6w. print(2 * (12 + 24)) → 72 ≠ 36 P("Yes") = 0.04 step 3 is wrong a written check, optionally with code that is run, comes before the verdict
Figure 6. A discriminative PRM outputs a score directly from a classification head. A generative PRM writes a check of the step first, here with a line of code that is run, and its score is the probability it gives to the verdict “Yes”.

The simplest generative PRM predicts the verdict directly. For a step with state , the problem and the previous steps, and action , the step itself, the reward is the probability of the token “Yes”:

where is the verifier model with parameters . Compared with Eq. (18), writing a check first has three benefits. It lets the verifier reason about the step, as a person would. It makes the verdict readable, since we can see why a step was rejected. And it gives a new way to spend compute: the verifier can write several checks and average them. This section covers two papers that build such verifiers, GenPRM and ThinkPRM.

GenPRM: Checking Steps with Code

GenPRM [6] judges the steps of a solution one at a time, and for each step it writes out a check before it gives a verdict. Figure 7 shows the whole text for step 3 of the rectangle example from Figure 1. The input is the problem and the steps written so far. In the notation of the paper, the state is the problem together with the steps before step , and the action is step itself, the step being judged.

Input given Problem: length = 2 × width, perimeter = 36. Find the width. Step 1: let the width be w Step 2: then the length is 2w Step 3: perimeter = w + 2w = 3w   (the step being judged, aₜ) Rationale vₜ reasoning <analyze> Step 3 adds the width and the length once. A rectangle has two widths and two lengths, so the perimeter is 2(w + 2w) = 6w. </analyze> Rationale vₜ code <verify> w = 5 print(w + 2*w, 2*(w + 2*w)) </verify> Feedback fₜ from the interpreter [Code output: 15 30] Verdict 15 ≠ 30, so Step 3 is incorrect. Is the step correct? No reward: P(Yes) = 0.04 written by GenPRM: green and blue · run by Python: amber
Figure 7. The text GenPRM reads and writes when it judges step 3 of the rectangle example, in a simplified format. The reasoning and the code are written by GenPRM, the code output is produced by running the code, and the reward is the probability GenPRM gives to “Yes” at the end.

GenPRM then writes a rationale in two parts. The first is a chain of thought, between <analyze> tags, that says in words what the step claims and whether it holds. In the example, it notices that step 3 counts the width and the length only once, while a rectangle has two of each. The second part is a short Python program, between <verify> tags, that tests the claim with numbers. Here it computes both formulas for .

The program is not run by the model. It is run by a Python interpreter, and its output is pasted back into the text as the feedback , in the form [Code output: ...]. In the example, the output is 15 30: the formula of step 3 gives , while the correct perimeter is . GenPRM reads this output, finishes its check, and gives the verdict. The reward of step is the probability that the verdict is “Yes”, given everything before it (Figure 8, top):

where and are the rationales and feedback that GenPRM wrote for the earlier steps. It checks the steps in order, so its own earlier checks stay in its context while it judges the next one. In the example, the verdict is “No”, and the reward of Eq. (19) is . A check written only in words could easily accept by mistake, but the code output makes the mistake impossible to miss. This is what running code adds: it catches arithmetic and algebra errors that are easy to overlook in words.

To spend more compute on verification, GenPRM writes independent rationales for each step and averages their verdicts:

Judging step t step t + earlier steps rationale 1: reasoning + code run code → fₜ P(Yes) 0.9 rationale 2: reasoning + code run code → fₜ P(Yes) 0.8 rationale N: reasoning + code run code → fₜ P(Yes) 0.7 r̂ₜ = 0.80 average Labeling step t for training (RPE) MC(sₜ) = 0.50 before the step MC(sₜ, aₜ) = 0.20 after the step Pₜ = 0.20 / 0.50 = 0.4 relative progress 0.4 < ε = 0.8 label: wrong (0)
Figure 8. GenPRM. Top: to judge a step, it writes rationales, each with reasoning and code that is run, and averages their probabilities of “Yes”. Bottom: to label a step for training, it compares the Monte Carlo estimate after the step with the estimate before it, and calls the step wrong if the ratio falls below .

The step labels for training come from the Monte Carlo estimate of Eq. (4), with two changes. First, the number of completions depends on the problem: for hard problems, where even good prefixes rarely succeed, and for easy ones. Second, the authors noticed that many wrong steps still had a positive estimate, so a step is judged by its progress rather than by its estimate alone (Figure 8, bottom). Since the next state is just followed by , the Relative Progress Estimation (RPE) compares the estimate after the step with the estimate before it [6]:

In Eq. (21), a ratio above means the step made the correct answer easier to reach, and a ratio well below means it made it harder. A step is labeled correct if its progress is at least a threshold :

The paper uses in Eq. (22), which allows a step to make the answer slightly harder to reach without being called wrong. This is in the same spirit as the theory above: it judges a step by how much it changes the estimate, not by the estimate of the state it leads to. The rationales themselves were written by a larger reasoning model, QwQ-32B, and a solution was kept only if the labels from RPE and the labels from that model agreed on every step. About half of the data was discarded this way, leaving examples. With this training and rationales per step, a GenPRM of billion parameters outperformed GPT-4o at finding errors.

ThinkPRM: Long Verification with Few Labels

Reasoning models such as DeepSeek-R1 already write long chains of thought. Could they be used as PRMs directly, by simply asking them to check each step? Khalifa et al. [7] tried this, which is called LLM-as-a-judge, and found it unreliable. The verdicts changed with small changes to the wording of the prompt, and many outputs had no usable verdict at all: the model started solving the problem instead of checking it, overthought until it ran out of tokens, or got stuck in loops repeating the same checks.

Their solution, ThinkPRM, keeps the long chain of thought but teaches the model a fixed way of writing it. Figure 9 shows the text for the rectangle example. The input is the problem and the whole solution. ThinkPRM writes a verification chain inside <think> tags, going through the steps in order. For each step, it quotes the step, writes a critique of it, and ends the critique with a label in a box: \boxed{correct} or \boxed{incorrect}. These boxed labels are the step-level judgments. Once it finds an incorrect step, it stops, since the steps after a wrong step are built on a wrong result anyway. In the example, steps 1 and 2 are labeled correct, and the critique of step 3 notices the missing factor of and labels it incorrect.

Input given Problem: length = 2 × width, perimeter = 36. Find the width. Step 1: let the width be w Step 2: then the length is 2w Step 3: perimeter = w + 2w = 3w Step 4: 3w = 36, so w = 12 Verification chain written by ThinkPRM <think> Let's verify step by step. Step 1: "let the width be w". Critique: a fine choice of variable. The step is \boxed{correct} Step 2: "the length is 2w". Critique: the problem says the length is twice the width, so this is right. The step is \boxed{correct} Step 3: "perimeter = w + 2w = 3w". Critique: a rectangle has two widths and two lengths, so the perimeter is 2(w + 2w) = 6w. The step is \boxed{incorrect}   (stops at the first wrong step) </think> Forced question added by us Is the solution correct? Score P("yes") = 0.03, P("no") = 0.95   →   score = 0.03 / (0.03 + 0.95) ≈ 0.03
Figure 9. The text ThinkPRM reads and writes for the rectangle example, slightly shortened. The verification chain critiques each step and ends each critique with a boxed label, stopping at the first incorrect step. The question at the end is added by us, and the score comes from the probabilities of “yes” and “no”.

To turn the chain into a single score for the solution, the question “Is the solution correct?” is appended after the chain, and the model’s next token is read. The score is the probability of “yes”, renormalized between the two possible answers [7]:

Renormalizing by Eq. (23) ignores whatever probability the model puts on other tokens, so the score is always between and . In the example, the chain has already found a wrong step, so “no” is far more likely, and the score is about .

The model learns this format from a small set of examples, collected as shown in Figure 10, top. The authors gave solutions from PRM800K to QwQ-32B-Preview, a reasoning model, and asked it to verify them in this format. They kept a chain only if it passed three filters. It had to contain a boxed label for every step, so that it could be read. Its labels had to match the human step labels of PRM800K on every step, so that its judgments were right. And it had to be at most tokens long, to rule out overthinking. Only about of the sampled chains passed, and the authors stopped at chains, covering step labels, about of the labels in PRM800K. Note that the filters check only the labels, never the critiques themselves, so no one has to write or check the verification text. A reasoning model was then fine-tuned on these chains with the ordinary language-modeling loss, which took a few hours on a single GPU.

Collecting training chains QwQ-32B-Preview verifies PRM800K solutions a label for every step format check labels match PRM800K agrees with humans at most 4,096 tokens no overthinking 1K chains 8K step labels Spending more compute on verification Parallel: K independent chains, scores averaged chain 1 → score 0.05 chain 2 → score 0.02 chain K → score 0.04 mean = 0.037 Sequential: the model rechecks its own check first chain "Let's verify again" → the chain continues
Figure 10. ThinkPRM. Top: training chains are written by a reasoning model and kept only if their step labels are complete, agree with the human labels, and stay within a length budget. Bottom: the two ways to spend more compute on verification.

The fine-tuned verifier was more accurate than discriminative PRMs trained on all of PRM800K, about times more labels, and it also worked on science questions and code, although it was trained only on math.

ThinkPRM can also spend more compute on verification, in two ways (Figure 10, bottom). Parallel scaling writes independent verification chains for the same solution and averages their scores from Eq. (23), in the same way that GenPRM averages its rationales in Eq. (20). Sequential scaling makes the model check its own check: after the first chain, a phrase such as “Let’s verify again” is appended, and the model continues thinking, often catching a mistake in its first verification. Both helped, with parallel scaling slightly better in some settings.

When to Solve and When to Verify

Generative verifiers give a new way to spend compute at test time, but compute spent on verification is not spent on solving. With a fixed budget, is it better to generate more solutions and take a majority vote, or fewer solutions and verify them carefully? Singhi et al. [8] answer this by counting the cost of both.

Suppose a model generates solutions and verifies each one times with a generative reward model (GenRM), the same kind of verifier as above. Generating tokens with a model of parameters costs about operations, so if a solution has tokens and a verification has tokens, the total cost is . Dropping the constant , the cost of a strategy is:

Self-consistency is the special case , with cost . Earlier work had compared the two strategies at the same number of solutions, which made verification look efficient, since it matched majority voting with fewer solutions. But at the same total cost of Eq. (24), the picture changes. Self-consistency was better at lower budgets. The generative verifier first caught up only at about times the compute, and gaining over self-consistency took times more compute (Figure 11).

Same budget, two ways to spend it (λ = 1) Self-consistency: 8 solutions, majority vote y1 y2 y3 y4 y5 y6 y7 y8 cost = 8 GenRM: 2 solutions × 3 verifications each, pick the best y1 v1 v2 v3 y2 v1 v2 v3 cost = S(1 + λV) = 2 × (1 + 3) = 8 compute budget (log scale) accuracy self-consistency GenRM ≈ 8× compute schematic
Figure 11. Left: how the same budget can be spent on more solutions or on verifying fewer of them. Right: a schematic of the paper’s finding that self-consistency wins at low budgets and the generative verifier only pays off at large ones.

When verification does pay off, the budget still has to be split. Too few solutions, and none of them may be correct. Too few verifications, and the correct one may not be recognized. Fitting the best split at each budget , the authors found that both should grow as power laws of the budget, but at different rates:

for Llama-3.1-8B on MATH, with similar patterns for other models. Since the exponent for solutions in Eq. (25) is larger, the number of solutions should grow faster than the number of verifications, by a factor of about to . The practical lesson: at small budgets, generate more solutions and vote; verification is worth it only when the budget is large, and even then, most of the extra compute should still go to solving.

Better Labels for Less

Every verifier so far needed labels from somewhere: people, Monte Carlo completions, or a stronger model. The last group of papers looks for cheaper and more reliable sources. One makes better negative examples for ORMs, one builds step labels that are exactly right by construction, and one trains a PRM with no labels at all.

Echo Generation: Harder Negatives for ORMs

Thatikonda et al. [9] build ORMs for deductive logical reasoning, where a model must decide whether a conclusion follows from a set of premises. They train the ORM with Eq. (1) on sampled chains of thought, labeled by whether the final answer is correct, and find that sampling several solutions per question, rather than one, gives a much better ORM.

The trouble is that a model’s own mistakes cover only some kinds of errors. To get more, the authors use a known weakness of LLMs: echoing. When a user states an answer, models tend to agree with it, and invent reasoning that supports it. So they prompt the model with “Given the answer is True, please reason step by step”, where “True” is deliberately the wrong answer. The model writes a plausible but wrong chain of thought that leads to it. These echoes are then filtered: the model is asked to judge each one, and the echoes it already recognizes as wrong are discarded, since they are too obvious to teach anything. The remaining, convincing echoes are added to the training data as negatives (Figure 12). ORMs trained with these extra negatives were better at ranking solutions on three logic benchmarks.

Normal data premises + question is the conclusion True? "reason step by step" 8 sampled chains label by final answer ✓ positive, ✗ negative Echo data premises + question (true answer: False) "Given the answer is True" plausible but wrong chain self-judge the chain keep only convincing ones ORM training data
Figure 12. Echo generation. Besides chains labeled by their final answer, the model is told a wrong answer and writes a convincing chain for it, which becomes a hard negative example once the obvious failures are filtered out.

Verifiable Counterfactual Supervision

For a PRM, the most useful label is the position of the first error: the first step that does not follow from the steps before it. Monte Carlo estimates only guess at it, and people disagree about it. Chi and Wang [10] instead construct errors whose position is known for certain, using a symbolic prover, a program that can check whether a conclusion follows from given facts by given rules (Figure 13).

Verified correct chain C+ s1 s2 s3 s4 s5 Counterfactual chain C− s1 s2 s̃3 (error) s4′ recomputed s5′ recomputed same prefix first error at k = 3 not derivable from s1, s2 follow from s̃3 by the prover
Figure 13. A first-error counterfactual. The corrupted chain keeps the correct prefix, injects an error at step that the prover confirms cannot be derived from the prefix, and recomputes the later steps from the corrupted state.

They start from a reasoning chain that the prover has verified, where each step applies a rule to earlier facts. Then they pick a step and corrupt it, in a way that fits the rule used there: changing its conclusion, applying the rule in the wrong direction, or corrupting a fact. The corrupted chain must satisfy three conditions:

The first condition of Eq. (26) keeps the correct prefix. The second, checked by the prover, guarantees that step really is the first error: if the corrupted conclusion can still be derived from the prefix, the example is thrown away. The third makes the rest of the chain consistent with the error, by recomputing every later step from the corrupted state, so that the chain looks like a real reasoning chain that went wrong, not one that breaks and then continues as if nothing happened. Both chains are then translated into natural language with the same wording for the same facts, so that they differ only in the reasoning. A PRM trained on such pairs picked better solutions among eight candidates on logical reasoning benchmarks, and showed some transfer to math.

Unsupervised PRMs

Every method so far needs either step labels or a way to check the final answer. Gadetsky et al. [11] remove both. Their unsupervised PRM (uPRM) learns from the solutions alone. The training signal comes from an LLM that is kept frozen, and the PRM being trained is a copy of the same LLM with LoRA adapters and a small head that gives each step a probability of being correct. In the paper both are Qwen2.5-14B-Instruct, and the solutions come from PRM800K with their labels removed.

A PRM can be read as a guess of where a solution first goes wrong. Write a solution as , a problem followed by steps, and let be the probability the PRM gives to step being correct. The first error is at step when all the steps before are correct and step is wrong, so

The sum is the part where the earlier steps are correct, and the first term is the part where step is wrong. The value means there is no error, and then removes the first term.

Example: where is the first error?

Suppose the PRM gives the first three steps the probabilities , and of being correct. The first error is at step if step is correct and step is wrong, which has probability . It is at step if steps and are correct and step is wrong, which has probability . So the PRM thinks the first error is most likely at step .

A supervised PRM is trained to give the labeled first-error position a high probability in Eq. (27). uPRM has no labels, so it asks the frozen LLM how plausible each position is. For a candidate , it writes the solution up to step with a mark after each step: “+” after the steps before and “−” after step . For , every step gets a “+”:

The LLM reads this sequence, and at each mark it gives its next-token probabilities of “+” and “−”, renormalized so that the two add up to . Let be its probability of a “+” after step and its probability of a “−” after step . The score of the candidate has the same form as Eq. (27):

A candidate that calls a correct step wrong gets a small , and a candidate that calls a wrong step correct gets a small . Only the true position avoids both, so it gets the highest score (Figure 14).

A solution with 4 steps where step 3 is really wrong. Every candidate j is written out and scored by the LLM. score S(j) j = 1 x y1 − 0.1 −2.30 j = 2 x y1 + 0.9 y2 − 0.1 −2.41 j = 3 x y1 + 0.9 y2 + 0.9 y3 − 0.8 −0.43 highest j = 4 x y1 + 0.9 y2 + 0.9 y3 + 0.2 y4 − 0.4 −2.74 no error (j=5) x y1 + 0.9 y2 + 0.9 y3 + 0.2 y4 + 0.6 −2.33 small numbers: the LLM's probability of the mark written there, e.g. S(3) = log 0.9 + log 0.9 + log 0.8 (numbers made up for illustration)
Figure 14. Scoring every candidate first-error position for one solution whose step 3 is wrong. The marks follow from the candidate : “+” after the steps before , “−” after step . The LLM’s probability of each mark is shown under it, and the score of Eq. (29) is the sum of their logs.

Picking the with the highest score is the LLM-as-a-judge baseline. One solution at a time gives a noisy judgment, so uPRM scores a batch of solutions together. Their marked sequences are concatenated, and while the LLM reads solution , the earlier solutions and their marks act as examples in its context, which is in-context learning. The joint score is the average of Eq. (29) over the batch:

The joint score depends on all candidates at once, and there are too many combinations to try them all. This is where the PRM comes in. It is trained with reinforcement learning to propose the candidates (Figure 15). For each solution in the batch, it samples a position from its own distribution in Eq. (27), the marks are written from these positions, and the frozen LLM computes the joint score of Eq. (30), which is the reward. The PRM maximizes the expected reward with an entropy bonus:

where is the entropy of the PRM’s distribution over and sets its weight. The entropy bonus keeps the PRM from putting all of its probability on one position too early. The gradient is a REINFORCE estimate with a baseline: a sampled position that scores above the average for its solution becomes more likely, and one that scores below becomes less likely. One more detail keeps the training honest. If every position in the batch is “step 1”, or every one is “no error”, the examples all agree and the LLM tends to copy the pattern, which gives a high score whatever the real errors are. The paper subtracts a penalty when more than of the batch falls on these two positions.

Algorithm 2 Training an Unsupervised PRM
1 N solutions from the dataset, no labels at all 2 PRM being trained LLM + LoRA + small head gives p(j) for each solution 3 sample a position for each solution: e.g. j = 3, none, 2 4 write the marks + after steps before j, − after step j 5 frozen LLM reads the marked batch, gives joint score S 6 update the PRM positions that scored above average become more likely; + entropy bonus repeat with a new batch
Figure 15. Training an unsupervised PRM. The PRM samples a first-error position for each solution, the marks are written from these positions, the frozen LLM scores the marked batch, and the score is the reward for the PRM. No step labels or final answers are used.

The batch and the marks are used only during training. Once trained, the PRM reads each solution alone and gives a probability for every step, like any other PRM. On ProcessBench, a benchmark for finding the first error, uPRM was up to more accurate than the LLM-as-a-judge baseline, and as a verifier it was competitive with PRMs trained on human step labels. When used as a reward in reinforcement learning, it was also hacked less often than a supervised PRM.

Beyond Steps: Agentic Reward Models

The verifiers in this post check math and logic, where correctness is clear. For general instructions, reward models are usually trained on human preferences, as in RLHF, and such a reward model can prefer a response that sounds good but states a wrong fact or ignores an instruction. Peng et al. [12] apply the lesson of verifiers to this setting with agentic reward modeling: combine a preference reward model with checks that can actually be verified. The reward of a response to an instruction is:

where is the base reward model, each is a verification agent that checks one aspect of correctness, and are weights, and is the set of agents chosen for this instruction. Their system, RewardAgent, has three parts (Figure 16). A router, an LLM, reads the instruction and decides which agents are needed. The verification agents do the checking: a factuality agent finds the facts on which two responses differ, generates search queries, collects evidence from a search engine or from the model’s own knowledge, and judges which response is right; an instruction-following agent extracts hard constraints from the instruction, such as “within 100 words”, writes Python code to check each one, and runs it. A judger adds everything up with Eq. (32), with all weights set to . RewardAgent judges whole responses, so it is an outcome reward model, but it shares the main idea of the generative verifiers: a reward is more reliable when part of it is checked rather than guessed.

instruction + response router which checks? base reward model human preference score factuality agent differences → search → evidence → judge instruction agent constraints → Python checks → run (0/1) judger λ·RM + Σ wᵢ·aᵢ final reward
Figure 16. RewardAgent. A router picks the checks, verification agents check facts and hard constraints with tools, and a judger combines their scores with the preference reward model.

Limitations and Open Questions

PRMs remain harder to build than ORMs. Step labels from people are expensive, Monte Carlo labels cost many extra completions and measure whether a step still allows success rather than whether it is correct, and labels from a stronger model inherit that model’s mistakes. Generative verifiers are more accurate and readable, but they cost much more compute per step, and at small budgets that compute is better spent on more solutions. Learned PRMs can also be hacked when used as rewards in reinforcement learning, which is one reason most reasoning models are still trained with outcome rewards. And most of this work is on math and logic, where steps and answers can be checked. For open-ended tasks, where the steps of a good answer are less clear, both the labels and the verifiers are still open problems.

Process reward models judge a solution where it goes wrong rather than only where it ends. The papers here show that the line between outcome and process supervision is thinner than it seemed: outcome rewards are not fundamentally weaker, GRPO already learns from steps, and a PRM can learn to check its own judgments with fewer and fewer labels.

References

  1. Lightman, H., Kosaraju, V., Burda, Y., et al. (2024). Let’s Verify Step by Step. ICLR.
  2. Wang, X., Wei, J., Schuurmans, D., et al. (2023). Self-Consistency Improves Chain of Thought Reasoning in Language Models. ICLR.
  3. Wang, P., Li, L., Shao, Z., et al. (2024). Math-Shepherd: Verify and Reinforce LLMs Step-by-step without Human Annotations. ACL.
  4. Jia, Z., Rakhlin, A., & Xie, T. (2025). Do We Need to Verify Step by Step? Rethinking Process Supervision from a Theoretical Perspective. arXiv:2502.10581.
  5. Sullivan, M., & Koller, A. (2026). GRPO is Secretly a Process Reward Model. ICML.
  6. Zhao, J., Liu, R., Zhang, K., et al. (2025). GenPRM: Scaling Test-Time Compute of Process Reward Models via Generative Reasoning. arXiv:2504.00891.
  7. Khalifa, M., Agarwal, R., Logeswaran, L., Kim, J., Peng, H., Lee, M., Lee, H., & Wang, L. (2025). Process Reward Models That Think. arXiv:2504.16828.
  8. Singhi, N., Bansal, H., Hosseini, A., et al. (2025). When To Solve, When To Verify: Compute-Optimal Problem Solving and Generative Verification for LLM Reasoning. COLM.
  9. Thatikonda, R. K., Buntine, W., & Shareghi, E. (2025). Logical Reasoning with Outcome Reward Models for Test-Time Scaling. arXiv:2508.19903.
  10. Chi, Y., & Wang, Y. (2026). Verifiable Counterfactual Supervision for Process Reward Models. arXiv:2605.02395.
  11. Gadetsky, A., Kodryan, M., Panigrahi, S. S., Guo, H., & Brbic, M. (2026). Unsupervised Process Reward Models. arXiv:2605.10158.
  12. Peng, H., Qi, Y., Wang, X., Yao, Z., Xu, B., Hou, L., & Li, J. (2025). Agentic Reward Modeling: Integrating Human Preferences with Verifiable Correctness Signals for Reliable Reward Systems. arXiv:2502.19328.
Mir Sazzat Hossain

Mir Sazzat Hossain

Junior Research Scientist at CCDS, IUB. Working on computer vision, domain adaptation, and the occasional radio-galaxy problem.

Related posts

Comments

Join the discussion here or continue it on GitHub.