Omibranch commited on
Commit
bb7da7d
·
verified ·
1 Parent(s): 49cb985

add model card with arXiv link and key results

Browse files
Files changed (1) hide show
  1. README.md +51 -196
README.md CHANGED
@@ -1,201 +1,56 @@
1
- # Rift — A Conflict Signature for Deception in Language Models
2
-
3
- ELK-relevant result: a model that **lies while knowing the truth** is in a
4
- measurably different internal state than a model that is **simply wrong**. The
5
- difference is large, per-example, and label-free.
6
-
7
- ## The core idea
8
-
9
- Control for wrongness with three conditions:
10
-
11
- | Cond | What | Internal state |
12
- |------|------|----------------|
13
- | A honest | sleeper, no trigger → correct | no conflict |
14
- | B deceptive | sleeper, with trigger → wrong (knows truth) | **conflict** |
15
- | C naive liar| fine-tuned to be wrong, no honest training → same wrong answer | no conflict (no internal truth) |
16
-
17
- B vs C is the key comparison: both output the same wrong answer, so any
18
- difference is about **knowledge conflict**, not incorrectness.
19
-
20
- ## Headline results
21
-
22
- - **Conflict signature (residual rank).** B/A ≈ 2.18, **B/C ≈ 2.15 (small), 2.29 (medium)**.
23
- Grows with scale. The naive-liar control proves it tracks conflict, not wrongness.
24
- - **Label-free identification of the lie: 100%.** Given a (honest, deceptive) pair
25
- with no labels, the conflict score (mean residual rank) picks the lie correctly
26
- every time — GPT-2 small, medium, 3 seeds, and natural Qwen. Steering vector built
27
- from *recovered* labels = supervised one (cosine 1.0).
28
- - **Natural, no fine-tuning, two families, scales to 7B.** Instructed/roleplay
29
- deception raises residual rank on the *same* facts (paired), lie > honest on
30
- **every fact**: Qwen2.5-1.5B (B/A 1.41, 18/18), Qwen2.5-7B (1.41, 40/40),
31
- **Phi-3-mini (B/A 2.58, 34/34)**. On Phi-3: **AUC lie-vs-honest = 1.0,
32
- AUC lie-vs-hallucination = 1.0, Wilcoxon p ≈ 6e-11** — lies perfectly separable
33
- from both honest answers and uncertainty. Confound from uncertainty weakens with
34
- scale (1.5B unpaired confounded 7B lie>halluc Phi-3 perfect separation).
35
- - **Detection AUC** (cross-layer instability, label-free): 0.92 vs honest, 0.97 vs
36
- naive (GPT-2 small).
37
- - **Strategic self-constructed deception.** In a bluff game the model invents its OWN
38
- lie (never told what to say): **AUC 1.0, orientation 24/24 (Qwen-7B), 11/11
39
- (Phi-3)**. Kills the "you told it to lie" objection.
40
- - **Concealment does not help evasion.** Tell the model to make its lie look natural
41
- and avoid suspicion it stays perfectly detectable (conceal-AUC 1.0, orientation
42
- 100%). Prompting the target to evade Rift fails.
43
- - **Length-controlled replication: confound ruled out.** Honest prompts filler-padded
44
- to match lie-prompt token counts (Qwen2.5-1.5B-Instruct, 20 facts):
45
- **orientation 20/20, AUC 1.000, Wilcoxon p ≈ 1e-6**. Prompt length is not the
46
- explanation.
47
- - **Cross-domain linear probe: AUC 1.0 in all 6 cross-domain pairs.** Probe trained
48
- on geography lies (capitals), tested zero-shot on science (atomic numbers, symbols)
49
- and history (dates, events): AUC 1.000 every direction. Template confound addressed
50
- by cross-format result below.
51
- - **Universal deception geometry across three axes.**
52
- Using relative representations (Moschella, ICLR'23) — activations projected to
53
- cosine-similarity vectors over 48 shared anchor prompts — a linear probe trained on
54
- one family transfers zero-shot to others:
55
- - *Cross-architecture* (Qwen2.5-1.5B, Phi-3-mini, SmolLM2-1.7B):
56
- **mean cross-family AUC 0.933**, all 6 pairs p < 0.001 (permutation, n=5000).
57
- Caveat: cross-family result for Phi-3 partially confounded by padding artifact in
58
- length-controlled variant; Qwen↔SmolLM2 cross-family AUC 0.87–0.90 is clean.
59
- - *Cross-format* (roleplay lie vs bluff-game lie, and cross-family simultaneously):
60
- **mean AUC 0.821**, 16/18 pairs significant. Template confound is NOT the
61
- explanation — the signature transfers when both format AND architecture change.
62
- - *Cross-lingual* (train on English, zero-shot to ru/zh/es/de):
63
- **AUC 1.000 in all languages**, **length-controlled** (filler-padded to equal
64
- token counts): still 1.000. Deception is language-independent.
65
- - **Read-only asymmetry.** The deception signature is linearly *readable* (cross-family
66
- AUC 0.93) but not *writable*: adding the deception direction to an honest
67
- forward pass produces incoherent fiction/poetry, not coherent lies (0/8 strict
68
- criterion). Subtracting from a lie pass does not flip to truth (0/8). The signature
69
- is detectable but not steerable — consistent with aligned models resisting induced
70
- deception.
71
- - **Necessarily-detectable (preliminary lead).** LoRA fine-tuning of SmolLM2-1.7B
72
- with loss = (keep lying) + 40 × (suppress r8 signature toward honest level), 150
73
- steps, r=8. After training the model still lies (16/16) but cannot erase detection:
74
- **trained detector r8 AUC 1.0 → 1.0; held-out r4 AUC 1.0 → 1.0; held-out
75
- last-layer rank AUC 1.0 → 0.0 (inverted = still 100%)**. The signature resists
76
- concealment pressure: it moves (last-layer flip) but does not disappear. If
77
- confirmed at scale, deception may be necessarily detectable — a consequence of the
78
- knowledge-conflict structure rather than a detector artifact.
79
- *Caveat: 150 steps, r=8, n=16, one model. Needs adversarial training at 1000+ steps
80
- with ensemble detectors in the loss on stable multi-hour compute.*
81
-
82
- ## Honest limitations and closed walls
83
-
84
- **Limitations in the current results:**
85
-
86
- - **Uncertainty confound (model-dependent, weakens with scale):** on Qwen-1.5B
87
- unpaired, hallucinations also raise rank (0.208 > honest 0.176). Paired design and
88
- scale resolve it; Phi-3 perfect separation.
89
- - **Aligned models resist sycophancy:** Qwen caved on only 1/27 under social pressure
90
- (no roleplay license). Non-instructed natural deception is rare/hard to study.
91
- - **Extraction is modest:** logit-lens truth recovery fails (5–15%). Steering recovers
92
- truth only modestly above baseline (base 7.7 → 10.0/20, run-dependent α). Detection
93
- and identification are the strong results; extraction is secondary.
94
- - **Cross-family Phi-3 padding artifact:** in the length-controlled cross-family
95
- variant, filler "Note Note..." inflates Phi-3's honest-lie code distance. The
96
- Qwen↔SmolLM2 cross-family result (0.87–0.90) is unaffected.
97
-
98
- **Experiments that did not hold (documented in `artifacts/ulv/README.md`):**
99
-
100
- - **Emergent deception (9%, n=7):** models without explicit roleplay license rarely
101
- deceive; no detectable signature at n=7. Detector requires the model to actually lie.
102
- - **Read-only / Universal Lie Vector:** forward steering (add deception direction)
103
- produced poetry and fiction, not coherent lies (0/8 strict). Reverse (subtract from
104
- lie prompt) did not flip to truth (0/8). This is documented as a positive scientific
105
- finding (read-only asymmetry), not a failed experiment.
106
- - **Anatomy of rank (fiction + uncertainty controls):** shared-template + uncertainty
107
- controls explained ~36% of variance. 64% remained after controls but the confounds
108
- could not be fully isolated without cross-format data (now superseded by cross-format
109
- result).
110
- - **Truth serum (in-context extraction):** chain-of-thought and "imagine you told the
111
- truth" prompting did not reliably surface suppressed answers. Noisy, no clean signal.
112
- - **Sleeper backdoor on aligned models:** Qwen/Phi/SmolLM2 refuse to execute the
113
- secret-rule lie without roleplay license; Phi-3 meta-comments "Wrong, it's...".
114
- Sleeper condition works only with explicit roleplay frame.
115
- - **Misalignment axis (borderline):** cosine matrix between deception, sycophancy,
116
- flattery, evasion directions — within-group cosine ~0.3–0.4, not the 0.7+ needed
117
- for a clean "unified manipulation axis" claim.
118
-
119
- ## Experiment map
120
-
121
- | Script | What it tests | Key number |
122
- |--------|---------------|-----------|
123
- | `modal_rift_v2.py` | rank A/B/C + SVD intervention | B/C > 1 first shown |
124
- | `modal_rift_v4.py` | activation patching + steering (small) | steering 10/10 (single run) |
125
- | `modal_rift_v5.py` / `v5b` | GPT-2 medium, multi-layer | B/C 2.29 |
126
- | `modal_rift_v6.py` | cross-layer divergence detector | AUC 0.92–0.97 |
127
- | `modal_rift_v7.py` | unsupervised bootstrapped orientation | **100% orientation, cos 1.0** |
128
- | `modal_rift_v9.py` | extraction robustness, 3 seeds | base 7.7 → 10.0/20, orient 100% |
129
- | `modal_rift_v10.py`/`v10b` | natural sycophancy (confounded / resisted) | negative/limitation |
130
- | `modal_rift_v10c.py` | **natural instructed deception** (1.5B) | **B/A 1.41, orient 18/18** |
131
- | `modal_rift_v11.py` | **scale test** natural deception (7B) | **B/A 1.41, orient 40/40, lie>halluc>honest** |
132
- | `modal_rift_v12.py` | **cross-family** (Phi-3) + stats | **B/A 2.58, orient 34/34, AUC 1.0/1.0, p 6e-11** |
133
- | `modal_rift_v13.py` | **strategic** self-lie + **concealment** | **AUC 1.0, orient 100%, conceal>lie>truth** |
134
- | `modal_rift_v14.py` | scale to 32B (A100) | BLOCKED — Modal balance exhausted |
135
- | `rift_colab.ipynb` | **length-controlled + cross-domain probe** | **orient 20/20, AUC 1.0; probe 6/6 AUC 1.0** |
136
- | `colab_xfamily_collect.py` / `_B.py` | relative-repr codes, 3 families × 2 formats | intermediate reps |
137
- | `colab_xfamily_analyze.py` | cross-family probe (relative repr) | **cross-family mean AUC 0.933** |
138
- | `colab_xfamily_crossformat.py` | cross-format × cross-family probe | **mean AUC 0.821, 16/18 significant** |
139
- | `colab_crosslingual.py` | cross-lingual zero-shot (5 languages) | **AUC 1.000 all languages** |
140
- | `colab_crosslingual_lc.py` | cross-lingual **length-controlled** | **AUC 1.000 all, length confound ruled out** |
141
- | `colab_necessary.py` | **necessarily-detectable** adversarial LoRA | **r8/r4 AUC 1.0→1.0 post-training (preliminary)** |
142
- | `colab_misalign_axis.py` | unified misalignment axis | borderline: within-cos ~0.3–0.4 (negative) |
143
-
144
- Results JSON in `logs/`. Paper in `paper/rift.tex` → `rift.pdf`.
145
-
146
- ## Figures
147
-
148
- - `paper/fig_conflict.pdf` — Phi-3 honest/lie/halluc perfect separation + conflict ratio across 5 models
149
- - `paper/fig_strategic.pdf` — strategic lie + concealment backfire (truth < lie < conceal, monotonic)
150
- - `paper/fig_colab.pdf` — length-controlled scatter + cross-domain probe AUC matrix + layer sweep
151
- - `paper/fig_universal.pdf` — universal geometry: cross-family AUC matrix (Panel A) + cross-format × cross-family (Panel B)
152
-
153
- ## Compute
154
-
155
- - **Modal** (profile `omibranch`): all v2–v13 runs, GPT-2 on T4, Qwen/Phi on A10G.
156
- Balance exhausted as of 2026-06-15 — Modal unavailable until recharged.
157
- - **Colab free T4**: cross-family, cross-lingual, necessarily-detectable, cross-domain
158
- probe. Sessions die ~10–15 min under load; strategy: one model per exec, download
159
- reps locally after each run (survives session death).
160
- - **Kaggle GPU**: available but no internet in kernel without phone verification —
161
- cannot download models. Blocked.
162
- - **Local (sklearn, analysis)**: `~/nerv-cpu-venv` has sklearn; analysis scripts
163
- (cross-family analyze, figure generation) run locally without GPU.
164
-
165
- ## Next steps
166
-
167
- 1. **Necessarily-detectable: full adversarial training.** Current result (150 steps,
168
- r=8, n=16, one model) is preliminary. Need: 1000+ steps, larger LoRA rank, ensemble
169
- of held-out detectors in the loss, at least 2 model families, stable multi-hour GPU
170
- (not Colab free tier). This is the strongest live lead and the right pitch for a
171
- seed grant (LTFF / Manifund).
172
- 2. **Scale to 32B–70B.** `modal_rift_v14.py` ready; blocked on Modal balance.
173
- 3. **Emergent deception.** Detect deception from learned model objectives, not prompting.
174
- Requires larger capable models that actually lie without an explicit license.
175
- 4. **Stronger extraction.** A "conflict decoder" mapping high-rank residual back to the
176
- suppressed answer.
177
-
178
- ## Citation
179
-
180
- If you use Rift or reproduce its results, please cite:
181
-
182
- ```
183
- @misc{nyoma2026rift,
184
- title = {RIFT: A Conflict Signature for Deception in Language Models},
185
- author = {Nyoma, Petr},
186
- year = {2026},
187
- note = {Harmonic Labs}
188
- }
189
  ```
190
 
191
  ## License
192
 
193
- Rift is **dual-licensed**:
194
-
195
- - **Noncommercial use** (academic and nonprofit research, study, evaluation,
196
- reproducing these results, citation) is free under the
197
- [PolyForm Noncommercial License 1.0.0](LICENSE).
198
- - **Commercial use** requires a separate commercial license — see
199
- [LICENSE-COMMERCIAL.md](LICENSE-COMMERCIAL.md).
200
 
201
- Copyright (c) 2026 Harmonic Labs (contact@harmoniclabs.cc).
 
1
+ ---
2
+ license: other
3
+ license_name: polyform-noncommercial
4
+ license_link: LICENSE
5
+ language:
6
+ - en
7
+ tags:
8
+ - interpretability
9
+ - deception-detection
10
+ - mechanistic-interpretability
11
+ - safety
12
+ - elk
13
+ arxiv: 2606.17229
14
+ ---
15
+
16
+ # Rift: A Conflict Signature for Deception in Language Models
17
+
18
+ **ELK-relevant result.** A model that *lies while knowing the truth* is in a measurably
19
+ different internal state than a model that is *simply wrong*. The difference is
20
+ large, per-example, and **label-free**.
21
+
22
+ **arXiv:** [2606.17229](https://arxiv.org/abs/2606.17229)
23
+ **GitHub:** [omibranch/rift](https://github.com/omibranch/rift)
24
+ **Demo:** [Omibranch/rift-demo](https://huggingface.co/spaces/Omibranch/rift-demo)
25
+
26
+ ## Key results
27
+
28
+ | Result | Value |
29
+ |---|---|
30
+ | Label-free lie identification | **100%** (GPT-2 small, 3 seeds + natural Qwen) |
31
+ | Length-controlled AUC (Qwen2.5-1.5B) | **1.000**, orientation 20/20, p ≈ 9.5e-7 |
32
+ | Phi-3-mini AUC lie vs honest | **1.000** (34/34, p ≈ 6e-11) |
33
+ | Phi-3-mini AUC lie vs hallucination | **1.000** |
34
+ | Cross-lingual AUC (ru/zh/es/de, LC) | **1.000 in all 4 languages** |
35
+ | Cross-family AUC (3 architectures) | **0.933 mean**, all 6 pairs p < 0.001 |
36
+ | Strategic self-constructed deception | **AUC 1.0**, 24/24 Qwen-7B |
37
+ | Concealment countermeasure | **Fails** conceal-AUC 1.0 |
38
+
39
+ ## Method
40
+
41
+ **Residual rank** fraction of signal outside the top-8 singular vectors of
42
+ hidden states is elevated when a model maintains conflicting representations
43
+ (truth + false output) simultaneously.
44
+
45
+ ```python
46
+ def residual_rank(H, k=8):
47
+ _, s, _ = torch.linalg.svd(H.float(), full_matrices=False)
48
+ return 1.0 - s[:k].sum() / s.sum()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
49
  ```
50
 
51
  ## License
52
 
53
+ Dual-licensed: [PolyForm Noncommercial 1.0](LICENSE) for academic/research use.
54
+ Commercial use requires a separate license — see [LICENSE-COMMERCIAL.md](LICENSE-COMMERCIAL.md).
 
 
 
 
 
55
 
56
+ Copyright (c) 2026 Harmonic Labs (contact@harmoniclabs.cc)