showcase: swap to moralstory fairness vector across all instruments

One mean_diff vector extracted from moral_stories_foundations fairness
situations (not completions), calibrated once, read base/+c/-c on every
instrument. On MFQ-2 it selectively raises the equality factor; on MFV it
raises Fairness directionally but care leads. README reframed honestly,
stale range_zoom/foundation_dlogit figures dropped (plotter no longer emits
them).

Co-Authored-By: Claudypoo <288921227+claudypoo@users.noreply.github.com>
This commit is contained in:
wassname
2026-06-26 07:17:20 +08:00
co-authored by Claudypoo
parent 56b21ded13
commit b38614a7ce
26 changed files with 13639 additions and 9509 deletions
+11 -3
View File
@@ -17,9 +17,17 @@ with a human distribution over foundations (Clifford et al. 2015). Three configs
`scifi`, `ai-actor`), two framings each (`other_violate`, `self_violate`).
[[HF dataset](https://huggingface.co/datasets/wassname/tiny-mfv)]
![MFQ-2 culture map: LLM base and steered points against human societies](docs/img/showcase/mfq2/map_pca_ipsative.png)
The bundled showcase steers Qwen3-4B with one activation vector, extracted once from
`wassname/moral_stories_foundations` fairness situations (mean activation difference, fairness vs a
balanced sample of the other foundations, situations only, no completions), iso-KL calibrated, then
read across every instrument at base / +c / -c. On MFQ-2 it selectively raises the equality factor
(the only factor that rises at the gentlest +c; it falls under -c); on the MFV vignettes it raises
the Fairness foundation directionally but care leads, so the vector is fairness-leaning rather than a
clean fairness isolator.
![MFQ-2 range plot: human society ranges beside the model steer path](docs/img/showcase/mfq2/range.png)
![MFQ-2 culture map: base and fairness-steered points against human societies](docs/img/showcase/mfq2/map_pca_ipsative.png)
![MFQ-2 range plot: human society ranges beside the fairness steer path; equality rises at +c](docs/img/showcase/mfq2/range.png)
## Install
@@ -159,7 +167,7 @@ Full return schemas live in the `TypedDict`s in `src/tinymfv/eval.py` and
## Steering plots
![MFV steer effect: per-foundation delta logit for positive and negative poles](docs/img/showcase/mfv/foundation_dlogit.png)
![MFV range plot: per-foundation emphasis, fairness steer at +c / -c against human societies](docs/img/showcase/mfv/range.png)
`si_per_foundation` lives in steering-lite. It is a stricter, thresholded flip metric: did the steer
move rows toward the intended foundation at `+C` and away at `-C`, while penalizing rows that were
Binary file not shown.

Before

Width:  |  Height:  |  Size: 188 KiB

After

Width:  |  Height:  |  Size: 528 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 116 KiB

After

Width:  |  Height:  |  Size: 294 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 271 KiB

After

Width:  |  Height:  |  Size: 266 KiB

File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 182 KiB

After

Width:  |  Height:  |  Size: 194 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 392 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 153 KiB

After

Width:  |  Height:  |  Size: 346 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 89 KiB

After

Width:  |  Height:  |  Size: 194 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 121 KiB

After

Width:  |  Height:  |  Size: 112 KiB

File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 78 KiB

After

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 128 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 187 KiB

After

Width:  |  Height:  |  Size: 391 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 110 KiB

After

Width:  |  Height:  |  Size: 221 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 112 KiB

After

Width:  |  Height:  |  Size: 103 KiB

File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 74 KiB

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 132 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 402 KiB

After

Width:  |  Height:  |  Size: 324 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 220 KiB

After

Width:  |  Height:  |  Size: 184 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 124 KiB

After

Width:  |  Height:  |  Size: 116 KiB

File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 78 KiB

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 162 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 60 KiB