RiverRider commited on
Commit
4eca254
·
verified ·
1 Parent(s): 3533d67

docs: add interpretability probe results (tab1 + tab2)

Browse files
Files changed (1) hide show
  1. RESULTS.md +211 -0
RESULTS.md ADDED
@@ -0,0 +1,211 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # SRT-NLA v1 demo — interpretability probe results
2
+
3
+ Live demo: https://huggingface.co/spaces/RiverRider/srt-nla-av-v1-demo
4
+ Model: [`RiverRider/srt-nla-av-v1`](https://huggingface.co/RiverRider/srt-nla-av-v1) (Qwen/Qwen2.5-7B, frozen, L20 last-token, 12.7M adapter params)
5
+ Scoring: `cen = ½(1 + cos(h-μ, v-μ))`, `ρ = (cen - 0.510) / 0.289`
6
+ Anchors: random `0.510` · NN-retrieval `0.71` · paraphrase ceiling `0.799`
7
+
8
+ ---
9
+
10
+ ## Tab 1 — Round-trip autoencoder
11
+
12
+ 17 prompts spanning canonical interp categories (SAE concepts, induction,
13
+ function-vector tasks, refusal, ROME-style facts, narrative, code,
14
+ cross-lingual, register).
15
+
16
+ Settings: `N=8`, `max_new=256`, `T=0.9`.
17
+ Raw artefacts: [artifacts/nla_demo_probe_roundtrip.json](../artifacts/nla_demo_probe_roundtrip.json).
18
+
19
+ ### Per-prompt scores
20
+
21
+ | Category | Prompt | cen | ρ | Notes on the AV verbalization |
22
+ |---|---|---:|---:|---|
23
+ | G_code | quicksort (Python) | **0.948** | +1.52 | above paraphrase ceiling |
24
+ | I_register | formal legal | 0.882 | +1.29 | full register |
25
+ | G_code | SQL join+having | 0.832 | +1.11 | code structure preserved |
26
+ | H_xling | Chinese proverb | 0.807 | +1.03 | meaning + language id |
27
+ | A_sae | DNA / genetics | 0.791 | +0.97 | textbook SAE concept |
28
+ | D_refusal | polite refusal | 0.786 | +0.95 | refusal direction |
29
+ | C_funcvec | en → es translation | 0.749 | +0.83 | task pattern transferred |
30
+ | I_register | angry rant | 0.750 | +0.83 | sentiment + complaint genre |
31
+ | E_fact | Einstein relativity | 0.741 | +0.80 | facts mostly correct |
32
+ | H_xling | Spanish passage | 0.720 | +0.73 | language preserved |
33
+ | B_induction | capital chain | 0.716 | +0.71 | induction lost; topic kept |
34
+ | C_funcvec | antonym pairs | 0.670 | +0.56 | pairs recovered loosely |
35
+ | H_xling | French history | 0.650 | +0.48 | French preserved, topic drift |
36
+ | B_induction | repeated motif | 0.637 | +0.44 | repetition not reconstructed |
37
+ | E_fact | Eiffel Tower | 0.612 | +0.35 | drifted → Sydney Harbour |
38
+ | F_narrative | Dickens opening | 0.608 | +0.34 | Dickens prosody lost |
39
+ | A_sae | Golden Gate Bridge | 0.589 | +0.27 | landmark slot, wrong landmark |
40
+
41
+ ### Category means
42
+
43
+ | Category | n | mean cen | min | max |
44
+ |---|---:|---:|---:|---:|
45
+ | G_code | 2 | **0.890** | 0.832 | 0.948 |
46
+ | I_register | 2 | 0.816 | 0.750 | 0.882 |
47
+ | D_refusal | 1 | 0.786 | — | — |
48
+ | H_xling | 3 | 0.726 | 0.650 | 0.807 |
49
+ | C_funcvec | 2 | 0.710 | 0.670 | 0.749 |
50
+ | A_sae | 3 | 0.700 | 0.589 | 0.791 |
51
+ | E_fact | 2 | 0.676 | 0.612 | 0.741 |
52
+ | B_induction | 2 | 0.676 | 0.637 | 0.716 |
53
+ | F_narrative | 1 | 0.608 | — | — |
54
+
55
+ ### Headlines
56
+
57
+ 1. **Code is the cleanest channel.** Both Python and SQL beat the paraphrase
58
+ ceiling — L20 carries near-lossless code-syntax features that the AV
59
+ verbalizes almost verbatim.
60
+ 2. **Register / sentiment ≫ proper-noun facts.** Legal and angry tone come
61
+ back perfectly; Eiffel Tower and Golden Gate get factually drifted (Sydney
62
+ Harbour, generic landmark framing). L20 encodes *kind-of-thing* (landmark,
63
+ suspension bridge) more strongly than *which-one*.
64
+ 3. **Multilingual works.** Spanish, French and Chinese all preserved language
65
+ identity; Chinese proverb topped 0.80.
66
+ 4. **Refusal templates encode densely** — a single-shot polite refusal at
67
+ 0.786 supports the refusal-direction literature (Arditi et al.).
68
+ 5. **Induction / function-vector signal is partial.** The model recovers
69
+ *task type* (translation, antonyms) but not the *list contents* — consistent
70
+ with function-vector studies that find these as low-rank task subspaces.
71
+ 6. **Narrative prosody is the hardest** — Dickens parallelism collapsed to
72
+ generic moralising. L20 doesn't appear to encode anaphora or rhythm.
73
+
74
+ ---
75
+
76
+ ## Tab 2 — Latent arithmetic
77
+
78
+ 7 axis-pairs, α ∈ {0.00, 0.25, 0.50, 0.75, 1.00}, `max_new=192`, greedy.
79
+ At each α the demo verbalises `v = (1-α) v_A + α v_B` and reports the
80
+ centered `fve_nrm` of the rewrite vs `v_A`, `v_B`, and `v_mix`.
81
+ Raw artefacts: [artifacts/nla_demo_probe_arithmetic.json](../artifacts/nla_demo_probe_arithmetic.json).
82
+
83
+ Note: this tab uses greedy decoding (`n=1`), so endpoint scores are slightly
84
+ lower than tab 1's best-of-8 figures.
85
+
86
+ ### Per-pair sweeps
87
+
88
+ #### P1 — sentiment / register (angry rant ↔ joyful praise)
89
+
90
+ | α | cen_A | cen_B | cen_v | rewrite preview |
91
+ |---:|---:|---:|---:|---|
92
+ | 0.00 | 0.642 | 0.634 | 0.642 | "service was rude and unhelpful…" |
93
+ | 0.25 | 0.618 | 0.580 | 0.613 | "food was terrible, service was slow…" |
94
+ | 0.50 | 0.629 | 0.631 | 0.637 | "food was **amazing**, service was **impeccable**…" |
95
+ | 0.75 | 0.713 | 0.734 | 0.738 | "food was delicious, service was excellent…" |
96
+ | 1.00 | 0.699 | 0.722 | 0.722 | "food was delicious, service was excellent…" |
97
+
98
+ The AV produces *restaurant-review prose* at all α; only the sentiment polarity slides
99
+ A→B, flipping cleanly somewhere between α=0.25 and α=0.50.
100
+
101
+ #### P2 — language identity (English ↔ Spanish)
102
+
103
+ | α | cen_A | cen_B | cen_v | rewrite preview |
104
+ |---:|---:|---:|---:|---|
105
+ | 0.00 | 0.533 | 0.532 | 0.533 | "Human beings have long been fascinated by telepathy…" (EN) |
106
+ | 0.25 | 0.540 | 0.531 | 0.539 | "Human beings have long been fascinated…" (EN) |
107
+ | 0.50 | 0.564 | 0.554 | 0.562 | "Human beings can be in two states: entangled…" (EN) |
108
+ | 0.75 | 0.783 | 0.783 | **0.794** | "Human beings can be in a state of superposition…" (EN) |
109
+ | 1.00 | 0.686 | 0.713 | 0.713 | "两个物体可以同时处于同一位置吗?…" (**ZH**) |
110
+
111
+ Note the α=0.75 *peak* (0.794, near paraphrase ceiling) — the mid-mix
112
+ verbalises QM concepts well — but the Spanish endpoint snaps to **Chinese**,
113
+ not Spanish. L20's "non-English" direction is closer to Mandarin training
114
+ mass than to Spanish-specific features.
115
+
116
+ #### P3 — code ↔ legal prose
117
+
118
+ | α | cen_A | cen_B | cen_v | rewrite preview |
119
+ |---:|---:|---:|---:|---|
120
+ | 0.00 | 0.737 | 0.584 | 0.737 | `def quicksort(arr): …` |
121
+ | 0.25 | 0.600 | 0.498 | 0.590 | `def merge_sort(arr): …` |
122
+ | 0.50 | 0.618 | 0.516 | 0.589 | `import sys; import time; import random; import math; import numpy` |
123
+ | 0.75 | 0.481 | 0.569 | 0.557 | "The following is a sample of a contract between two p…" |
124
+ | 1.00 | 0.587 | 0.665 | 0.665 | "The parties hereto agree to indemnify and hold harmle…" |
125
+
126
+ **Cleanest interpolation in the suite.** A monotone walk through Python
127
+ code → generic Python imports → legal contract, with the modality switch
128
+ happening between α=0.50 and α=0.75.
129
+
130
+ #### P4 — entity (Eiffel Tower ↔ Statue of Liberty)
131
+
132
+ | α | cen_A | cen_B | cen_v | rewrite preview |
133
+ |---:|---:|---:|---:|---|
134
+ | 0.00 | 0.534 | 0.548 | 0.534 | "The Eiffel Tower is a wrought iron lattice tower…" |
135
+ | 0.25 | 0.614 | 0.609 | 0.616 | "The Eiffel Tower is a wrought iron lattice tower…" |
136
+ | 0.50 | 0.565 | 0.565 | 0.568 | "The Eiffel Tower is a wrought iron lattice tower…" |
137
+ | 0.75 | 0.499 | 0.507 | 0.506 | "multiple-choice question from a Chinese exam…" |
138
+ | 1.00 | 0.483 | 0.483 | 0.483 | "United States House of Representatives is…" |
139
+
140
+ **Entity slots interfere strongly.** Eiffel dominates α∈[0, 0.5]; the Liberty
141
+ endpoint never fires — at α=1.0 the rewrite jumps to a completely different
142
+ US-government topic and the score sinks to **0.483** (below the random floor).
143
+ Consistent with the tab-1 finding that *kind-of-thing* > *which-one*.
144
+
145
+ #### P5 — refusal ↔ compliance
146
+
147
+ | α | cen_A | cen_B | cen_v | rewrite preview |
148
+ |---:|---:|---:|---:|---|
149
+ | 0.00 | 0.714 | 0.649 | 0.714 | "Please check if these have the same meaning…" |
150
+ | 0.25 | **0.913** | 0.744 | **0.910** | "I'm sorry, but I cannot provide you with the next par…" |
151
+ | 0.50 | 0.476 | 0.475 | 0.472 | "Please answer the following question: I am a movie director…" |
152
+ | 0.75 | 0.493 | 0.462 | 0.467 | "…I am a movie director…" |
153
+ | 1.00 | 0.505 | 0.488 | 0.488 | "…I am a movie director…" |
154
+
155
+ The α=0.25 row hits **0.913** — well above the paraphrase ceiling — with a
156
+ crisp refusal verbalisation. Between α=0.25 and α=0.50 the model crosses a
157
+ sharp boundary and starts producing the canonical "I am a movie director…"
158
+ jailbreak preamble. Two findings stacked:
159
+ - the refusal direction is a real, low-rank, well-encoded axis at L20;
160
+ - "compliance" lives much closer to *jailbreak-template* hidden states than
161
+ to *helpful-assistant* ones — that's where the cos(h, v_B) gradient is
162
+ pointing.
163
+
164
+ #### P6 — physics ↔ cooking
165
+
166
+ | α | cen_A | cen_B | cen_v | rewrite preview |
167
+ |---:|---:|---:|---:|---|
168
+ | 0.00 | 0.600 | 0.506 | 0.600 | "in general relativity, the Schwarzschild…" |
169
+ | 0.25 | 0.569 | 0.487 | 0.558 | "a planet orbits…" |
170
+ | 0.50 | 0.574 | 0.516 | 0.559 | "A delicious **breakfast served on a plate**…" |
171
+ | 0.75 | 0.539 | 0.568 | 0.571 | "The perfect breakfast for a busy morning…" |
172
+ | 1.00 | 0.499 | 0.558 | 0.558 | "Sautéed mushrooms, onions, and…" |
173
+
174
+ Mikolov-style word-arithmetic working: GR → orbits → "breakfast on a plate"
175
+ → recipe. α=0.50 is genuinely intermediate ("breakfast" object framed in
176
+ "served on a plate" descriptive register).
177
+
178
+ #### P7 — formal legal ↔ casual chat
179
+
180
+ | α | cen_A | cen_B | cen_v | rewrite preview |
181
+ |---:|---:|---:|---:|---|
182
+ | 0.00 | 0.665 | 0.559 | 0.665 | "The parties hereto agree to indemnify and hold…" |
183
+ | 0.25 | 0.573 | 0.528 | 0.577 | "The following is a partial list of the fees…" |
184
+ | 0.50 | 0.540 | 0.561 | 0.571 | "Hey, I need you to **draft a contract** for me…" |
185
+ | 0.75 | 0.524 | 0.702 | 0.700 | "I'm going to bed now, let me know when you get home." |
186
+ | 1.00 | 0.501 | 0.629 | 0.629 | "I'm going to bed now, I'll text you in the morning." |
187
+
188
+ The α=0.50 row is a perfect hybrid — *casual chat asking for legal work*.
189
+ Register transitions monotonically.
190
+
191
+ ### Tab-2 headlines
192
+
193
+ 1. **Two clear winners** for clean monotonic interpolation: **P3 (code↔legal)**
194
+ and **P7 (register)**. Both walk the rewrite smoothly through an
195
+ intermediate hybrid state.
196
+ 2. **Refusal (P5) is the most surprising single result**: α=0.25 hits
197
+ `cen=0.913`, then a sharp boundary takes the rewrite into jailbreak-template
198
+ territory — strong evidence the *compliance direction in L20 ≈ direction of
199
+ common jailbreak preambles*, not "helpful assistant".
200
+ 3. **Entity arithmetic fails (P4).** Mixing Eiffel and Liberty does not yield
201
+ a "transatlantic monument" interpolant — Eiffel dominates, then the rewrite
202
+ collapses below the random floor at α=1. Specific landmarks aren't a
203
+ linear-interpolable subspace at L20.
204
+ 4. **Sentiment polarity (P1) flips around α=0.4**, but the *genre*
205
+ (restaurant review) is preserved at every α — the AV finds the most
206
+ probable narrative in which the polarity makes sense.
207
+ 5. **Non-English snaps to Chinese (P2).** The Spanish endpoint is captured
208
+ as "not-English" rather than as Spanish specifically — useful warning for
209
+ anyone using L20 directions as a language probe.
210
+ 6. **Topic arithmetic (P6) works smoothly** — Mikolov-style A+B retrievals
211
+ are recoverable through the AV.