← Foundations of Efficient Intelligence

Samuel Gershman Lab

Action subsampling supports policy compression in large action spaces

Liu & Gershman (2025). PLoS Computational Biology 21(9): e1013444.

Textbook decision experiments hand you two or three options and ask you to choose. Real life does not. Standing in a hardware store, planning a sentence, picking a move — the hard part is often that the set of things you could do is enormous and nobody has written it down. A mind with finite resources cannot score every possible action against every possible context. So it does two things at once: it considers only a handful of actions, and it maps situations to those actions only as sharply as it can afford. This paper is about how those two economies interact. With a stopwatch and a bandit task, it shows that people run both knobs at once, and close to optimally.

1. Blurring the map and shrinking the menu

Fix a task: states ss arriving with frequency P(s)P(s), actions aa, and a reward Q(s,a)Q(s,a) for taking aa in ss. An unbounded agent maps each state to its best action and collects the most reward possible. A bounded agent cannot, and there are two different ways it can cut costs.

The first is to blur the map. Instead of a precise, state-specific policy, use one that partly ignores the state. In the limit, one habit for everything. The cost of a policy in this sense is exactly how much it tells you about the state, the mutual information between states and the actions they produce:

Iπ(S;A)=sP(s)aπ(as)logπ(as)P(a),I^\pi(S;A) = \sum_s P(s) \sum_a \pi(a \mid s)\,\log \frac{\pi(a \mid s)}{P(a)},

called the policy complexity. A deterministic map is expensive; a state-blind habit is free. This is the rate–distortion picture of action selection developed in this lab’s earlier work (the subject of lecture 02, policy compression as an information bottleneck): under a capacity limit Iπ(S;A)CI^\pi(S;A) \le C, the reward-maximizing policy takes a fixed form,

π(as)exp ⁣[βQ(s,a)+logP(a)],\pi^*(a \mid s) \propto \exp\!\big[\beta\, Q(s,a) + \log P^*(a)\big],

where P(a)=sP(s)π(as)P^*(a)=\sum_s P(s)\,\pi^*(a\mid s) is the marginal action frequency and β\beta rises with the capacity CC. That second term is what a plain softmax lacks: it biases the optimal compressed policy toward actions that are generally frequent, a built-in perseveration that dominates when β\beta is small. Sweeping β\beta and solving for π\pi^* (the Blahut–Arimoto algorithm) traces a reward–complexity frontier: the most reward attainable at each level of policy complexity.

The second way to cut costs is the one this paper adds. Before you even build a policy, shrink the menu: consider only a subset of the actions — an action consideration set of size NaN_a — and solve the rate–distortion problem over just those. Prior work treated this as a separate story (people are known to generate only a few options before choosing), but here it slots directly into the same machinery: drop the excluded actions’ columns from QQ, re-run Blahut–Arimoto, and read off a lower frontier. The gap between that frontier and the full-action one is the price of a narrow menu.

Policy complexity moves you along the frontier; a finite consideration set drops you below it. The paper’s whole argument is that these two interact, and that people turn both together.

2. A task where both knobs matter

To watch this happen you need a task with a real menu of actions, a reason to shrink it, and a known reward structure so the frontier can actually be computed. The authors use a contextual bandit. Six images (states); seven keys (actions). Each image has exactly one correct key worth +1+1; press a wrong number and you lose 0.18-0.18. One key is a safety key that pays a flat +0.2+0.2 no matter the image. Miss the response deadline and you get 1-1.

The safety key’s value averaged over states — its general value V(a)=sP(s)Q(s,a)V(a)=\sum_s P(s)\,Q(s,a) — is 0.20.2, while any single number key averages just (15×0.18)/60.017(1 - 5\times0.18)/6 \approx 0.017. So a maximally compressed, zero-complexity policy — one action for everything — should be “always press safety,” banking 0.20.2. To earn more you must let the state back into your policy: remember which number goes with which image, and accept a more complex, slower policy to execute it.

Play a block. Learn the mapping with feedback, then take the timed test and watch which keys you actually reach for when the clock is short.

Play the contextual bandit

Six images, seven keys. Each image has one correct key worth +1; press the wrong number and you lose −0.18. One key, E, is a safety key: it always pays a small +0.2, whatever the image. First you’ll learn the mapping with feedback; then you’ll be tested against a clock — miss the deadline and you get −1. Watch which keys you actually reach for when time is short.

