Blog Post
The Bradley–Terry Model: From ELO Scores to Reward Models
Chatbot Arena ranks LLMs with ELO, InstructGPT trains a reward model on pairwise preferences, and chess has rated players for seventy years. All three rest on the same one-line probabilistic model — Bradley–Terry — which turns out to be logistic regression over comparisons.
Views: –10 min readCite
There is a question that sounds simple and is not: which of two language models is better? You cannot answer it with a single number the way you can report a test-set accuracy, because "better" depends on the prompt, the rater, and a thousand judgment calls that no automatic metric captures. So the field fell back on the oldest trick in competitive ranking: instead of scoring models in isolation, compare them in pairs and let the comparisons accumulate into a ranking. Chatbot Arena does exactly this — it shows two anonymous model responses side by side, lets a human pick the winner, and converts a stream of these votes into an ELO leaderboard. The same idea, almost unchanged, is how InstructGPT and every RLHF pipeline since trains its reward model: collect pairs of responses, have a human mark the preferred one, and fit a model that predicts those preferences. Chess ratings, arena leaderboards, and reward models look like three different things, but they are three faces of one probabilistic model, and it is worth seeing the model plainly because once you do, a lot of machinery that looks ad hoc turns out to be inevitable.
The model in one line
The Bradley–Terry model assigns each item a positive strength and says that the probability item beats item in a comparison is its share of the combined strength.
That is the whole model. It is intuitive in the extremes — if the probability is exactly one half, and if is ten times then wins about ten times out of eleven — and it has the right invariances, because scaling every strength by the same constant leaves all the probabilities unchanged. That last fact means the strengths are only defined up to a common scale, which is why every rating system gets to choose its own units; we will see ELO choose a particularly strange and historically sticky one in a moment.
The model becomes far more recognizable if you take logs. Write , so the strength is , and look at the log-odds that beats .
The log-odds of a win is simply the difference of the two strengths on the log scale. Equivalently, in terms of the logistic function ,
and that should set off an alarm: this is logistic regression. The "features" are indicator vectors that are for the first competitor and for the second, the "weights" are the strengths , and the label is who won. Fitting a Bradley–Terry model to a pile of pairwise comparisons is nothing more than maximum-likelihood logistic regression where the design matrix happens to be sparse and structured. Everything that is true of logistic regression — convex loss, a unique maximum-likelihood solution under mild connectivity conditions, the works — is automatically true of Bradley–Terry.
Writing out that likelihood makes the connection to training concrete. Given a dataset of comparisons in which beat , the negative log-likelihood is
and minimizing it over the strength vector is the fit. Hold that expression; it is about to reappear verbatim as the loss function of an RLHF reward model.
ELO is online Bradley–Terry
Arpad Elo designed his chess rating system in the 1960s without the language of logistic regression, but he reinvented Bradley–Terry exactly. The only real differences are cosmetic units and the fact that ELO is online — it never refits the whole model, it just nudges two ratings after each game.
Start with the prediction. ELO writes the expected score of player against player as
which looks unlike only because of the base and the . Those are pure convention: using base instead of and dividing by just rescales the rating units, so an ELO point is a different-sized unit than a Bradley–Terry log-strength, related by a factor of . The was chosen so that a -point gap means the stronger player is expected to score about to . Underneath the costume it is the identical sigmoid.
Now the update. After a game with actual outcome (one for a win, zero for a loss, a half for a draw), ELO adjusts the rating by the prediction error, scaled by a step size .
This is not an arbitrary heuristic — it is stochastic gradient ascent on the Bradley–Terry log-likelihood, one comparison at a time. To see it, differentiate the log-likelihood of a single game with respect to . The derivative of is , so the gradient is when won, which is exactly the ELO update direction; plays the role of the learning rate. The symmetric structure — whatever gains, loses — falls out because the two ratings enter the log-odds as a difference, so their gradients are equal and opposite. ELO is gradient descent that nobody at the time called gradient descent.
The step size controls the speed–stability tradeoff that every online learner faces. FIDE uses for most players (smaller for masters, whose ratings should move slowly), so a single upset can swing a rating by tens of points. Chatbot Arena uses a far gentler — around in its online estimator — because it is averaging over a noisy crowd of human voters and wants the leaderboard to be stable rather than twitchy, and it ultimately prefers to refit the whole model in batch and report bootstrap confidence intervals rather than trust any single online trajectory.
The reward model loss is Bradley–Terry
Here is the payoff for LLM training. In RLHF you collect, for a prompt , two responses (the one a human preferred, the "winner") and (the "loser"), and you want to train a scalar reward model whose value is higher for responses people like. The loss used to train it, straight out of the InstructGPT paper and every descendant, is
Compare it to the Bradley–Terry negative log-likelihood from earlier. It is the same expression. The reward plays the role of the log-strength , so the model is implicitly setting the Bradley–Terry strength of a response to , and the probability the human prefers the winner is . The only thing that has changed from chess is that the strength is no longer a free parameter looked up per player — it is the output of a neural network that has to generalize the notion of "strength" to responses it has never seen. Training the reward model is fitting one gigantic Bradley–Terry model whose items are all possible responses and whose strengths are tied together by a shared network.
This is also the cleanest way to understand Direct Preference Optimization: DPO starts from the very same Bradley–Terry likelihood but, instead of fitting an explicit reward and then optimizing against it with RL, it substitutes the closed-form reward implied by the optimal RLHF policy and collapses the two stages into a single classification-style loss on the policy itself. The Bradley–Terry assumption is the load-bearing wall under both the classical reward-model route and its direct-optimization shortcut.
Ties, and what the model assumes
The plain model has no room for a draw — leaves no probability for "they were equally good," which is awkward when arena voters are given an explicit tie button and use it constantly. The standard fix is the Bradley–Terry–Davidson extension, which adds a tie parameter and a third outcome whose probability grows when the two strengths are close:
with the win probabilities rescaled by the same denominator. The geometric mean is largest, relative to the sum, exactly when the strengths match, so ties become likely between evenly matched competitors and rare in lopsided ones — which is what real data shows.
It is also worth naming the road not taken. Bradley–Terry is the logistic model of comparison; its older Gaussian cousin is Thurstone's model, which imagines each competitor's performance as a draw from a normal distribution and predicts a win whenever one draw exceeds the other, giving with the normal CDF in place of the logistic . The two curves are nearly indistinguishable in practice, and the logistic version won out for the same reason it wins everywhere: and its gradient are trivial to compute, while requires an error function. The difference between a reward model and a "Thurstone reward model" is, quite literally, which S-shaped curve you wrap around the score difference.
A worked example
Take two models with ELO ratings and , a -point gap. The predicted probability that beats is
so is expected to win about three times out of four, and symmetrically . Now suppose they play and wins, so . With the FIDE step size , the updates are
The favorite winning moves the ratings only a little, because the model already expected it; the information content of an expected result is low, and the gradient is small. Had the underdog won instead, its error would have been , more than three times larger, and the ratings would have lurched by points apiece. The update size is the surprise, which is the same reason cross-entropy loss punishes confident mistakes — both are the gradient of a log-likelihood. With Chatbot Arena's the same upset moves each rating by only about three points, trading responsiveness for the stability you want when the "games" are single human votes.
Seen this way, the leaderboard you read, the reward model you train, and the chess rating you earned in high school are the same object viewed from three angles. The next two posts turn to the other meaning of the word rank — not the ranking of competitors but the rank of a matrix — starting with the singular value decomposition, the factorization that explains why billion-parameter weight matrices can be compressed almost for free.