---
title: "Steering models along emotion and persona directions — Tanuj Dargan"
description: "If a concept like joy, distress or certainty is a direction in the residual stream, can we find it cheaply, and does adding it change behaviour the way the label promises?"
canonical: https://tanujdargan.com/research/activation-steering
resume: on request
updated: 2026-11-07
---

# Steering models along emotion and persona directions

- Author: Tanuj Dargan (https://tanujdargan.com/)
- Where: Method replicated on Qwen2.5-1.5B-Instruct for this site
- When: 2026
- Tags: interpretability, steering, persona vectors
- Web page (with live demo): https://tanujdargan.com/research/activation-steering

> Scope: the results below come from a replication of the method on Qwen2.5-1.5B-Instruct, run for this site. They are not the numbers from his main steering project.

## Question

If a concept like joy, distress or certainty is a direction in the residual stream, can we find it cheaply, and does adding it change behaviour the way the label promises?

## Method

- Contrastive extraction. Generate answers under a positive and a negative system prompt, then read those answers back without the system prompt. Average the residual stream over answer tokens only.
- The direction is the difference of means. Choose the layer by class separation (d′), restricted to the middle third of the network.
- Steer by adding α·‖h‖·v̂ at that layer on every position, and decode greedily. Measure the effect by projecting each steered output back onto v̂ through the unsteered model.
- The pipeline scales from one concept to a bank: one shared prompt set, vectors per model, and a validation gate. A vector only ships if steering along it moves behaviour the way its label says.

## Results

- Replication on Qwen2.5-1.5B-Instruct, run for this site (the live demo is on the web page). Joy steering is a switch, not a dial. Between +0.3 and +0.6‖h‖, "As an AI language model, I don't have the ability to experience…" becomes "Ah, the sweet aroma of fresh coffee…", and the read-back projection jumps from −8.0 to +9.6. Steering negative barely moves the text, because the default assistant voice is already flat.
- The distress direction does not produce anxious prose. Push it and the model refuses instead: "I'm sorry, I can't assist with that." Extracted this way, it overlaps with refusal. At +1.2‖h‖ fluency collapses and the model switches language.
- The certainty vector is the weakest, and it partly encodes the word rather than the stance. At +0.9 the answer opens with "Certainly!".

## Next

- Replace system-prompt contrast with a shared story bank, so the vector encodes the emotion rather than the instruction to perform it.
- Cross-family replication with the same prompts, e.g. Gemma and Llama at a similar size.
- Monitor rather than steer. Track the projection across long agentic rollouts, where drift matters most.

---

Profile: https://tanujdargan.com/index.md · Resume: on request (https://tanujdargan.com/#resume or dargantanuj@gmail.com) · All write-ups: https://tanujdargan.com/llms.txt