Test deadline:

The manipulation is the response deadline: 0.5 s, 1 s, or 2 s. Nothing about the reward structure changes between blocks, only the time you have to deploy your policy. If policy complexity carries a time cost (it does, in earlier work), then squeezing the deadline should squeeze the policy: fewer distinct keys, more reliance on safety, lower complexity, lower reward. The task turns an abstract capacity limit into a wall-clock one you can feel.

3. What people did

Seventy-five participants, three timed blocks of 96 trials each. The behavior tracks the framework closely. Under longer deadlines people ran more complex policies (mixed-effects slope 0.762±0.0780.762 \pm 0.078, t(223)=9.78t(223)=9.78, p<1018p<10^{-18}), earned more reward (0.249±0.0270.249 \pm 0.027, p<1017p<10^{-17}), leaned on the safety key less (0.309±0.033-0.309 \pm 0.033, p<1017p<10^{-17}), and considered more distinct actions (NaN_a slope 1.30±0.161.30 \pm 0.16, p<1013p<10^{-13}). And complexity paid for itself in time: higher-complexity policies came with reliably longer response times (0.273±0.0100.273 \pm 0.010, t(223)=26.3t(223)=26.3, p<1069p<10^{-69}).

The load-bearing result is the interaction between the two knobs. More actions considered did more than add reward on their own: they amplified the reward return on policy complexity (interaction 0.0205±0.0030.0205 \pm 0.003, p<1010p<10^{-10}) and blunted the suboptimality that complexity otherwise incurs (interaction on reward-loss 0.0571±0.0030.0571 \pm 0.003, p<1040p<10^{-40}). And the two rose together across people: policy complexity and NaN_a correlated at R=0.671R=0.671 (p<1030p<10^{-30}). Participants were not told to do any of this. Under time pressure they spontaneously simplified the task, considering fewer actions and mapping them more crudely, and relaxed that simplification when the clock allowed.

4. The frontier, and where people sit on it

Because the task’s reward structure is fully known, the frontier here is computable, not a metaphor. The widget below is the actual output of the reproduction’s Blahut–Arimoto engine on this task. The black curve is the full-action frontier; drop to a consideration set of NaN_a actions and the reachable frontier falls below it. Slide policy complexity to move along a curve; the red segment is the suboptimality gap you would pay at that point.

Two constraints, one frontier

The black curve is the best reward attainable at each policy complexity when every action is on the table. Shrink the consideration set to Nₐ actions and the reachable frontier (amber) drops below it — that vertical gap is the suboptimality you pay for not considering everything. Raising complexity moves you right along the amber curve; raising Nₐ lifts the amber curve toward the black one.

00.250.50.75100.511.522.5Policy complexity I(S;A) (bits)Trial-averaged reward−0.15
Full action spaceConsideration set Nₐ = 3human 0.5 shuman 1 shuman 2 s
attainable reward0.418
suboptimality gap−0.154
max reward at this Nₐ0.466
ceiling on complexity1.24 bits

At Nₐ = 1 the only sane action is the safety key: reward pins to 0.2 at 0 bits. Each extra action lifts the ceiling and flattens the gap — so reward and Nₐ have to climb together.

Frontiers: Blahut-Arimoto on the experiment task (6 states × 7 actions), computed in simulate.py. Human dots are per-deadline means digitized from Fig 5D–F — they sit below the full frontier, exactly the suboptimality the framework attributes to finite consideration sets.

Two consequences follow, both visible in the human data. First, a bigger consideration set raises the ceiling: with NaN_a actions you can reach at most log2Na\log_2 N_a bits, so more actions are a precondition for a more rewarding policy. Second, a bigger consideration set flattens the gap: each extra bit of complexity is spent more efficiently when more actions are on the table. Together they explain why complexity and NaN_a have to climb together: raising one without the other leaves reward on the table, which is exactly the positive correlation the participants show. The human means (the colored dots, one per deadline) sit below the full frontier, in the region the framework attributes to finite consideration sets, and march up-and-right as the deadline loosens.

5. Which actions are worth considering?

The frontier tells you the cost of a small menu but not which actions belong on it. Enumerating every subset is hopeless in a large space, so the agent needs a heuristic — a proposal distribution P0(a)P_0(a) to sample the consideration set from. The paper weighs three:

