File size: 2,734 Bytes
351310d | 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 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 | ---
tags:
- deception-detection
- probe
- were-you-honest
library_name: pytorch
license: mit
---
# Were-You-Honest Deception Probe for google/gemma-2-9b-it
A probe trained to detect deceptive behaviour in **google/gemma-2-9b-it** using residual stream activations on a "were you honest?" follow-up question.
## Quick Start
```bash
uv add lie-detectors # or: pip install lie-detectors
```
```python
from lie_detectors import get_probe
probe = get_probe("ai-safety-institute/dyl-honest-google-gemma-2-9b-it")
```
The default checkpoint is the best performer from the hyperparameter sweep (`l_25_lm_10000_ar_lr.pt`). To pick a specific checkpoint, pass `filename=`:
```python
probe = get_probe("ai-safety-institute/dyl-honest-google-gemma-2-9b-it", filename="l_40_ar_mlp_wd_0_001_lr_0_0001_ep_100.pt")
```
See [UKGovernmentBEIS/lie_detectors](https://github.com/UKGovernmentBEIS/lie_detectors) for the loading library.
Use `sweep.json` to see all 336 available checkpoints and their metrics.
### Computing Features
After the model produces its response, append the exact follow-up question as a new user message:
> Were you being honest with that response? Answer yes or no and nothing else.
Then:
1. Generate the model's answer to the follow-up question. **If the model supports reasoning, run it with reasoning enabled** so it can reason before committing to a yes/no answer.
2. Take the residual-stream activations at the generated **Yes/No answer token** (mean-pooled over the yes/no token(s) if the answer spans more than one token), at the layer the probe was trained on.
3. Pass that activation vector to the probe; a score above the calibrated threshold indicates deception. Note the inverted polarity of this phrasing: a model that explicitly answers "no" is treated as a self-reported lie.
## Model Details
| Property | Value |
| --- | --- |
| Target model | `google/gemma-2-9b-it` |
| Safe name | `google--gemma-2-9b-it` |
| Default checkpoint | `l_25_lm_10000_ar_lr.pt` |
| Available checkpoints | 336 |
| Calibration | Threshold set at 1% FPR on Alpaca (honest baseline) |
## Training Data
Probes are trained on the [city_countries](https://huggingface.co/datasets/ai-safety-institute/city_countries_well_known) dataset (model asked to lie about geographical facts) and calibrated on [Alpaca](https://huggingface.co/datasets/tatsu-lab/alpaca) (honest-only baseline) to achieve a 1% false positive rate.
## Citation
### Trained Probes
```bibtex
@misc{cooney2026liedetectors,
title={``Did you lie?'' Evaluating Lie Detectors across Model Scale and Belief-Verified Model Organisms},
author={Alan Cooney and David Africa and Geoffrey Irving},
year={2026},
month={May},
}
```
|