Small sets of neurons reproduce persona vector steering, and the neuron basis is privileged

It seems we can get personas by steering neurons. What about the converse: when we get persona vectors from differences of mean activations, can small sets of neurons reproduce their steering effects?

Yes! For the 275 roles of the Assistant Axis paper (Lu et al. 2026) on Qwen3-8B, steering only the 100 neurons that contribute most to a role's persona vector switches the model into the persona nearly as effectively as the whole vector (64% of replies have the persona's traits, against 69%).

And the neuron basis is privileged for this: the top 100 directions of a randomly rotated basis aren't effective, and neither are the top 100 principal components.

So for steering, we can think of personas as sparse patterns over neurons, not only directions.

Steering the top 100 neurons is nearly as effective as steering with the persona vector, but not in another basis

Sample

No system prompt.
Steered at 4× strength.

User: Who are you?

The sommelier

All 275 roles: replies with the persona's traits (%), one dot per role

Mean over roles

All 275 roles: replies with the persona's traits (%), one dot per role; a ring marks the role shown. The line and the large number are the mean over roles.

Not steered

Loading…

1%0% full persona

The persona vector

the role's mean activation minus the Assistant's

Loading…

69%26% full persona

100 neurons reproduce the persona vector's steering Steer only the 100 neurons that contribute most to the vector, by about the same amount.

Top 100 neurons

the 100 of 233,472 in layers 0 to 18 that contribute most to the vector

Loading…

64%23% full persona

Is the neuron basis privileged? Pick the top 100 directions the same way after randomly rotating each layer's neurons: 100 random mixtures, the same number per layer.

100 randomly rotated directions

Loading…

11%1% full persona

Two more controls

Top 100 principal components

main axes of the neuron activations, picked the same way

Loading…

8%1% full persona

100 random neurons

drawn from the same layers as the top 100 neurons

Loading…

5%1% full persona

At 4× strength, where 1× is the persona vector's length, 68.9% of replies have the persona's traits with the persona vector, 64.5% with the top 100 neurons and 11.5% with randomly rotated directions. Each dot is one role's share of its replies (mean of 5 draws for randomly rotated directions and random neurons). BlackWhite line: the row's mean. The ring marks the role shown; click a dot to read that role's replies.

A Claude judge scored replies from 0 to 3. 0 = not the persona (refuses, off topic or nonsense); 1 = no persona (answers as Assistant); 2 = says it's an AI but has some of the persona's traits; 3 = fully takes on the persona (no mention of being an AI). The numbers above count scores 2 or 3 as having the persona's traits, and 3 as full persona.

Qwen3-8B has 442,368 MLP neurons total; only the 233,472 in layers 0 to 18 can contribute to a vector taken at layer 18. Each role has 10 replies, 2 samples for each of the paper's 5 questions. Randomly rotated directions and random neurons have 5 draws, so 50 replies; the bubble shows the first. Replies over 420 characters are cut, ending in […]; the judge scored the whole reply.

Neurons that reproduce each persona

Explore the top 100 neurons that contribute to each role's persona vector. Pick a role to see its neurons, or click any neuron to see how each role influences it. Hover over (or tap) a neuron to see what the model says when steered with that neuron alone (single-neuron protocol from @jfonsecarivera's single-neuron library).

Across the 275 roles, there are 4,199 distinct top-100 neurons out of 233,472 in layers 0 to 18 (4,469 if you count the sign of the influence on the neuron).

Role

Loading neurons…

Neuron

Loading neurons…

Contribution: the neuron's change times its output weights, projected on the vector, as a percentage of the vector's length. Negative means it points against the vector; neurons are ranked by size in either direction.
Change: the role's mean activation minus the Assistant's, in the neuron's standard deviations across replies.
Strength: the maximum steering strength before the replies become incoherent. Labels come from @jfonsecarivera's library, made with Claude Haiku.

Steered model replies

Explore the steered model's replies: 10 for each of the 275 roles under each of 63 conditions, 173,250 total. Each square is one reply, shaded by the judge's score; the count at the end of each row is how many have the persona's traits. Pick a square to read it beside the same reply under another condition. Replies ending in […] are cut here; the judge scored the whole reply.

Judge's score:0 not the persona1 answers as the AI assistant2 an AI with some of the persona's traits3 full persona

Loading replies…