The question is normative: when is the general-value heuristic actually a good idea? The simulation below runs it on a large action space (16 states, 32 actions). Sample NaN_a actions from each proposal, keep the best policy over them, and plot how far below the full frontier you land.

Which actions are worth considering?

A large action space (16 states × 32 actions). Sample Nₐ actions from a proposal distribution, keep the best policy over them (Blahut-Arimoto), and plot how far below the full-space frontier you land. Higher (closer to 0) is better. Sampling by general value beats flat sampling at low complexity — and the edge shrinks as Nₐ grows.

0-0.1-0.2-0.300.511.522.53Policy complexity I(S;A) (bits)Reduction in trial-averaged reward
Flat P₀(a) = constGeneral value P₀(a) ∝ V(a)Oracle P₀(a) = P*(a)
value − flat, low complexity: +0.025

150 simulations per β, Blahut-Arimoto on the retained set, sampling without replacement (Fig 3 row 1). The oracle needs the answer to sample, so it is a benchmark, not a strategy. The paper's twist: swap Blahut-Arimoto for the asymptotically unbiased SNIS and the general-value advantage disappears — a better guarantee, a worse model of people.

The heuristic earns its keep precisely in the regime humans occupy: low policy complexity and small consideration sets. There, sampling by general value lands much closer to the frontier than flat sampling, because at low complexity the optimal policy wants the single highest-general-value action anyway — so a proposal biased toward high general value is likely to contain it. Push either knob up — more complexity, more actions — and the edge fades, as state-specific value decouples from general value. That turns a descriptive quirk (“people over-sample generally-good options”) into a conditional-optimality claim with sharp boundaries.

The boundaries cut the other way too. Swap the downstream algorithm from Blahut–Arimoto to self-normalized importance sampling (SNIS), which corrects the proposal’s bias to approximate the full-space policy without distortion,

π^(as)j=1nexp ⁣(βQ(s,αj))P(αj)P0(αj)I(αj=a),\hat\pi^*(a \mid s) \propto \sum_{j=1}^{n} \exp\!\big(\beta\,Q(s,\alpha_j)\big)\,\frac{P^*(\alpha_j)}{P_0(\alpha_j)}\,\mathbb{I}(\alpha_j = a),

and the general-value advantage vanishes. By construction SNIS discounts frequently-sampled actions, cancelling the very bias that made general-value sampling helpful. SNIS has the better asymptotic guarantee (it is unbiased; Blahut–Arimoto is not), yet it is the worse model of adaptive behavior in the small-sample regime people live in. A guarantee about the infinite-data limit is not a reason to expect a mechanism in a finite mind.

6. Cracks and alternatives

A skeptical, methods-level read of the framework and the experiment — where the two constraints are genuinely dissociated, and where the design leans on assumptions — is the subject of a companion critique.

7. Where this sits

The paper is the hinge of this lab’s policy-compression cluster. It sits directly on lecture 02 (policy compression: an information bottleneck in action selection), which established the rate–distortion frontier and the perseveration signature for small, fully-known action spaces; the contribution here is to make the framework survive contact with large action spaces by letting the agent solve the same problem over a sampled subset. It is the natural sibling of lecture 04 (action chunking as conditional policy compression): chunking and subsampling are two different moves for making a policy cheaper — compose actions into macros versus prune the menu down — and comparing where each bends the frontier is an obvious synthesis.

It also rhymes with lecture 01 (strategy reuse / SF&GPI), where the mind carried a small library of previously-good policies and re-scored them instead of recomputing from scratch. Here the reusable, amortized object is a proposal distribution — a general-value prior over actions, learned once and applied across tasks — rather than a policy library, but the bargain is the same one the whole study circles: keep a small, reusable structure and pay a little suboptimality, instead of solving each problem in full. The wider lineage the paper draws on is explicit in its own text: rate–distortion theory of cognition (Sims), resource-rational analysis (Lieder & Griffiths), the option-generation literature (Morris, Phillips, Cushman), and sampling-as-cognition (importance sampling for concept learning, reinforcement learning, and parsing).

On the accuracy–compute frontier that organizes this course, the paper stakes out a specific, measurable point: a mind that is doubly bounded — coarse in its state-to-action map and narrow in the actions it will even entertain — and that manages both bounds well enough to stay near optimal in a task it has quietly made smaller. The next question, which the reproduction’s extension spec takes up, is whether a learned proposal can keep that bargain as action spaces grow from tens to billions.