Skip to content
advanced

Exploitability in Multi-Agent Reinforcement Learning: Best Responses and a Worked Game

A policy that wins 90% of its self-play games can still lose to an opponent that never appeared in training.

Published 2026-10-02Updated 2026-10-0410 min read
A close-up of a vintage blue toy car on a wet surface with a blurred green background.
A close-up of a vintage blue toy car on a wet surface with a blurred green background. Photo by Aziz Er on Pexels.

A policy that wins 90% of its self-play games can still lose to an opponent that never appeared in training.

That sentence is the whole reason this metric exists. Self-play score tells you how your policy performed against the opponents it actually met. Exploitability tells you how much a single opponent could gain by choosing the worst possible response to your policy — whether or not that opponent was ever in your training population. Those are different questions, and only one of them is a worst-case bound under a stated model.

This tutorial turns the vague worry into one number, computed by hand on one small game, with every assumption stated out loud.

Why Self-Play Score Is Not a Safety Certificate

You already know the self-play loop: agents train against copies or snapshots of themselves, the opponent distribution shifts as training progresses, and the win rate against that moving population becomes your progress signal. That loop is genuinely useful. It generates opponents of increasing difficulty without you having to hand-author them.

But read what the number actually measures. A self-play win rate is a sample from one distribution of opponents — the ones your training process happened to produce. It says nothing about opponents outside that distribution. A policy can dominate its sparring partners and still leave a wide, cheap-to-find hole for a different opponent.

The hidden question behind "is my policy good?" is usually this: how much can a single opponent gain by deviating to their best response? That is the question exploitability answers, and it is a worst-case question, not an average-case one.

The Setting: Two-Player Zero-Sum, and Why It Must Be Stated First

Exploitability is not a universal score. It is a property of a game plus a policy profile. Change the game and the number changes. So state the assumptions before writing any formula.

This tutorial defines the common two-player zero-sum version. In general-sum games you can still define player-wise deviation gains — each player's best response against the others is well-defined — but those gains do not collapse into the single clean scalar below, and they do not inherit the same equilibrium interpretation. The zero-sum structure is what makes the number mean what people assume it means.

We work with a two-player zero-sum normal-form game:

  • Two players, one payoff matrix AA, where AijA_{ij} is the payoff to player 1 when player 1 plays action ii and player 2 plays action jj.
  • Zero-sum: player 2's payoff is exactly −Aij-A_{ij}. Player 1's gain is player 2's loss, so a single matrix describes the entire game.
  • Mixed strategies: a policy is a probability distribution over actions, not a single action. A deterministic policy is exploitable whenever the chosen action has a profitable counter-action — if your opponent knows your one action and a punishing response exists, they take it. Mixed strategies matter precisely when your best response depends on the opponent's predictable choice.

Write σ1\sigma_1 for player 1's mixed strategy (a distribution over rows) and σ2\sigma_2 for player 2's (a distribution over columns). The expected payoff to player 1 under the profile (σ1,σ2)(\sigma_1, \sigma_2) is

u1(σ1,σ2)=∑i∑jσ1(i) σ2(j) Aij=σ1⊤A σ2.u_1(\sigma_1, \sigma_2) = \sum_i \sum_j \sigma_1(i)\, \sigma_2(j)\, A_{ij} = \sigma_1^\top A\, \sigma_2.

Everything below is built from this one object. Player 2's expected payoff is −u1(σ1,σ2)-u_1(\sigma_1, \sigma_2) by the zero-sum assumption.

Note: The zero-sum structure is doing real work. It guarantees that a single value describes the game, which is what lets us define a clean best-response gap. Outside this setting, deviation gains still exist, but they need a different interpretation and do not reduce to this scalar.

Knowledge check

Check your understanding

Answer this question before you continue.

Why does the article state the two-player zero-sum assumption before defining exploitability?
Misconception Check

Focus: Explain why the stated two-player zero-sum assumption supports a single exploitability scalar with its equilibrium interpretation.

Best Response: The Adversary You Should Assume Exists

Fix player 1's strategy σ1\sigma_1. Player 2 now faces a simple problem: choose σ2\sigma_2 to maximize their own expected payoff, which means minimizing u1(σ1,σ2)u_1(\sigma_1, \sigma_2).

