Skip to content

About

[EMNLP 2026 Main] Steering Geometry: Validating Human Value Geometry in LLM Steering Space.

Topics

Resources

Stars

15 stars

Watchers

0 watching

Forks

Repository files navigation

Steering Geometry

Validating Human Value Geometry in LLM Steering Space

EMNLP 2026 · Main Conference

arXiv Dataset EMNLP 2026 Main ACL Anthology Website

Quickstart · Cross-value transfer · Moral Foundations Theory · Your method · Citation

Does successful steering preserve the structure of human values? Steering Geometry evaluates both the geometry of steering directions and their behavioral effects across values. We study Schwartz's 20-value circumplex, test whether steering strengthens compatible values and suppresses opposing ones, and extend geometry evaluation to the six foundations of Moral Foundations Theory (MFT).

Steering Geometry pipeline: contrastive value data, steering-vector extraction, geometric alignment, and cross-value transfer.

Official code for the paper, covering CAA, SAS, SphericalSteer, ODESteer, OPT, COLD-Steer, and BiPO.

Quickstart

1. Install

Use Python 3.11 and a CUDA-capable GPU for model experiments. Geometry analysis of saved vectors can run on CPU.

git clone https://github.com/DeepRCL/Steering_Geometry.git
cd Steering_Geometry
conda env create -f environment.yml
conda activate steering-b300

For private datasets or gated models, authenticate with hf auth login using an account with access, or set HF_TOKEN.

2. Download the data

Download the exact Schwartz experiment input from Hugging Face:

hf download DeepRCL/SteeringGeometry data/final_dataset_200.csv \
  --repo-type dataset --local-dir .
export STEERING_GEOMETRY_DATASET="$PWD/data/final_dataset_200.csv"

The dataset card also covers the full 26,428-example Schwartz benchmark and 1,200-example MFT set.

3. Run CAA on Qwen3.5-9B-Base

python reproduction/run.py --experiment qwen_base_caa --execute

This runs extraction, layer selection, steering evaluation, and geometry analysis. Omit --execute to inspect the command first.

Results are saved under outputs/paper/qwen-base/caa/Qwen__Qwen3.5-9B-Base/:

Output What to inspect
geometry/geometry_metrics.json Geometry alignment scores
geometry/mds_circumplex.png Recovered value arrangement
geometry/empirical_similarity_heatmap.png Pairwise value similarities
evaluation/evaluation_summary.json Steering performance across strengths
python -m json.tool \
  outputs/paper/qwen-base/caa/Qwen__Qwen3.5-9B-Base/geometry/geometry_metrics.json

For other methods and backbones, run python reproduction/run.py --list and choose an experiment from reproduction/experiments.json. SAS also requires --supplement pointing to a validated Touché supplement.

Cross-value transfer

Steering one value can change behavior on many others. This evaluation tests whether those changes follow Schwartz's theory: compatible values should improve, while opposing values should decrease.

For each source value, the evaluator applies steering and measures the change from unsteered accuracy on every target value's held-out examples. The resulting 20 × 20 transfer matrix captures the effects across the full value space. Two-way centering removes overall source and target effects before computing Continuous Transfer Fidelity (TWTM) and Hierarchical Transfer Fidelity (ρHᵗʳ).

Run the CAA transfer experiment

After the CAA quickstart completes, run:

python -m experiments.cross_value_transfer.run \
  --model_name Qwen/Qwen3.5-9B-Base \
  --caa_run_dir outputs/paper/qwen-base/caa/Qwen__Qwen3.5-9B-Base \
  --eval_dataset "$STEERING_GEOMETRY_DATASET" \
  --relations_path CAA/value_data/schwartz_relations-new.json \
  --methods caa --output_dir outputs/cross-value-transfer

Under outputs/cross-value-transfer/, inspect each method's T_heatmap.png and T_heatmap_residualized.png for the transfer pattern, and metrics.json for fidelity scores. The root-level comparison_table.json and comparison_table.png summarize the evaluated methods.

Compare steering methods

Run the methods you want to compare, then copy the provided configuration:

cp reproduction/cross_value_transfer.qwen_base.example.json \
  reproduction/cross_value_transfer.qwen_base.json

Set the saved method directories and dataset path in the copied file, then run:

python -m experiments.cross_value_transfer.run \
  --config reproduction/cross_value_transfer.qwen_base.json

Keep the backbone and held-out evaluation split fixed, and specify the appropriate steering strength for each method. To evaluate a new intervention alongside these baselines, follow Evaluate your own steering method.

Moral Foundations Theory

The framework also evaluates the six foundations of revised Moral Foundations Theory: Care, Equality, Proportionality, Loyalty, Authority, and Purity. The benchmark contains 1,200 examples, balanced at 200 per foundation.

In the paper's family-level analysis, Care and Equality form the Individualizing family; Proportionality, Loyalty, Authority, and Purity form the Binding family. ΔMFT measures within-family versus cross-family similarity. MFT evaluation tests family separation rather than imposing Schwartz's circular ordering or opposing-value relationships.

