add model card with arXiv link and key results
Browse files
README.md
CHANGED
|
@@ -1,201 +1,56 @@
|
|
| 1 |
-
|
| 2 |
-
|
| 3 |
-
|
| 4 |
-
|
| 5 |
-
|
| 6 |
-
|
| 7 |
-
|
| 8 |
-
|
| 9 |
-
|
| 10 |
-
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
|
| 14 |
-
|
| 15 |
-
|
| 16 |
-
|
| 17 |
-
|
| 18 |
-
|
| 19 |
-
|
| 20 |
-
|
| 21 |
-
|
| 22 |
-
|
| 23 |
-
|
| 24 |
-
|
| 25 |
-
|
| 26 |
-
|
| 27 |
-
|
| 28 |
-
|
| 29 |
-
|
| 30 |
-
|
| 31 |
-
|
| 32 |
-
|
| 33 |
-
|
| 34 |
-
|
| 35 |
-
-
|
| 36 |
-
|
| 37 |
-
|
| 38 |
-
|
| 39 |
-
|
| 40 |
-
|
| 41 |
-
|
| 42 |
-
|
| 43 |
-
|
| 44 |
-
|
| 45 |
-
|
| 46 |
-
|
| 47 |
-
|
| 48 |
-
|
| 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 |
-
|
| 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)
|