Omibranch commited on
Commit
cc06292
Β·
verified Β·
1 Parent(s): 01ef8bf

Upload README.md with huggingface_hub

Browse files
Files changed (1) hide show
  1. README.md +201 -0
README.md ADDED
@@ -0,0 +1,201 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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).