NLA-EXPLORE Mikul Rai
An Exploration into NLAs

Can you trust what a
Natural Language Autoencoder
says?

Thesis
NLAs faithfully capture the gist of a computation, but confabulate the specifics.
author  Mikul Rai probed on  Gemma-3-27B · Qwen2.5-7B source  transformer-circuits.pub/2026/nla GitHub
The method

A model's thoughts, written out in English

An activation verbaliser reads a vector from inside the model and then translates it into English. An activation reconstructor rebuilds the vector from that text. Trained jointly, the round trip stays accurate, so the description is supposed to capture what the activation is trying to say. There is no ground-truth for the activations or any loss for coherent responses.

activation vector
[ 0.21 −1.43 0.08 0.77 … −0.37 ]
verbalizer
plain-English description
“a structured article about the Eiffel Tower…”
reconstructor
activation vector′
[ 0.19 −1.40 0.11 0.74 … −0.35 ]

// the round trip stays accurate, but is the English in the middle telling the truth?

Warm-up

Feed it a sentence. Read it back.

Here's the activation at a late token of one short sentence, described by the hosted NLA for Gemma-3-27B.

input ▸ The Eiffel Tower stands in the heart of Paris. {{ eiffel.hint }}
NLA reads

An informational article about the Eiffel Tower, the opening sentence “The Eiffel Tower stands majestically in Paris”, signalling a descriptive piece, expecting “…France” to come next. Other phrasings: “stands tall in Paris.”

majestically and tall aren't in your sentence, but they're true of the Tower. The NLA is filling in plausible detail, not lying. Telling those two apart is the whole game.
Experiment 01 · Confabulation

How faithfully does it reproduce the input?

30 short factual sentences in; the NLA's description of a late-token activation out. Each one classified by hand by what it actually asserts, a faithful paraphrase, a true detail it added, or a flatly false claim.

{{ s.text }} {{ s.vLabel }}
NLA reads

{{ s.nla }}

{{ s.reason }}
Result · 30 descriptions, classified by hand
faithful
verbatim / paraphrase
25
adds a true detail
not in the input
4
false confabulation
asserts something untrue
1
number of the 30 descriptions →

Where do the dramatic "fabrications" come from?

Most are the NLA predicting what comes next, not asserting what's there, “…or Napoleon painted it” is a guess about the continuation, not a claim about the input. Strip those out and genuinely false statements are rare. The one that survives: it asserts “Beethoven composed six symphonies”, flatly false. It was nine.

Experiment 02 · Faithfulness on math

Does it know the answer the model gave?

Qwen2.5-7B multiplies two 3-digit numbers in a single forward pass, and gets it wrong 89% of the time. We take the activation that produced each wrong answer and ask the NLA to describe it.

{{ m.expr }} true {{ m.truth }}  ·  Qwen said {{ m.model }}
NLA reads the answer-activation

{{ m.nla }}

GIST ✓  it's a multiplication SPECIFICS ✗  invents the digits
Coarse: identifies the computation
100%
math question
answer activation
0%
non-math
sentence (control)
Fine: contains the specific answer
0%
full
answer
69%
per-digit
(real)
76%
per-digit
(chance)
95% CIs overlap → no signal beyond chance
It knows it's multiplying, 100% of the time. It has no idea what the answer is, 0%.
Caveat

The per-digit number is a measurement artifact

Even the 69% per-digit overlap probably isn't the NLA representing the answer. When it imagines a generic calculator string like “123456789 × 987654321”, almost every digit 0 to 9 turns up somewhere, so matching the model's answer on any single digit is close to guaranteed by how we measure it, not by the activation encoding the answer. That is exactly why the real (69%) and chance (76%) rates come out statistically indistinguishable.

Experiment 03 · A novel test

Can a text-trained NLA read an image?

Gemma-3-27B is multimodal. We feed it an image, then point the text-trained NLA at the resulting activation. It was never trained on vision, so what does it see?

Gemma sees
{{ g.sees }}
NLA reads

{{ g.reads }}

shared: {{ w }}
invents ✗  {{ g.invents }}
click to read
Image gist is real signal
≈ 3× chance
3.31
matching
image
1.12
shuffled
(random)
content words shared with Gemma's caption
Subject-hit rate
names the subject
100%
real
62%
shuffled
it reads gist, then invents the detail
Future work

A model's thoughts, displayed as an image

Experiment 3 showed the surprising part: an image's activations can be read back by a text-trained NLA, in English. That hints the model holds image and text activations in a shared, paired space. So the natural next step runs the loop the other way, with a renderer that turns an activation into a picture and a reconstructor that closes the round trip.

activation vector
[ 0.34 −0.92 1.10 0.05 … −0.61 ]
renderer
rendered image
the model's picture of “guilt”
reconstructor
activation vector′
[ 0.31 −0.95 1.07 0.08 … −0.58 ]

// today we read an activation as words. tomorrow, as the picture behind them.

Pointed at the right activations, that would give a literal snapshot of how the model pictures abstract factors and emotions, what “guilt” or “hallucination” look like from the inside, rather than only how it describes them.

The verdict

Faithful about the gist. Confabulates the specifics.

Mikul Rai · An Exploration into NLAs method · transformer-circuits.pub/2026/nla