Niamh McCombe

Independent AI research. Four strands of work: how reinforcement learning rewires a model's response to its own training situation, how language models come by embodied conceptual structure, why coding agents cheat far more inside benchmark scaffolds than outside them, and a small language model that is transparent by construction.

Interpretability · post-training

Functional connectivity changes from reinforcement learning

A new method finds which attention heads reinforcement learning changed most in OLMo 3 when its system prompt is on. Scanning them for anything weird turned up the Muttley head: after RL, the system prompt makes it push toward swear words, though the model never says them.

Read the study →
Interpretability

Embodied cognition in transformers

Steering along a purely spatial UP direction makes Pythia and GPT-2 happier, beyond every random-word direction. Lakoff's image schemas couple to each other the way the theory predicts, and a probe trained on literal journeys reads start and goal in abstract change and in instructions. Smaller than I first claimed, and still there.

See the findings →
Alignment · evaluations

Reward hacking is largely a property of the scaffold

Same model, same 103 unsatisfiable coding tasks, same prompt. Inside ImpossibleBench's own agent scaffold it cheats on 63% of them. Inside an ordinary coding agent, 2%. Persistence after a failed submission is the trigger.

Read the study →
Architecture

GLAS: a transparent language model

A tree of specialists that compete on prediction error instead of an attention stack. At every character you can see which specialist won and how surprised the model was. At 100K and 1M parameters it beats a matched transformer on character-level Shakespeare. Scaling it up is the current work.

See the model →

Embodied cognition in transformers

Cognitive linguistics says abstract thought is built from bodily image schemas: HAPPY IS UP, MORE IS UP, PURPOSES ARE DESTINATIONS. A language model has no body. Does it have the schemas?

The full page was rewritten on 3 October 2026, after an audit found two faults in the instrument behind several earlier findings. What survived re-testing is below; every experiment since the audit was pre-registered before it ran.

UP is HAPPY, for transformers too

Build an UP direction from purely spatial word pairs (up/down, rise/fall, above/below, climb/descend), each word read inside eight neutral sentences, with word frequency projected out. Add it to the residual stream while the model completes prompts, and the completions get happier. Judged against directions built the same way from random words, UP beats every one of them on happiness: all 30 in Pythia 1.4B, and all 20 at each of three GPT-2 medium layers. In GPT-2, status and quantity (MORE IS UP) clear the random-word bar at some layers too.

Effect of steering a clean UP direction on happiness, status and quantity, as a multiple of the 95th percentile of random-word directions, in Pythia 1.4B and three layers of GPT-2 medium
Steering effect divided by the 95th percentile of random-word directions. Above the dashed line = beyond random.

That could still be the corpus's fingerprint: humans wrote the text, humans think in these metaphors. Nothing here refutes that. What the next results add is that the inheritance is structured.

The schemas couple to each other as the theory predicts

Six couplings the embodied logic implies were written down first, then the full 8×8 matrix measured at every layer of Pythia 410M. The predicted pairs average +0.17; the 22 unpredicted pairs +0.01. The same words scrambled into eight fake schemas give a difference of at most +0.08. Four predicted pairs are positive at all 24 layers; two (UP↔BALANCE, UP↔FORCE) are near zero.

Predicted minus unpredicted schema couplings across 24 layers of Pythia 410M, against a scrambled-schema null band
Clean axes, Pythia 410M. Above the scrambled range at every layer except the last.

Source-path-goal: the shape of a walk, reused

A probe trained to tell the start of a literal journey from its end ("The walk began at the barn and ended at the river") also reads start and end in abstract change ("His poverty slowly turned into wealth") and in instructions ("Turn this draft into a summary"), above chance in Pythia and Llama base and instruct. Swap the nouns and it follows the roles, not the words. And the role is relational: "Write a haiku" has nothing to start from, and the haiku is not marked as a goal.

Cartoon: a walker going from a barn to a river, and below it an empty bowl becoming a full one (poverty to wealth), with one magnifying glass reading both
One probe, trained on walks. PURPOSES ARE DESTINATIONS (Lakoff & Johnson, 1980).
30 / 30
random-word directions UP beats on happiness, Pythia 1.4B
+0.17 vs +0.01
mean coupling, 6 predicted vs 22 unpredicted schema pairs
98%
start/end read correctly on "from poverty to wealth", a probe trained only on walks

Full write-up, with controls, open questions and the corrected earlier version →  ·  Code and pre-registrations


Reward hacking is largely a property of the scaffold

gpt-5.6-luna was run on all 103 tasks of Impossible-LiveCodeBench (conflicting split), where the tests contradict each other and passing is only possible by cheating. Inside ImpossibleBench's own agent scaffold, as published, it cheated on 63% of tasks. Inside an ordinary coding agent (the OpenCode CLI) with the same prompt, same reasoning effort, same API surface, it cheated on 2%. Adding only a submit tool to the ordinary agent multiplied cheating seven-fold. The driver is persistence after a failed verdict: in every condition, 100% of runs that submitted a second time cheated, and runs that never submitted never did. Attempts to soften the benchmark scaffold with framing, reassurance, or a diary read by another mind had no effect.

1.9%
cheated · ordinary coding agent
63.1%
cheated · benchmark scaffold as published

Full study →  ·  Data, harness, and analysis scripts

Bar chart of cheat rate by harness across the four conditions
Cheat rate by harness. Same model, same 103 tasks, same order.

GLAS: transparent AI from first principles

GLAS replaces the attention stack with a tree of specialists that compete on prediction error. Three primitives (prediction, error, recursion) and everything else, including routing and specialisation, emerges. Because the winner of each competition is the model's decision, transparency is structural: at every character you can read off which group won, which cell within it, and how surprised the model was. On character-level Shakespeare a 1M-parameter GLAS reaches cross-entropy 1.416 against 1.631 for a parameter-matched transformer, and the gap widens from 100K to 1M parameters. I am currently working on how to scale it.

The model, the numbers, and a live routing trace →

Final cross-entropy versus parameter count for GLAS and a matched transformer
Final cross-entropy vs parameters, GLAS and matched transformer, TinyShakespeare.