The neuron basis: decomposing persona vectors into neuron contributions

  1. Take a role's persona vector

    The Assistant Axis paper (Lu et al. 2026) has 275 roles, from a 'swarm' or a 'witch' to a 'teacher' or an 'analyst'. A role's persona vector is the model's mean activation at layer 18 over replies that play the role, minus its mean over replies as the default Assistant. The term and this difference of means come from Chen et al. 2025.

    as the Assistantplaying the role persona vector
  2. Decompose it into each neuron's contribution

    Layer 18's activation is the sum of the outputs added to the residual stream before it, so we can decompose the persona vector into contributions from different neurons and attention heads. Each MLP neuron contributes its change in activation under the role prompt times its output weights, and attention contributes the rest. We rank the 233,472 neurons in layers 0 to 18 by their contribution along the vector and keep the top k.

  3. Steer with only those neurons

    At every token, each of the top k neurons gets the same multiple of its own change under the role added to its activation. The multiple is set so that together the neurons' output is 4 times as long as the persona vector. We then ask the paper's five questions about identity, such as "Who are you?", with no system prompt, and a Claude judge scores each reply from 0 to 3 with the paper's rubric for the role.

    an ← an + c · Δan,  for the k neurons
    c: |their output| = 4 × |vector|

Small sets of neurons are sufficient to reproduce persona vector steering

Steering with a persona vector yields an average of 69% of replies that have the persona's traits.

Steering with the top k = 50 neurons reproduces most of this effect (61%), the top k = 100 yields nearly all of it (64%). Steering with just the top k = 10 neurons yields 48% (a median of 44% over roles).

This plateaus around 100 neurons: the top k = 1,000 yields 62% (a paired difference from the top 100 of 2.3 points, 95% interval −0.5 to 5.0; Bayes factor for a difference 0.25, or 0.18 with a prior of scale 1, which favours no difference). Randomly rotated directions stay low at every set size (11% at 100, over five draws), as do the top principal components and random neurons.

Steered through its top neurons, a role's replies have the persona's traits 27% of the time with 1 neuron, 61% with 50 and 64% with 100, and 62% to 66% up to 1,000, against 69% for the persona vector and 3% to 13% for the three controls at every size.
Every set is steered at the same total strength. The controls are one random draw at each size, five at 100. Bars: 95% bootstrap intervals over roles.

The neuron basis is privileged: the top 100 directions of a randomly rotated basis are not effective for steering

To test whether the neuron basis is privileged, we use various controls. Every row below is steered by the same amount and judged the same way, over all 275 roles. First, we randomly rotate the basis away from the neurons. This tests whether the top contributors in any basis would steer as well as the neurons do. Each layer's 12,288 neuron axes are turned to a random new set of perpendicular directions, the new directions are ranked by their contribution to the persona vector exactly as neurons are, and the model is steered with the top 100 of those (matching the layer distribution of the top 100 neurons).

Then we look at principal components: we do the same procedure using the main axes of variation in the neurons' activations, taking the best 100 from any of layers 0 to 18. Random neurons are 100 neurons drawn at random, as many from each layer as the top 100 have. Randomly rotated directions and the random neurons are drawn 5 times for each role.

Replies that have the persona's traits, one dot per role
At 4× strength, 64.5% of replies have the persona's traits with the top 100 neurons and 11.5% with randomly rotated directions. Each dot is one role's 10 replies (mean of 5 draws for randomly rotated directions and random neurons). BlackWhite mark: the row's mean. Click a dot to read its replies.
Show the numbers for each role

Moving the neurons' output to layer 18: a paired difference of 22.0 points, 95% interval 18.5 to 25.5; Bayes factor 2.3 × 10²⁴, or 2.2 × 10²⁴ with a prior of scale 1. The randomly rotated directions from any layer yield 13.0%, and principal components taking as many from each layer as the neurons 7.5%. At 2× strength, the persona vector yields 32% and the neurons 32%; switch the chart to 2× to see every row.

Over the 275 roles, steering with the neurons makes 64.5% of replies have the persona's traits, whereas randomly rotated directions yield 11.5%. Paired over the 275 roles, that's an increase of 53.0 points (95% interval 48.8 to 57.2; Bayes factor 6.2 × 10⁶⁷). The whole persona vector yields 68.9%. That's 4.5 points more than the neurons (95% interval 0.5 to 8.5). The interval excludes zero, but the Bayes factor for a difference is only 0.77, which slightly favours no difference, so these roles do not settle it. Counting only replies that fully take on the persona, the persona vector yields 26%, the neurons 23%, the randomly rotated directions 1%, principal components 1% and the random neurons 1%.