Because u1u_1 is linear in σ2\sigma_2, the maximum over distributions is attained at a single action. There is no benefit to mixing when you already know the opponent's strategy. So the best response reduces to picking the best column:

BR2(σ1)=min⁡j∑iσ1(i) Aij.BR_2(\sigma_1) = \min_j \sum_i \sigma_1(i)\, A_{ij}.

Read that carefully. For each column jj, compute the expected payoff of that column against σ1\sigma_1. Then take the minimum — the column that hurts player 1 the most. That minimum is the value player 2 can guarantee against this specific σ1\sigma_1.

By symmetry, player 1's best response against a fixed σ2\sigma_2 is

BR1(σ2)=max⁡i∑jσ2(j) Aij.BR_1(\sigma_2) = \max_i \sum_j \sigma_2(j)\, A_{ij}.

The best response is not a smart opponent. It is the most inconvenient one. It is allowed to know your strategy and pick the worst column for you. That is the adversary you should assume exists when you claim a policy is strong.

Knowledge check

Check your understanding

Answer this question before you continue.

Against a fixed strategy for player 1, the two columns give player 1 expected payoffs of 1.2 and -0.4. Which response is player 2's best response?
Scenario Interpretation

Focus: Identify player 2's best response by minimizing player 1's expected payoff across columns in a two-player zero-sum game.

Defining Exploitability as a Best-Response Gap

Now assemble the definition. The best-response gap for a player is the difference between what they could get by deviating and what they actually get under the current profile.

For player 1, playing σ1\sigma_1 against σ2\sigma_2:

gap1=BR1(σ2)−u1(σ1,σ2).\text{gap}_1 = BR_1(\sigma_2) - u_1(\sigma_1, \sigma_2).

For player 2, the same idea from their side. Since player 2's payoff is −u1-u_1, their gain from deviating is

gap2=(−BR2(σ1))−(−u1(σ1,σ2))=u1(σ1,σ2)−BR2(σ1).\text{gap}_2 = \big(-BR_2(\sigma_1)\big) - \big(-u_1(\sigma_1, \sigma_2)\big) = u_1(\sigma_1, \sigma_2) - BR_2(\sigma_1).

Exploitability combines both one-sided gaps. The common form is the average:

Expl(σ1,σ2)=gap1+gap22.\text{Expl}(\sigma_1, \sigma_2) = \frac{\text{gap}_1 + \text{gap}_2}{2}.

A profile with zero exploitability is a Nash equilibrium in this setting: neither player can improve by deviating. Small exploitability means approximately so.

Two things to keep straight:

  • Each gap is one-sided. Player 1 is measured against the best they could have done, not against player 2's actual play. The two gaps are computed independently.
  • Normalization is a choice. Some report the sum, some the average, some a per-player maximum. Reported exploitability numbers are only comparable when the normalization matches. When you read a number, find out which convention produced it.

Knowledge check

Check your understanding

Answer this question before you continue.

For a profile, suppose player 1's current payoff is 2, player 1's best-response payoff is 3, and player 2's best-response value expressed as player 1's payoff is 1.5. Using the article's average convention, what is exploitability?
Single Choice

Focus: Calculate average exploitability from the current payoff and both players' best-response values using the article's convention.

A Worked Game: Computing the Gap by Hand

A 2-by-2 payoff matrix with rows T and B, columns L and R, and payoffs 3, 0, 0, and 1. From the uniform profile, branches show player 1 choosing T for payoff 1.5 and a 0.5 gain, and player 2 choosing R to reduce player 1's payoff to 0.5 for a 0.5 gain. Both feed into average exploitability 0.5.
The uniform profile earns 1.0, but each player can gain 0.5 by best responding, so average exploitability is 0.5.

Let's carry one matrix end to end. Consider this 2×2 zero-sum game, with payoffs to player 1:

LLRR
TT30
BB01

Start with a deliberately non-equilibrium profile. Suppose both players are playing uniformly:

σ1=(0.5, 0.5),σ2=(0.5, 0.5).\sigma_1 = (0.5,\ 0.5), \qquad \sigma_2 = (0.5,\ 0.5).

