Reward Models · Chapter 08
The multi-objective reward model: one score per quality
2. Definition
A multi-objective reward model maps a prompt \(x\) and response \(y\) to a vector of \(K\) scores, one per quality or attribute:
With four qualities the output might look like this:
Read it coordinate by coordinate: the answer is very likely correct (0.95), helpful (0.88) and well written (0.91), but its safety score (0.60) is low enough to deserve a second look. A single scalar would have averaged that warning away.
The name "multi-head" describes the usual implementation: one network with several output heads. "Multi-objective" describes the use: the scores are later treated as separate objectives to balance.
3. Shared backbone, many heads
One Transformer reads the prompt and response. As in earlier chapters, we take the hidden state at the final token,
and attach \(K\) linear heads instead of one:
Why share one backbone instead of training \(K\) separate reward models?
- Shared understanding. Judging correctness, helpfulness and safety all start from the same work: understanding what was asked and what was said. The backbone does that once.
- Cost. One forward pass yields all \(K\) scores. With \(d=4096\), four heads add only \(4\times4097=16{,}388\) parameters to a backbone with billions.
- Data efficiency. Attribute labels are scarce. A head with few labels borrows features learned from the others.
The price is interference. If two objectives want opposite features, the backbone must compromise, and one head can degrade another. When objectives conflict strongly, separate models are sometimes the safer choice; Safe RLHF (Section 9) trains its reward and cost models separately.
4. Data and losses
Each head needs labels for its own attribute. The total loss is a weighted sum of per-head losses:
Here \(\alpha_k\) balances the heads during training, and \(m_k\in\{0,1\}\) masks heads whose label is missing for this example, so datasets that rate only some attributes can still be mixed. The loss weights \(\alpha_k\) are a training choice. They are not the same as the weights \(\lambda_k\) used later to combine the scores (Section 5).
The per-head loss depends on the label type. Three are common.
Binary labels (correct or not, safe or not): read the head as a logit, \(p_k=\sigma(r_k)\), and use BCE,
Ratings on a scale, such as 0 to 4: regress the head onto the rating,
Per-attribute preferences ("A is safer than B"): apply Bradley–Terry to that head alone,
Datasets such as HelpSteer ask annotators to rate each response on several attributes separately (helpfulness, correctness, coherence, complexity and verbosity, each on a 0 to 4 scale) rather than giving one overall preference. One annotated response then supervises every head at once through Equation 6. Such ratings are more expensive per example than a single preference, but they say why a response is good or bad.
5. Weighted scalarisation
Best-of-\(N\) selection and PPO both need one number per response. The simplest way to get it is a weighted sum, called linear scalarisation:
The weights \(\lambda_k\) say how much each quality matters. Take three heads with weights \(0.5,\,0.3,\,0.2\) and scores \(\mathbf r=[0.9,\,0.8,\,0.5]\):
Only the ratios of the weights matter for ranking, so fixing their sum to 1 loses nothing. The full pipeline from text to training signal is short:
6. The trade-off made visible
Two answers to the same prompt, scored on (correctness, helpfulness, safety):
Answer A
\(\mathbf r_A=[0.98,\ 0.75,\ 0.40]\)
Very correct, but unsafe.
Answer B
\(\mathbf r_B=[0.90,\ 0.85,\ 0.95]\)
Slightly less correct, much safer.
Which is better depends on what we value. With weights \((0.5,0.3,0.2)\):
B wins. With weights \((0.8,0.2,0)\), which ignore safety, \(R_A=0.934\) and \(R_B=0.890\), and A wins. The general rule is the difference
A is ahead only on correctness, and only by 0.08; it is behind on safety by 0.55. Any meaningful safety weight hands the win to B. A scalar reward model would have made this decision silently, using weights nobody chose. The multi-objective model makes the decision explicit, and Equation 11 says exactly where it flips.
7. Normalise before combining
Weights only mean what they appear to mean if the heads live on comparable scales. They often do not. A correctness head trained with BCE (Equation 5) and read as a probability may vary by about 0.1 across responses to a prompt. A helpfulness head trained with Bradley–Terry (Equation 7) produces unbounded logits that may vary by 2.0.
With equal weights of 0.5, one typical step in helpfulness moves \(R\) by \(0.5\times2.0=1.0\), while one typical step in correctness moves it by \(0.5\times0.1=0.05\). Helpfulness effectively counts twenty times as much, even though the weights say "equal."
The fix is to standardise each head on a reference set of responses before combining:
where \(\mu_k\) and \(\sigma_k\) are the mean and standard deviation of head \(k\) on that set. Now a weight of 0.5 means the same thing for every head: half a standard deviation of \(R\) per standard deviation of that quality.
Rescale each head as \(r_k'=a_k r_k+c_k\) with \(a_k>0\). Then \(\sum_k\lambda_k r_k'=\sum_k(\lambda_k a_k)\,r_k+\text{const}\). Ranking responses by the rescaled heads with weights \(\lambda\) is the same as ranking by the original heads with weights proportional to \(\lambda_k a_k\). Offsets \(c_k\) never matter; scales \(a_k\) change the effective weights.
8. Pareto fronts
Without any weights at all, some comparisons are already settled. Response \(y\) dominates \(y'\) if it is at least as good on every head and strictly better on at least one:
The responses that no other response dominates form the Pareto front. Every response off the front is a bad choice under every reasonable preference. For example \(C=[0.85,0.80,0.90]\) is dominated by \(B=[0.90,0.85,0.95]\), so C never wins for any non-negative weights. A and B are both on the front: neither dominates the other, and choosing between them requires a value judgement.
A fixed weighting is that value judgement. It picks one point on the front, the one that touches the highest line \(\sum_k\lambda_k r_k=\text{const}\). Changing the weights slides the choice along the front.
If every \(\lambda_k>0\), the maximiser of \(\sum_k\lambda_k r_k\) is on the Pareto front. The converse fails: a Pareto-optimal point in a dent of the front can never be the maximiser. With two objectives and candidates \(P=(1,0)\), \(Q=(0,1)\), \(M=(0.45,0.45)\), the balanced answer M is Pareto-optimal, yet \(\max(\lambda_1,\lambda_2)\ge0.5\), while M always scores \(\lambda_1(0.45)+\lambda_2(0.45)=0.45\) for every weighting, so linear weights always pick P or Q.
This is a real limitation. If you want "reasonably good at everything" rather than "excellent at one thing," a weighted sum may never select it. Non-linear combinations, such as maximising the worst normalised head, can reach such points.
9. Safety as a constraint
A weight treats safety as something that can be traded at a fixed rate: a little more correctness pays for a little less safety. For many safety requirements that is the wrong model. We do not want "less harm is worth more helpfulness"; we want "harm must stay below a limit, and within that limit, be as helpful as possible."
Write the safety head as a cost \(c(x,y)\), higher for more harmful responses, and state the goal as a constrained problem:
The standard tool is the Lagrangian. Introduce a multiplier \(\mu\ge0\) and train the policy on the shaped reward
while adjusting \(\mu\) by gradient ascent on the constraint violation:
Take budget \(d=0.05\), step \(\eta=0.5\), and start at \(\mu=0\). A batch with average cost 0.20 raises \(\mu\) to \(0.5\times0.15=0.075\). The next batch, now safer, averages 0.12 and raises \(\mu\) to \(0.075+0.5\times0.07=0.110\). Once a batch averages 0.04, below budget, \(\mu\) eases back to \(0.110-0.5\times0.01=0.105\). The price of harm rises while the limit is broken and stops rising once it holds.
Safety as a weight
\(R=\lambda_1 r_{\text{help}}+\lambda_3 r_{\text{safe}}\) with \(\lambda\) fixed in advance.
Fixed exchange rate.
Safety as a constraint
\(r-\mu c\) with \(\mu\) adjusted until \(\mathbb E[c]\le d\).
Exchange rate set by the limit.
Safe RLHF follows this recipe: it trains a reward model for helpfulness and a separate cost model for harmlessness on separately collected preferences, then optimises the policy with the Lagrangian method. A cruder variant is a hard gate at selection time: discard any response whose safety score is below a threshold, then rank the rest by the other heads.
10. Weights per prompt
One fixed \(\lambda\) is a compromise across all prompts. But "fix this Python bug" should care mostly about correctness, while "write a short poem about autumn" should care more about style and helpfulness. The natural extension is to let the weights depend on the prompt:
Here \(h_x\) is a representation of the prompt alone and \(g_\phi\) is a small gating network. The softmax keeps the weights non-negative and summing to one. The gate sees only the prompt, so the same weights apply to every candidate response for that prompt, and the ranking among candidates stays a fair comparison.
ArmoRM is a published example of this design. Its heads are fitted on multi-attribute absolute ratings; a mixture-of-experts style gate is then trained, with the heads held fixed, so that the combined score agrees with pairwise human preferences under a Bradley–Terry loss. The gate learns from preference data which attributes matter for which kind of prompt.
A gated model can report not only a score but also why: "for this prompt, 70% of the weight went to correctness, and this response scored 0.4 there." A scalar reward model cannot give that explanation.
11. Weaknesses
- The value judgement moves, it does not vanish. Someone still chooses \(\lambda\), \(d\) or the gate's training data; the choice is only made visible.
- Scale sensitivity. Unnormalised heads silently reweight the objectives (Proposition 8.1), and the normalising statistics drift as the policy changes.
- Missing points. Linear weights cannot select Pareto-optimal answers in dents of the front (Proposition 8.2).
- Correlated heads. Heads trained on overlapping data leak into each other; helpfulness ratings, for instance, often correlate with length.
- Costly labels. Per-attribute ratings take more annotator effort, and annotators disagree more on fine-grained attributes than on overall preference.
- More surfaces to hack. Under RL, the policy can push up the easiest head to fool and collect reward through its weight.
12. Laboratory: watching the winner flip
Two fixed answers have score vectors \(\mathbf r_A=[0.98,0.75,0.40]\) and \(\mathbf r_B=[0.90,0.85,0.95]\) on (correctness, helpfulness, safety). Move the three weight sliders. The weights are rescaled to sum to one, both combined rewards are recomputed, and the winner is reported. The safety threshold turns on a hard constraint: any answer whose safety score is below it is ruled out before weights are applied.
Linear scalarisation of two answers
\(R=\sum_k\lambda_k r_k\)Computation
Start from "Correctness only", where A wins, then raise the safety weight a little at a time. B takes over almost immediately. Then set \(\lambda_3=0\) and look for the correctness weight at which A and B tie. Finally set the threshold to 0.5: A is excluded whatever the weights.
13. Worked example, step by step
Use the answers of Section 6, \(\mathbf r_A=[0.98,0.75,0.40]\) and \(\mathbf r_B=[0.90,0.85,0.95]\). Find which answer wins under several policies and the exact weight at which the winner flips.
- Dominance: A is higher on correctness, B is higher on helpfulness and safety. Neither dominates; both are on the Pareto front of \(\{A,B\}\).
- Weights \((0.5,0.3,0.2)\): \(R_A=0.49+0.225+0.08=0.795\), \(R_B=0.45+0.255+0.19=0.895\). B wins.
- Weights \((0.8,0.2,0)\): \(R_A=0.784+0.150=0.934\), \(R_B=0.720+0.170=0.890\). A wins.
- General margin: \(R_A-R_B=(0.98-0.90)\lambda_1+(0.75-0.85)\lambda_2+(0.40-0.95)\lambda_3=0.08\lambda_1-0.10\lambda_2-0.55\lambda_3\).
- No safety weight, \(\lambda_3=0\), \(\lambda_2=1-\lambda_1\): margin \(=0.18\lambda_1-0.10\), positive iff \(\lambda_1>0.10/0.18\approx0.556\).
- Small safety weight, \(\lambda_3=0.1\), \(\lambda_2=0.9-\lambda_1\): margin \(=0.18\lambda_1-0.145\), positive iff \(\lambda_1>0.806\). A safety weight of just 0.1 pushes the flip point from 0.556 to 0.806.
- Constraint \(r_{\text{safe}}\ge0.5\): A has 0.40 and is ruled out. B is chosen for every weighting.
14. What comes next
Every model so far, scalar or vector, reads the response and emits numbers from a head in a single forward pass. The next chapter changes how the judgment is produced: the reward model writes an evaluation in text, and the score is read from the tokens it generates.
One response, several reward dimensions. Combining them is a separate, explicit choice: normalise the heads, then pick weights, constraints or a gate.
See also
- Wu et al., 2023, fine-grained human feedback: separate reward models for different error types, combined with weights.
- Wang et al., 2023, HelpSteer: a dataset of responses rated on several attributes.
- Dai et al., 2023, Safe RLHF: separate reward and cost models with a Lagrangian constraint.
- Wang et al., 2024, ArmoRM: multi-objective reward modelling with a prompt-dependent gating network.
- Ramé et al., 2023, rewarded soups: interpolating policies fine-tuned on different rewards to move along the Pareto front.
Previous
← Value Model
Next chapter
Generative reward model
The reward model writes its judgment before it scores.