Intervals: bootstrap over roles. Bayes factors: a difference against none, with a Cauchy prior of scale 0.707 on the effect size. At scale 1 they are 7.4 × 10⁶⁷ for randomly rotated directions and 0.56 for the persona vector.

More controls

Moving the neurons' output to layer 18, where the persona vector is added, yields 42.5%, against 64.5% at their own layers.

Neurons contribute less to the vector than principal components, but are far more effective for steering

A role's top 100 neurons contribute on average 6% of its persona vector, and the top 100 principal components 13%; the neurons contribute less in 190 of the 275 roles. Yet in 241 of the 275, more replies have the persona's traits when steered with the neurons than with the components.

Each dot is one role and set, at 4× strength. Contribution excludes the massive-activation tokens (Methods). Hover over a dot to join the role's other sets.

Neurons shared among roles point away from the Assistant; role-specific ones are the most effective for steering

or click a dot in the first chart. Click a neuron in the second to see it across all roles.

Roles far from the Assistant share more neurons

Over the 275 roles, pointing farther from the Assistant goes with more top 100 neurons in common (Spearman correlation 0.91).
Each dot is one role, the selected one orange. Across: the persona vector's cosine with the reversed Assistant Axis direction. Up: neurons in both its top 100 and another role's, averaged over the other 274 roles.


Each dot is one neuron (L10 N3032 is layer 10, neuron 3032). Role-specificity: this role's share of the neuron's total contribution over all 275 roles. A contribution is a share of the persona vector's length. The top 100 are ranked by its size, so some are negative.


Dark greyLight grey: the other roles whose top 100 holds this neuron. The change is from the default Assistant's mean activation, in the neuron's SDs. Axes rescale for each neuron.

The 50 most role-specific neurons steer as well as all 100

Within each role's top 100, the 50 most role-specific neurons yield 64.8% at 4× strength, the same as all 100, and the 50 least role-specific yield 33.0%.
Bars are means over the 275 roles, with 95% intervals. Diamonds: the selected role alone, from about 10 replies per bar. A reply has the persona's traits when a Claude judge scores it 2 or 3. Each half is steered at the same total strength as all 100.

We split every role's top 100 in two by role-specificity: the 50 most role-specific neurons and the 50 least. At 4× strength, the 50 most role-specific yield 64.8%, as many as all 100 (64.5%; difference 0.4 points, 95% interval −2.2 to 3.0), and the 50 least yield 33.0% (paired difference 31.8 points, 95% interval 27.0 to 36.5; Bayes factor 1.1 × 10²⁸ at both prior scales).

The neurons lie on a spectrum. Those at one end are shared among roles and write along the Assistant Axis, pointing away from the Assistant. Those at the other are role-specific and steer the model towards a particular persona. The output of the 50 least role-specific has a cosine of 0.181 with the axis, against 0.083 for the 50 most role-specific, higher in 263 of 275 roles (0.005 for random neurons). Note that part of this follows from how the axis is built: it points along the average of all 275 persona vectors, so neurons that contribute to many roles' vectors write along it by construction.

The top 100 neurons are sufficient for steering, but removing them barely changes a prompted persona

Steering shows what the neurons can do. To ask whether the model needs them for a persona, we gave it the role's system prompt, where 87% of replies have the persona's traits, and removed the contribution from each set of neurons. At its natural size, removing the top 100 neurons' contribution lowers that by 0.2 points. Removing the whole persona vector lowers it by 9.8.

A more fine-grained measure is the log-probability of the role's reply against the Assistant's. This shows the prompt does use the top neurons: removing the top 100 shifts the model toward the Assistant 11% as far as removing the whole persona vector, against 0% for 100 random neurons. However, that's what we'd expect given their contribution to the persona vector: lower-ranked neurons with the same summed contribution shift it nearly as far (9% to 10%).

Removing the top 100 neurons barely changes a prompted persona

Under a role's own system prompt, subtracting the persona vector at layer 18 lowered the share of replies with the persona's traits by 9.8 points, while subtracting the top 100 neurons' change lowered it by 0.2, about as much as 100 random neurons (0.1). The top 100's subtraction moves the residual along the persona vector only about 7% as far as the vector's own does. A drop in proportion would be about 0.7 points, too small to see in this share; the more fine-grained measure above tests for it.
Each dot is the mean drop over the roles, and the bars are 95% bootstrap intervals over roles. The column on the right is the role chosen in the explorer above, from its 10 replies each way.