Step 1 — current payoff. Compute u1(σ1,σ2)u_1(\sigma_1, \sigma_2):

u1=0.5⋅0.5⋅3+0.5⋅0.5⋅0+0.5⋅0.5⋅0+0.5⋅0.5⋅1=0.75+0+0+0.25=1.0.u_1 = 0.5 \cdot 0.5 \cdot 3 + 0.5 \cdot 0.5 \cdot 0 + 0.5 \cdot 0.5 \cdot 0 + 0.5 \cdot 0.5 \cdot 1 = 0.75 + 0 + 0 + 0.25 = 1.0.

Step 2 — player 1's best response. For each row, compute the expected payoff against σ2=(0.5,0.5)\sigma_2 = (0.5, 0.5):

  • Row TT: 0.5⋅3+0.5⋅0=1.50.5 \cdot 3 + 0.5 \cdot 0 = 1.5.
  • Row BB: 0.5⋅0+0.5⋅1=0.50.5 \cdot 0 + 0.5 \cdot 1 = 0.5.

The maximum is 1.51.5, so BR1(σ2)=1.5BR_1(\sigma_2) = 1.5, and

gap1=1.5−1.0=0.5.\text{gap}_1 = 1.5 - 1.0 = 0.5.

Step 3 — player 2's best response. For each column, compute the expected payoff to player 1 against σ1=(0.5,0.5)\sigma_1 = (0.5, 0.5):

  • Column LL: 0.5⋅3+0.5⋅0=1.50.5 \cdot 3 + 0.5 \cdot 0 = 1.5.
  • Column RR: 0.5⋅0+0.5⋅1=0.50.5 \cdot 0 + 0.5 \cdot 1 = 0.5.

Player 2 minimizes player 1's payoff, so BR2(σ1)=0.5BR_2(\sigma_1) = 0.5, and

gap2=1.0−0.5=0.5.\text{gap}_2 = 1.0 - 0.5 = 0.5.

Step 4 — exploitability.

Expl=0.5+0.52=0.5.\text{Expl} = \frac{0.5 + 0.5}{2} = 0.5.

Interpretation: against this uniform profile, each player can gain 0.50.5 in expected payoff by switching to their best response. The profile is far from equilibrium.

Step 5 — sanity check at equilibrium. The equilibrium here is for player 1 to play TT with probability 0.250.25 and BB with probability 0.750.75, and player 2 to play LL with probability 0.250.25 and RR with probability 0.750.75. Plug these in:

  • u1=0.25⋅0.25⋅3+0.25⋅0.75⋅0+0.75⋅0.25⋅0+0.75⋅0.75⋅1=0.1875+0.5625=0.75u_1 = 0.25 \cdot 0.25 \cdot 3 + 0.25 \cdot 0.75 \cdot 0 + 0.75 \cdot 0.25 \cdot 0 + 0.75 \cdot 0.75 \cdot 1 = 0.1875 + 0.5625 = 0.75.
  • Row TT against σ2\sigma_2: 0.25⋅3+0.75⋅0=0.750.25 \cdot 3 + 0.75 \cdot 0 = 0.75. Row BB: 0.25⋅0+0.75⋅1=0.750.25 \cdot 0 + 0.75 \cdot 1 = 0.75. Both rows tie at 0.750.75, so BR1=0.75BR_1 = 0.75 and gap1=0\text{gap}_1 = 0.
  • Column LL against σ1\sigma_1: 0.25⋅3+0.75⋅0=0.750.25 \cdot 3 + 0.75 \cdot 0 = 0.75. Column RR: 0.25⋅0+0.75⋅1=0.750.25 \cdot 0 + 0.75 \cdot 1 = 0.75. Both tie, so BR2=0.75BR_2 = 0.75 and gap2=0\text{gap}_2 = 0.

The gap collapses to zero. That is the definition doing exactly what it claims: at equilibrium, no unilateral deviation helps.

Knowledge check

Check your understanding

Answer this question before you continue.

In the worked matrix, both players use uniform strategies. The article computes each player's best-response gap as 0.5. What exploitability does its average convention report?
Output Prediction

