Fact-Checking Abstention SAEs
Domain TopK sparse autoencoders trained on the residual stream of instruction-tuned LLMs while they read fact-checking verdict prompts (claim + evidence + instructions), released to study how models decide to abstain ("NOT ENOUGH EVIDENCE") instead of issuing a verdict.
Off-the-shelf SAEs reconstruct the verdict-decision position poorly (it is out of their training distribution); these SAEs are trained on the task distribution itself, so the decision position is in-distribution. Training follows Gao et al. (2024) — see each SAE's card for the full configuration and metrics.
SAEs
| base model | layers (total) | layer used | d (residual dim.) | d_sae = 8 × d | k | folder | dead features | abstention feature |
|---|---|---|---|---|---|---|---|---|
| meta-llama/Llama-3.1-8B-Instruct | 32 | 15 | 4,096 | 32,768 | 32 | llama-3.1-8b-instruct/layer-15 |
2 | 19219 |
| deepseek-ai/DeepSeek-R1-Distill-Llama-8B | 32 | 16 | 4,096 | 32,768 | 32 | (in progress: verdict position without the reasoning block) | ||
| Qwen/Qwen3-8B | 36 | 22 | 4,096 | 32,768 | 32 | qwen3-8b/layer-22 |
7 | 12482 |
| google/gemma-3-4b-it | 34 | 19 | 2,560 | 20,480 | 32 | gemma-3-4b-it/layer-19 |
212 | 12903 |
| google/gemma-4-E4B-it | 42 | tbd | 2,560 | 20,480 | 32 | (planned) | ||
| mistralai/Ministral-3-8B-Instruct-2512 | 34 | tbd | 4,096 | 32,768 | 32 | (planned) |
The dictionary size is always 8 × d (d = dimension of the residual stream), following Gao et al. (2024) and Llama Scope (He et al., 2024). The layer of each model is the one where the diff-of-means abstention direction separates NEI from SUP/REF best (highest held-out AUC in a sweep over all layers; ties at 3 decimals → the first layer).
Browse the features in the SAE viewer: lucasfrag/fact-checking-abstention-saes-viewer (top-activating claims at the verdict position, activation histograms by gold label, nearest features, logit effects).
Loading
from huggingface_hub import snapshot_download
from sae_lens import SAE
path = snapshot_download("lucasfrag/fact-checking-abstention-saes", allow_patterns="llama-3.1-8b-instruct/layer-15/*")
sae = SAE.load_from_disk(f"{path}/llama-3.1-8b-instruct/layer-15")
feats = sae.encode(resid) # resid: raw residual stream at blocks.15.hook_resid_post, shape [..., 4096]
Licenses
Each SAE follows the license of its base model (see each folder's card): the Llama-3.1 SAE is Built with Llama and distributed under the Llama 3.1 Community License; the Qwen3 SAE follows Qwen3-8B's Apache 2.0 license; the Gemma-3 SAE is distributed subject to the Gemma Terms of Use. The companion data (claims/evidence from VitaminC and FEVER) is CC BY-SA 3.0.
Data
The ordered training claims and the cached decision-position activations are in the companion dataset
lucasfrag/fact-checking-abstention-saes-data.
Context
Part of an MSc dissertation (PPGCC/PUCRS) on automated fact-checking. Citation information will be added.
References
- Gao, L., et al. (2024). Scaling and Evaluating Sparse Autoencoders. arXiv:2406.04093
- Schuster, T., et al. (2021). Get Your Vitamin C! Robust Fact Verification with Contrastive Evidence. NAACL. arXiv:2103.08541
- Thorne, J., et al. (2018). FEVER: a Large-scale Dataset for Fact Extraction and VERification. NAACL. arXiv:1803.05355
- Ferrando, J., et al. (2025). Do I Know This Entity? Knowledge Awareness and Hallucinations in Language Models. ICLR. arXiv:2411.14257
- He, Z., et al. (2024). Llama Scope: Extracting Millions of Features from Llama-3.1-8B with Sparse Autoencoders. arXiv:2410.20526