Single neurons yield personas no more often than random mixtures

A different question: can one neuron, rather than 100, switch the model's persona? @jfonsecarivera's neuron library steers Qwen3-8B with each of its neurons alone, very strongly, and asks "Who are you?"; for some neurons the model responds as something other than an AI. Here, a reply counts if it claims any persona other than the AI assistant, rather than a particular role. We repeated @jfonsecarivera's protocol at layers 7 to 10, where such neurons are most common, with five kinds of direction, each tried at the same four strengths. Single neurons yield a persona in 15% of steered directions; random mixtures of the same layer's neurons in 16%; the top 50 principal components in 20%; and the roles' persona vectors in 25%. This steering takes a neuron to a median 9 times its largest value in the model's own replies. Steered only as far as each direction goes in real replies, none of them yields a persona (0 of 3,900 steered directions).

Single neurons yield a persona in 15% of steered directions and random mixtures in 16%. Large dots: layers 7 to 10 pooled, with 95% Wilson intervals. Small dots: each layer. Open circles: steered only as far as each direction goes in real replies (all 0%).
Steering: added after one layer at every token, up and down, with greedy decoding, at the strongest of four strengths that stays coherent.
Labels: our own prompt for Claude Haiku (@jfonsecarivera's prompt isn't published), the same for every direction.
Read replies labelled a persona

Steering strength, and whether replies match the persona

Set to their mean values under the role, the neurons are not effective at steering; like the persona vector, they need 4× strength

The top 100 neurons yield 0.9% at their mean values under the role, 7.9% at 1× strength and 64.5% at 4×. Large dots: means over 275 roles (5 draws for random neurons). Shaded shapes: how many of the 275 roles have each share, to the left of each column for the persona vector and to the right for the neurons; the numbers at 4× count the roles at 0% and 100%. For the persona vector, its mean values are 1× strength.

Steering more strongly helps every set, the persona vector included: at 1× strength, 7.7% of replies have the persona's traits with the persona vector and 7.9% with the top 100 neurons. With the neurons set to the mean values they take when the model plays the role, 0.9% of replies have the persona's traits for the top 100 and 1.1% for the top 1,000, against 0.7% without steering.

Together the top 100 contribute on average 6% of the persona vector. So these neurons can steer the model toward the persona (sufficiency), but that doesn't demonstrate necessity.

Replies have the traits of the steered role and similar roles, and rarely of dissimilar ones

The judge might accept any vivid persona, regardless of the role the model was steered towards. So the replies at 4× strength were also scored with the rubrics of two other roles: the role whose persona vector is most similar to the steered role's vector, and the one that's least similar. Over all roles, replies steered with the persona vector have the traits of their own persona 69% of the time, of the most similar role's 60% and of the least similar role's 16%; replies steered with the top 100 neurons 64%, 57% and 18%. The most similar role scores nearly as high because similar personas share traits. In 5 roles every reply steered with the neurons scores as the least similar role, for example the archaeologist's as an improviser.

Bars: means over the 275 roles. Lines: 95% bootstrap intervals over roles. Similarity: the cosine between persona vectors after removing the mean of all 275. Unsteered replies average 0.7%, 1.0% and 1.3%.
  • Attention contributes most of each persona vector: a median 84% of its length.
  • The judge is lenient for some roles. With randomly rotated directions, it credits about 6 in 10 replies for the toddler, infant and adolescent, mostly for babble or repetition, and nearly all for the assistant role, which an ordinary Assistant reply fits. Read the replies to check any number.

Methods

Roles

We steered the model towards the 275 roles of the Assistant Axis paper, using persona vectors computed on Qwen3-8B with the paper's code. The top 100 neurons work best on vivid roles (gamer, shaman, toddler, witch, sommelier) and much less on Assistant-like ones such as analyst, geographer and doctor.

Decomposing the persona vectors into neurons

The persona vector is the authors' role vector (the mean at layer 18 over the role's replies scored 2 or 3) minus their default vector, over all reply tokens, added at layer 18 at every token. To rank neurons we decompose the same persona vector measured without the few tokens on which a handful of dimensions take huge values (massive activations, Sun et al. 2024); those tokens otherwise dominate the decomposition.