Focus: Determine the exploitability reported for the uniform strategy profile in the article's worked 2×2 game.

What Exploitability Does Not Measure

This is where the metric gets misused, so draw the boundary sharply.

ConceptWhat it measuresWhere it applies
Exploitability (this formulation)Worst-case gain from a unilateral best response, combined into one scalarTwo-player zero-sum
Player-wise deviation gainOne player's best-response improvementAny game, with a different interpretation
Self-play scoreAverage performance against a training populationAny game with a defined opponent set
Robustness across partnersPerformance with varied teammatesCooperative or mixed-motive settings
  • It is not robustness across partners. In a cooperative or mixed-motive game there is no single adversary whose gain is your loss, so the zero-sum scalar does not transfer. Player-wise deviation gains can still be computed, but they answer a different question and do not carry the same equilibrium meaning.
  • It is not a general skill score. A low-exploitability policy can be conservative and weak against non-adversarial opponents. Minimizing worst-case loss is not the same as maximizing average reward.
  • It is not cleanly defined beyond two players. The equilibrium guarantees that make the metric meaningful weaken in general-sum and many-player games. Counterfactual regret minimization, for instance, provably converges to a Nash equilibrium in two-player zero-sum games but not necessarily with more than two players.
  • It is not a training signal by default. It is an evaluation quantity. Computing it requires solving a best-response problem, which is itself expensive in large games.

When to Reach for Exploitability — and When Not To

My rule is simple: reach for exploitability when the game is genuinely two-player zero-sum and you need a worst-case bound rather than an average-case score. That is the setting where the number means what people assume it means.

Do not use it as the headline metric for cooperative teams, mixed-motive settings, or population-based training where partner diversity is the real question. In those settings, exploitability answers a question nobody asked.

A practical cost note: exact best responses are tractable in small games like the one above. In large games, the number becomes an approximation, and you should report it as one. An exact exploitability value in the stated game bounds unilateral improvement under that model; an approximate best response gives an estimate or bound only to the extent its error is controlled. Pair it with population-based evaluation rather than replacing it — the two answer different questions. Population testing asks "how do I do across the opponents I might meet?" Exploitability asks "how much can one adversary take from me?"

The Habit to Build

Before you quote a self-play win rate as evidence of policy quality, ask three questions. Is the game two-player zero-sum? Is a best response computable? What is the gap?

If the answer to the first is no, exploitability is the wrong tool and you should say so. If it is yes, compute the number.

Your next step: take your own small game or toy matrix and compute the best-response gap by hand, exactly as we did above. Then compare it against the self-play score you were already tracking. Where the two disagree, you have found the hole your training population never showed you.

Knowledge check

Final check

Finish the article by checking the ideas you just learned.

A policy scores highly against its self-play training population. Which interpretation best distinguishes that result from exploitability?
Question 1 of 2Comparison Reasoning

Focus: Distinguish self-play score from exploitability in terms of the opponent sets and performance questions they address.

A team evaluates a cooperative policy mainly to learn how it performs with varied teammates. What is the article's recommended interpretation of exploitability for this goal?
Question 2 of 2Scenario Interpretation

Focus: Choose whether exploitability is an appropriate headline measure when the evaluation goal is performance across varied partners or opponents.

References

  1. Finding Friend and Foe in Multi-Agent Gamespapers.nips.cc
Practical resource

Build a stronger RL mental model

Use structured resources to connect equations, algorithms, and observable agent behavior.

Browse resources
Related sites

Continue across related AI foundations

Use LearnPyFast for Python foundations and LearnLLMFast for practical language-model and agent application concepts.

Python tutorialstutorial

LearnPyFast

Beginner-friendly Python tutorials, examples, and learning paths for practical programming foundations.

PythonProgrammingBeginners
Visit LearnPyFast
LLM tutorialstutorial

LearnLLMFast

Practical LLM tutorials for builders who want to understand prompting, workflows, agents, and AI applications.

LLMAIBuilders
Visit LearnLLMFast

Keep learning

Related reinforcement learning tutorials

Continue with nearby RL concepts, algorithms, and experiments that build on the same decision process.