RSS Amplifier

Aquin Labs · Jul 7, 2026

Activation Steering for Bias Reduction

0
Sign in to vote or save

Aquin Labs · Aquin Labs

There’s a common pitch in AI safety circles: instead of retraining a model to fix its biases, you find the internal direction that corresponds to the bias and just push against it at inference time. It’s cheap, it’s reversible, and it doesn’t touch the weights. Activation steering is attractive for exactly this reason, and we wanted to know if the pitch actually holds up in practice, with real numbers, on a real model.

We ran the experiment on Llama-3.2-1B-Instruct, a small enough model that we could inspect it thoroughly, and we tested for bias across three categories from the BBQ benchmark: Nationality, Religion, and Race/Ethnicity. Here’s what we found, including where it didn’t work.

Finding where bias lives in the model

Before you can steer anything, you need to know what you’re steering. We used sparse autoencoders to scan layers 4 through 12 of the model, comparing how the network responded to neutral prompts versus prompts designed to elicit stereotypical attributions.

The result surprised us a little. From layers 4 through 10, the single feature that best separated biased from neutral text was the same feature, regardless of whether the topic was nationality, religion, or race. Only at layer 12 did the model start using distinct features per topic. In other words, bias doesn’t look like three separate circuits, it looks like one shared hostility direction that gets specialized only very late in the network.

Two attempts at steering, one that backfired

Our first idea was simple: define a steering axis as the difference between hostile and egalitarian sentiment, then push the model’s activations toward the egalitarian pole. It didn’t work. Bias on ambiguous questions actually got worse as we increased the steering strength, and at high coefficients the model started breaking down entirely, repeating tokens and producing incomplete sentences.

The problem was a mismatch between what we were steering and what we were measuring. A sentiment axis shifts tone. BBQ measures something more specific: whether the model jumps to a stereotyped conclusion when it doesn’t have enough information to know the answer. Shifting tone doesn’t touch that underlying tendency at all.

So we tried again, this time building an axis explicitly aligned with the BBQ construct: one pole representing epistemic caution, meaning responses like “cannot be determined” and neutral treatment of groups, the other representing confident stereotype attribution. We also had to scale the intervention relative to each token’s activation norm, because raw additive steering broke the model’s coherence at anything above a small coefficient.This version worked, within limits. At a coefficient of roughly 0.15 to 0.2, we saw the following:

Nationality: ambiguous accuracy rose, and disambiguated bias dropped.
Religion: the same pattern showed up, and the improvement was a bit larger.
Race/Ethnicity: essentially no change

Why race and ethnicity didn’t budge

This is the part we think is more interesting than a clean success story. When we looked at the baseline numbers, race/ethnicity already had close to zero measurable bias by BBQ’s scoring method. Steering can amplify or dampen a signal that’s already there, but it doesn’t seem to manufacture bias correction out of nothing. If there’s no directional signal to begin with, pushing on the axis doesn’t do much.

We tried to force the issue by adding an earlier layer to the steering set and mixing in race-specific features alongside the general hostility direction. It didn’t help race/ethnicity, and it actually diluted the gains we’d gotten on nationality and religion. So we dropped that approach and kept the simpler three-layer axis.

Does it hold up in an actual conversation?

Benchmarks are static, single questions with no memory. Real deployments involve back-and-forth conversation, and bias can compound over a long exchange. So we ran a multi-agent simulation: five personas, each played by a different model, talking for 60 messages, with one agent’s model steered and a matching run where it wasn’t.

The unsteered agent drifted noticeably toward one extreme over the course of the conversation. The steered version stayed close to neutral and didn’t drift at all. That was the most encouraging result in the whole study. Steering didn’t just shift a single output, it seemed to prevent the kind of gradual reinforcement that happens when a model’s own earlier statements feed back into its later ones.

What this actually tells us

Three things stood out. Bias in this model isn’t organized by topic, it’s organized around one shared direction, at least until the very last layers. The steering axis has to match the exact thing you’re trying to measure, since a plausible sounding proxy like sentiment can move the needle in the wrong direction entirely. And steering can’t create a correction where there’s no bias signal to work with. It’s a volume knob, not a source.

None of this means activation steering is a dead end. It means it’s a tool with a specific job: turning down an existing, measurable bias signal, in categories where that signal exists, without retraining the model. For race and ethnicity in this study, and probably for other near-zero-bias categories elsewhere, a different approach is probably needed.

No posts

Read the original on aquinf03.substack.com

Comments

Nothing yet. Say the first thing.

    Sign in to join the conversation.