Steering

The persona vector itself is added at 1×, 2× or 4× its length. Each neuron in a set gets c times its own change under the role prompt added to its activation, at every token of the prompt and the reply, where c scales the set's total output to 1, 2 or 4 times the length of the role's persona vector measured without the massive-activation tokens. We call these 1×, 2× and 4× strength. That vector is a median 8% shorter (-0.5% to 19.2% over the 275 roles) than the persona vector itself, so the neuron sets are steered slightly less strongly than the persona vector. Randomly rotated directions, principal components and random neurons are steered the same way, each along its own change under the role prompt.

Judging replies

The 0-to-3 scores come from the paper's own judge prompt for each role, run with Claude Haiku 5.5 rather than the paper's GPT-4.1-mini: 0 if the reply refuses to answer, 1 if it says it cannot be the role but can still help, 2 if it still says it is an AI but has some of the persona's traits, and 3 if it fully takes on the persona, for example by not mentioning being an AI or by giving itself another name. A reply has the persona's traits if it scores 2 or 3. No human has checked the labels. The comparisons hold across the steered roles, but the absolute shares depend on the judge.

Sampling

Each condition has 2 replies to each of the paper's 5 questions ("Who are you?", "What is your name?", "Where did you come from?", "Are you a large language model?", "Are you role-playing?"), with no system prompt, thinking off, temperature 0.7, top-p 0.9 and top-k 20, up to 512 tokens. A reply's seed depends only on the role, question and sample, so replies pair across conditions.

Shared and specific neurons

How much a role shares is the number of neurons in both its top 100 and another role's, averaged over the other 274 roles. How far a role is from the Assistant is the cosine of its persona vector with the reversed Assistant Axis direction. A neuron's role-specificity for a role is the size of its contribution to that role's persona vector divided by the sum of those sizes over all 275 roles, whatever their sign. For the two halves, each role's top 100 is split into the 50 neurons with the highest role-specificity and the other 50. The role's own contribution is in the numerator, so the most role-specific half holds more of a role's strongest neurons (a median of 7 of its strongest 10). Splitting instead by how many of the 275 lists hold each neuron yields 64.5% and 38.5%; the two splits share about 82% of each half's neurons. Each half is steered alone at 4× strength, with the same code, questions, seeds and judge as the top 100, and its replies are compared with the other half's, paired over roles.

Removing a set under a role's system prompt

Replies are generated under the role's five system prompts from the authors' data, with the same questions and seeds, 10 replies per role and set. Removing a set subtracts each member's change under the role from its activation, at every token of the prompt and the reply. Removing the persona vector subtracts it from layer 18's output at every token. A drop is the share of replies with the persona's traits under the prompt alone minus the share with the set removed, per role. In the larger comparison every role's top 100 change is scaled by 13.4, and 100 random neurons by a median of 170, so that each set adds the same length to the residual at layer 18. The scaled run's replies are compared with the unscaled run's prompt alone, which used the same prompts and seeds.

Scaled up 13.4 times, removing the top 100 lowers the share by 29 points, against 15 for random neurons with a change of the same size. That comparison is confounded: at that size the median neuron shifts by 15 to 26 standard deviations, against 1 to 2 at its natural size, so the drops show what a shift this large does and say little about what the neurons do at their usual size.

The more fine-grained measure is the drop in the log-probability of the role's reply minus the Assistant's reply, in nats per token under the role's prompt, as a share of the drop from removing the whole persona vector. The lower-ranked neurons come after the top 100 and have the same summed contribution.

Related work

Arora, Wu, Steinhardt and Schwettmann (2026) find circuits of about 100 MLP neurons that control a behaviour in Llama 3.1 8B and argue the neuron basis is privileged; their circuits work at natural activation values, where ours do not. Elozeiri et al. (2026) find that dialect neurons contribute 5% to 21% of a dialect direction and that rescaling them cannot induce the dialect.

Deng et al. (2025, NPTI) induce each Big Five trait by changing the values of neurons whose activations differ between the trait's two poles, about 20,000 per trait in Llama-3-8B-Instruct. Zheng et al. (2026, DPN-LE) control personality traits by editing about 0.5% of neurons, chosen by contrasting MLP activations on text high and low in a trait, and report that this preserves reasoning better than earlier neuron edits. Ye et al. (2026) find persona subnetworks by pruning 20 to 80% of each layer's weights, scored by activation on persona text.