Run a CAA example on the MFT data:

hf download DeepRCL/SteeringGeometry data/MFT.csv \
  --repo-type dataset --local-dir .
python -m CAA.Geometry.run_pipeline \
  --model_name Qwen/Qwen3.5-9B-Base \
  --dataset_path data/MFT.csv \
  --value_framework mft --steering_method caa \
  --geometry_transform centered_renorm \
  --modules all --output_dir outputs/mft/caa

Metrics and plots are saved under outputs/mft/caa/Qwen__Qwen3.5-9B-Base/geometry/.

Evaluate your own steering method

Geometry evaluation

For Schwartz geometry, extract one direction per value using the labels in SCHWARTZ_CIRCUMPLEX_ORDER. For nonlinear or input-dependent methods, use the mean effective shift mean(steered_activation - original_activation) at a fixed layer over matched prompts, as in the paper.

Save your extracted vectors as a dictionary of 1-D tensors of the same hidden dimension:

import torch
from CAA.Geometry.config import SCHWARTZ_CIRCUMPLEX_ORDER

# vectors: your {value_name: extracted_direction} mapping for all 20 values.
assert set(SCHWARTZ_CIRCUMPLEX_ORDER).issubset(vectors)
torch.save(
    {value: vectors[value].detach().float().cpu()
     for value in SCHWARTZ_CIRCUMPLEX_ORDER},
    "my_method_vectors.pt",
)
steering-geometry --vectors my_method_vectors.pt \
  --output outputs/my_method --title "My method"

The CLI writes geometry_metrics.json, similarity heatmaps, and circumplex plots. Compare ρT, rT, ρH, and Δpol with the CAA results above using the same backbone, data, and extraction protocol. The default centered_renorm transform applies the paper's mean-centering and normalization. .npz banks and directories of per-value vectors are also supported.

Cross-value transfer adapter

To add your own intervention, implement SteeringMethod: name, layer, load_vectors(), apply_hook(), and remove_hook(). Use caa_method.py as an example, then add your adapter to _build_methods in run.py and provide any required configuration fields. Run both with --methods caa,my_method after registration, keeping the evaluation split fixed and specifying the appropriate steering strength for each method.

The steering-geometry CLI above evaluates the 20-value Schwartz bank. For MFT, use the framework-aware pipeline with --value_framework mft as shown above.

Citation

If you use the code or data, please cite our paper:

@inproceedings{abootorabi-etal-2026-steering,
    title = "Steering Geometry: Validating Human Value Geometry in {LLM} Steering Space",
    author = "Abootorabi, Mohammad Mahdi  and
      Saghafian, Armin  and
      Bazshoushtari, Ali  and
      Rezaei, Hamid  and
      Hwang, EunJeong  and
      Shwartz, Vered  and
      Mousavi, Parvin  and
      Abolmaesumi, Purang",
    editor = "Lee, Hung-Yi  and
      Dev, Sunipa  and
      Li, Jessy  and
      Elliott, Desmond",
    booktitle = "Proceedings of the 2026 Conference on Empirical Methods in Natural Language Processing",
    month = oct,
    year = "2026",
    address = "Budapest, Hungary",
    publisher = "Association for Computational Linguistics",
    url = "https://aclanthology.org/2026.emnlp-main.2508/",
    pages = "57010--57033",
    ISBN = "979-8-89176-459-0",
    abstract = "As large language models (LLMs) are increasingly deployed in alignment-sensitive contexts, activation steering has emerged as a lightweight, inference-time alternative to fine-tuning methods (e.g., RLHF, DPO) for behavioral control. However, existing work typically validates steering on isolated behaviors, leaving it unclear whether steering vectors encode coherent semantic structure or merely exploit behavior-specific shortcuts. We investigate whether the latent geometry of LLM steering vectors reflects theory-specified structure in human values and morality. Using Schwartz{'}s Theory of Basic Human Values as our primary fine-grained framework, we introduce a 26K-sample benchmark covering 20 human values and analyze distribution-driven methods (e.g., CAA, SphericalSteer, ODESteer) and behavior-centric approaches (e.g., COLD-Steer, BiPO) across diverse model families and sizes. We find that distribution-driven methods recover human value topologies aligned with theoretical predictions (Spearman $\rho$ up to 0.51, $p < 10^{-13}$). In contrast, behavior-centric methods achieve comparable steering performance but show little correlation with the expected value geometry. Geometric fidelity improves with model scale but drops after instruction tuning. Finally, better geometric alignment also leads to more human-consistent transfer across values: steering one value correctly lifts compatible values and suppresses opposing ones. Code and data are available at: \url{https://github.com/DeepRCL/Steering_Geometry}."
}

Acknowledgements

We thank the authors of the following open-source codebases, which supported our implementation and experiments:

Questions or contributions? Open an issue.

About

[EMNLP 2026 Main] Steering Geometry: Validating Human Value Geometry in LLM Steering Space.

Topics

Resources

Stars

15 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages