Safe Error Correction for Language Models: Frozen-Base Adjustment with Capability Preservation

arXiv cs.AI Papers

Summary

The paper proposes CRN v2, a lightweight correction module that fixes errors in frozen language models without degrading base capabilities, achieving 53.3% correction on a domain exam while preserving standard benchmarks.

arXiv:2609.16145v1 Announce Type: new Abstract: We study a practical question: can a small correction module fix errors in a frozen language model's outputs without degrading its base capabilities? We propose CRN v2, a lightweight logit-level correction module (~34M trainable parameters, 0.73% of the 4.65B text module) that sits atop a fully frozen Gemma 4 E2B model. The base model is never updated; only the correction module learns, via supervised fine-tuning followed by reference-free DPO on 83,400 error-correction pairs. On a 60-question domain exam (CEHRI: Certified Human-Robot Intelligence, covering facts, arithmetic, and implicit-goal reasoning), CRN v2 corrects 53.3% of base-model errors (reworded variant: 43.3%) while showing no degradation on tested capability benchmarks (MMLU/BoolQ N=200; car-wash N=8). A LoRA baseline at the matched CRN v1 budget (6.6M params, rank 19) achieves 83.3% correction but suffers 30-75% capability loss on the same benchmarks -- the correction-capability tradeoff. An ablation shows that the KL preservation term (lambda=0.1) is critical: lowering it to 0.01 degrades correction to 35.0%. A hidden-state injection variant at earlier layers (1.6M params, SFT-only) reaches 50.0%/55.8% but does not exceed logit correction; shallower injection (layer 4) drops to 30.0%/28.3%; multi-depth logit correction (~35M) reaches only 40%; and longer training (5,000 SFT + 2,000 DPO) stays at 53.3% -- none of the alternative configurations we tested exceeded the rank-128 logit result, consistent with a best-achieved result of ~53% rather than a floor. This is a study of a design principle (frozen base + logit correction + KL anchoring), not a claim of architectural novelty. All code, main-result weights, and evaluation scripts are released (deep variant as code only -- no trained deep checkpoints).
Original Article
View Cached Full Text

Cached at: 09/16/26, 08:56 AM

# Safe Error Correction for Language Models: Frozen-Base Adjustment withCapability Preservation
Source: [https://arxiv.org/html/2609.16145](https://arxiv.org/html/2609.16145)
Gautam Kishore

September 14, 2026

###### Abstract

We study a practical question: can a small correction module fix errors in a frozen language model’s outputs without degrading its base capabilities? We proposeCRN v2, a lightweight logit\-level correction module \(∼\\sim34M trainable parameters, 0\.73% of the 4\.65B text module\) that sits atop a fully frozen Gemma 4 E2B model\. The base model is never updated; only the correction module learns, via supervised fine\-tuning followed by reference\-free DPO on 83,400 error\-correction pairs\. On a 60\-question domain exam \(CEHRI: Certified Human\-Robot Intelligence, covering facts, arithmetic, and implicit\-goal reasoning\), CRN v2 corrects53\.3%of base\-model errors \(reworded variant: 43\.3%\) while showingno degradation on tested capability benchmarks\(MMLU/BoolQN=200N\{=\}200; car\-washN=8N\{=\}8\)\. A LoRA baseline at the matched*CRN v1*budget \(6\.6M params, rank 19\) achieves 83\.3% correction but suffers 30–75% capability loss on the same benchmarks—the correction–capability tradeoff\. An ablation shows that the KL preservation term \(λ=0\.1\\lambda\{=\}0\.1\) is critical: lowering it to 0\.01 degrades correction to 35\.0%\. A hidden\-state injection variant at earlier layers \(1\.6M params, SFT\-only\) reaches 50\.0%/55\.8% but does not exceed logit correction; shallower injection \(layer 4\) drops to 30\.0%/28\.3%; multi\-depth logit correction \(∼\\sim35M\) reaches only 40%; and longer training \(5,000 SFT\+\+2,000 DPO\) stays at 53\.3%—none of the alternative configurations we tested exceeded the rank\-128 logit result, consistent with a best\-achieved result of∼\\sim53% rather than a floor\. This is a study of a design principle \(frozen base \+ logit correction \+ KL anchoring\), not a claim of architectural novelty\. All code, main\-result weights, and evaluation scripts are released \(deep variant as code only—no trained deep checkpoints\)\.

Keywords:error correction; frozen\-backbone adapters; capability preservation; logit adjustment; parameter\-efficient fine\-tuning

## 1Introduction

Language models make errors—wrong facts, flawed reasoning, and bad suggestions\. In deployment, those errors must be caught and fixed without degrading what the model already does well\.

The naïve solution is to adapt the model itself—for example via LoRA\[[2](https://arxiv.org/html/2609.16145#bib.bib2)\]or full fine\-tuning—to reduce errors on a target domain\. But adaptation typically degrades general capabilities\[[9](https://arxiv.org/html/2609.16145#bib.bib9),[10](https://arxiv.org/html/2609.16145#bib.bib10),[11](https://arxiv.org/html/2609.16145#bib.bib11)\]: the model learns to fix specific errors but forgets what it already knew\. We call this the*correction–capability tradeoff*—aggressive correction hurts everything else\.

We study whether this tradeoff is necessary\. Specifically: can a small correction module sit on top of a*frozen*base model and learn to fix errors, without any degradation to the base’s capabilities on unrelated tasks?

We proposeCRN v2\(Cognitive Resonance Network, version 2\), a lightweight correction module that reads the base model’s final hidden state and produces an additive logit correction:

ℓ^=ℓbase\+g⋅Wup​\(GELU​\(Wdown​h\(L\)\)\)\\hat\{\\ell\}=\\ell\_\{\\text\{base\}\}\+g\\cdot W\_\{\\text\{up\}\}\\\!\\big\(\\text\{GELU\}\(W\_\{\\text\{down\}\}\\,h^\{\(L\)\}\)\\big\)\(1\)
whereh\(L\)h^\{\(L\)\}is the frozen base’s final hidden state,Wdown∈ℝr×dW\_\{\\text\{down\}\}\\in\\mathbb\{R\}^\{r\\times d\}andWup∈ℝV×rW\_\{\\text\{up\}\}\\in\\mathbb\{R\}^\{V\\times r\}are low\-rank matrices \(d=1536d\{=\}1536,V=262,144V\{=\}262\{,\}144,r=128r\{=\}128\), andggis a learned scalar gate initialized near zero\. The base model receives no gradients\.

#### Contributions\.

1. 1\.Design principle:Frozen\-base logit adjustment with KL preservation corrects errors without capability degradation on tested benchmarks\. The correction module learns to adjust the base model’s logits where needed while staying close to its behavior everywhere else\.
2. 2\.Empirical finding:CRN v2 corrects 53\.3% of errors with no measurable degradation on MMLU/BoolQ \(N=200N\{=\}200\) and car\-wash \(N=8N\{=\}8\); a LoRA baseline corrects 83\.3% but degrades 30–75% on the same benchmarks\.
3. 3\.Ablation:Lowering the KL preservation weight fromλ=0\.1\\lambda\{=\}0\.1to0\.010\.01reduces correction from 53\.3% to 35\.0%, showing the anchoring term is load\-bearing\.
4. 4\.Injection\-depth sweep \(exploratory\):A hidden\-state injection variant \(1\.6M params, rank 512\) at layer 7 reaches 50\.0%/55\.8% \(SFT\-only\) and at layer 4 drops to 30\.0%/28\.3%—deeper injection helps but does not exceed logit correction; multi\-depth logit correction \(∼\\sim35M\) reaches only 40%; longer training \(5,000 SFT\+\+2,000 DPO\) stays at 53\.3%; DPO at depth 7 destroys capabilities\. These are single\-run, session\-observed results; only the layer\-7 SFT\-only row is independently log\-verified\.
5. 5\.Transparency:All code, main\-result weights, evaluation scripts, and exact run logs are released \(deep variant as code only\)\.

#### Scope and honesty\.

This is a study of a design principle, not a claim of architectural novelty\. The correction in Eq\.[1](https://arxiv.org/html/2609.16145#S1.E1)is a standard low\-rank bottleneck\. The CEHRI exam prompts appear verbatim in the training data \(Section[3\.3](https://arxiv.org/html/2609.16145#S3.SS3)\); we report both in\-distribution and reworded results\. The evaluation suite is small \(60 \+ 120 correction Qs; MMLU/BoolQN=200N\{=\}200, car\-washN=8N\{=\}8\)\. The deep injection variant \(Section[3\.6](https://arxiv.org/html/2609.16145#S3.SS6)\) is exploratory: only its SFT\-only row is log\-verified; depth\-4 and DPO rows are session\-observed \(Section[4\.4](https://arxiv.org/html/2609.16145#S4.SS4)\)\. We report what we find, including negative results\.

## 2Related Work

Parameter\-efficient adaptation\.Adapters\[[1](https://arxiv.org/html/2609.16145#bib.bib1)\]insert trainable modules between frozen layers; LoRA\[[2](https://arxiv.org/html/2609.16145#bib.bib2)\]learns low\-rank weight updates; prefix tuning\[[3](https://arxiv.org/html/2609.16145#bib.bib3)\]optimizes soft prompts\. These methods inject capacity*inside*the base model’s computation graph\. CRN v2 is a*side network*: it reads the frozen base’s final hidden state and produces logit\-level corrections without touching any base parameter\. \(The exploratory deep variant of Section[3\.6](https://arxiv.org/html/2609.16145#S3.SS6)sits between: it injects via hooks inside the graph but updates no base parameter\.\)

Model editing\.ROME\[[4](https://arxiv.org/html/2609.16145#bib.bib4)\]and MEMIT\[[5](https://arxiv.org/html/2609.16145#bib.bib5)\]locate factual associations in transformer weights and rewrite them directly, modifying base weights\. CRN v2 achieves correction through an*additive logit adjustment*—a lighter\-weight approach that avoids weight surgery and keeps the base intact\.

Error correction in LLMs\.Self\-refinement\[[7](https://arxiv.org/html/2609.16145#bib.bib7)\]prompts the model to critique and revise its own outputs; chain\-of\-verification\[[8](https://arxiv.org/html/2609.16145#bib.bib8)\]generates verification questions and answers them\. These are inference\-time techniques requiring multiple forward passes\. CRN v2 is a trained correction module that produces corrected logits in a single forward pass; at inference, autoregressive generation requires one base forward pass per generated token \(Section[3\.4](https://arxiv.org/html/2609.16145#S3.SS4)\)\.

Capability preservation\.Catastrophic forgetting during fine\-tuning is well\-studied\[[9](https://arxiv.org/html/2609.16145#bib.bib9)\]\. Regularization approaches\[[10](https://arxiv.org/html/2609.16145#bib.bib10),[11](https://arxiv.org/html/2609.16145#bib.bib11)\]add penalty terms to protect important weights\. CRN v2 sidesteps the problem entirely: the base model is frozen, so there is nothing to forget\.

## 3Method

### 3\.1Architecture

The base modelBBis Gemma 4 E2B \(4\.65B text parameters in a 5\.12B multimodal checkpoint; 35 layers;d=1536d\{=\}1536; tied embeddings; vocabularyV=262,144V\{=\}262\{,\}144\)\. For input tokensx1:nx\_\{1:n\}, the frozen forward pass produces hidden statesh\(l\)∈ℝn×dh^\{\(l\)\}\\in\\mathbb\{R\}^\{n\\times d\}at every layer and base logitsℓbase∈ℝn×V\\ell\_\{\\text\{base\}\}\\in\\mathbb\{R\}^\{n\\times V\}\. The correction module reads only the final hidden stateh\(L\)h^\{\(L\)\}and computes Eq\.[1](https://arxiv.org/html/2609.16145#S1.E1)\. The next\-token distribution issoftmax​\(ℓ^\)\\text\{softmax\}\(\\hat\{\\ell\}\)\.

Trainable parameters:d⋅rd\{\\cdot\}r\(down\-projection, no bias\)\+r⋅V\+\\;r\{\\cdot\}V\(up\-projection weight\)\+V\+\\;V\(up\-projection bias\)\+1\+\\;1\(gate\)=196,608\+33,554,432\+262,144\+1=34,013,185=196\{,\}608\+33\{,\}554\{,\}432\+262\{,\}144\+1=34\{,\}013\{,\}185\(≈\\approx0\.73% of the 4\.65B text module\)\.

### 3\.2Training

Stage 1: Supervised fine\-tuning \(SFT\)\.Given a correct answeryyfor promptxx, the full input is‘‘prompt: answer’’with answer\-only masking \(prompt tokens have label−100\-100\)\. Each training row is expanded with a paraphrase variant, yielding 166,800 SFT rows from 83,400 pairs\. The loss is anchor\-weighted cross\-entropy on answer tokens \(anchor4×4\\times, EOS5×5\\times\) plus a KL preservation term \(below\)\. SFT runs for 2,000 steps \(AdamW, LR3×10−43\{\\times\}10^\{\-4\}, cosine annealing to0\.1×0\.1\\times, gradient accumulation 8, batch size 1\)\.

Stage 2: Direct Preference Optimization \(DPO\)\.Reference\-free DPO\[[6](https://arxiv.org/html/2609.16145#bib.bib6)\]prefers the correct answer over the base model’s wrong answer:

ℒDPO=−log⁡σ⁡\(β⁡\[log⁡pθ​\(yc∣x\)−log⁡pθ​\(yr∣x\)\]\)\\mathcal\{L\}\_\{\\text\{DPO\}\}=\-\\log\\sigma\\\!\\left\(\\beta\\left\[\\log p\_\{\\theta\}\(y\_\{c\}\\mid x\)\-\\log p\_\{\\theta\}\(y\_\{r\}\\mid x\)\\right\]\\right\)\(2\)
whereycy\_\{c\}is the correct answer,yry\_\{r\}is the frozen base’s wrong answer, andβ=0\.1\\beta\{=\}0\.1\. There is no reference model—the frozen base generates rejected completions\. DPO runs for 500 steps \(AdamW, LR5×10−65\{\\times\}10^\{\-6\}\)\.

KL preservation\.During SFT, a KL term penalizes deviation from the base model’s distribution:

ℒ=ℒtask\+λ⋅KL\(pbase∥pcorrected\)\\mathcal\{L\}=\\mathcal\{L\}\_\{\\text\{task\}\}\+\\lambda\\cdot\\text\{KL\}\(p\_\{\\text\{base\}\}\\,\\\|\\,p\_\{\\text\{corrected\}\}\)\(3\)
computed per\-token over all non\-masked positions and averaged\. This pushes the correction toward the base on inputs the base handles correctly, while allowing it to diverge where the base is wrong\. Defaultλ=0\.1\\lambda\{=\}0\.1; Section[4\.3](https://arxiv.org/html/2609.16145#S4.SS3)ablates this\.

### 3\.3Data

The training fileerror\_correction\_pairs\_v2\.jsoncontains 83,400 pairs with fields\{prompt, chosen, rejected, domain, variant\}\. There are 17,810 unique prompts across three domains \(facts, arithmetic, implicit\-goal reasoning\), each with∼\\sim4\.7 rows on average due to paraphrase variants and chosen/rejected pairings\. The CEHRI exam \(60 questions\) and its reworded variant \(120 questions, template\-based paraphrases with mean 71\.6% character overlap\) are drawn from this distribution:all 60 exam prompts appear verbatim in the training data\.The reworded exam applies prefix/suffix templates \(e\.g\., “Can you answer: ” / “Respond to this: ”\) so similarities range 0\.881–0\.990 \(median 0\.972; 118/120≥0\.9\\geq 0\.9by cosine\)\. Thus the original exam measures in\-distribution correction and the reworded exam measures near\-duplicate correction; neither tests out\-of\-distribution generalization\.

### 3\.4Inference

At test time CRN v2 generates autoregressively: at each step the*full*generated sequence is run through the frozen base to obtainh\(L\)h^\{\(L\)\}andℓbase\\ell\_\{\\text\{base\}\}, the correction is applied \(Eq\.[1](https://arxiv.org/html/2609.16145#S1.E1)\), and the next token is greedy\-decoded fromℓ^\\hat\{\\ell\}\. This requires one base forward pass per generated token \(no KV cache, since the correction readsh\(L\)h^\{\(L\)\}of the full sequence\)\. On Apple M4 \(MPS\) this is∼\\sim1 s/token; a 16\-token answer takes∼\\sim16 s\.

### 3\.5Baseline: LoRA at the CRN v1 budget

CRN v1 had 6,721,444 trainable parameters\. The LoRA baseline matches that budget: rank1919,α=38\\alpha\{=\}38, applied to all linear layers \(q/k/v/o \+ gate/up/down\) at 8 depths\{3,7,11,15,19,23,27,31\}\\\{3,7,11,15,19,23,27,31\\\}, yielding 6,624,768 trainable parameters \(1\.4% fewer than CRN v1\)\. It uses the same data and DPO objective \(reference\-free ranking,β=0\.1\\beta\{=\}0\.1\)\. Both use anchor \(4×4\\times\) and EOS \(5×5\\times\) position\-weighted answer\-only CE with AdamW and cosine\-annealed SFT \(LR3×10−43\{\\times\}10^\{\-4\}\) and DPO \(LR5×10−65\{\\times\}10^\{\-6\}\)\. The LoRA run used SFT 3,000 / DPO 600 steps vs\. CRN v2’s 2,000/500—if anything favoring LoRA on correction\. CRN v2’s 34M parameters are∼\\sim5×\\timeslarger than LoRA’s 6\.6M; we compare directly and disclose this \(Section[4](https://arxiv.org/html/2609.16145#S4)\)\. Training and evaluation run on the same Apple M4 \(16 GB; MPS\)\. LoRA also freezes the base model—both methods preserve base*weights*; only LoRA degrades base*behavior*\(Section[4\.2](https://arxiv.org/html/2609.16145#S4.SS2)\)\.

### 3\.6Variant: deep hidden\-state injection

Logit correction touches only the final layer’s output, with no downstream amplification\. We test whether injecting the correction*earlier*—so frozen downstream layers amplify it—exceeds the logit correction result\. The deep variant adds a low\-rank residual to hidden states at a chosen layerkkvia a forward hook:

h\(k\)←h\(k\)\+g⋅Wup​\(GELU​\(Wdown​h\(k\)\)\)h^\{\(k\)\}\\leftarrow h^\{\(k\)\}\+g\\cdot W\_\{\\text\{up\}\}\\\!\\big\(\\text\{GELU\}\(W\_\{\\text\{down\}\}\\,h^\{\(k\)\}\)\\big\)\(4\)
whereWdown∈ℝr×dW\_\{\\text\{down\}\}\\in\\mathbb\{R\}^\{r\\times d\},Wup∈ℝd×rW\_\{\\text\{up\}\}\\in\\mathbb\{R\}^\{d\\times r\}\(d=1536d\{=\}1536,r=512r\{=\}512\), plus a bias on the up\-projection and a learned scalar gategg\. The correction at layerkkpropagates through frozen layersk\+1​…​Lk\{\+\}1\\dots Lbefore reaching the output head\. Trainable parameters per injection depth:d⋅rd\{\\cdot\}r\(down, no bias\)\+r⋅d\+\\;r\{\\cdot\}d\(up weight\)\+d\+\\;d\(up bias\)\+1\+\\;1\(gate\)=786,432\+786,432\+1,536\+1=1,574,401=786\{,\}432\+786\{,\}432\+1\{,\}536\+1=1\{,\}574\{,\}401\(≈\\approx0\.034% of the base\)\. Training mirrors CRN v2 \(SFT with anchor/EOS weighting\+\+KLλ=0\.1\\lambda\{=\}0\.1; optional DPO stage\), with gradients flowing*through*the frozen downstream layers back to the correction module—base parameters receive no gradients\. We test single\-depth injection atk=7k\{=\}7\(27 downstream layers\) andk=4k\{=\}4\(30 downstream layers\)\.

## 4Results

### 4\.1Error correction

Table 1:Error correction on the CEHRI exam\. The model generates answers autoregressively; CRN v2 uses corrected logits at each step, the base and LoRA use their own logits\. Substring match: the gold answer must appear in the generation\.CRN v2 corrects 53\.3% of base\-model errors on the original exam \(43\.3% reworded\)\. The LoRA baseline corrects 83\.3% \(77\.5% reworded\)—strictly higher\. The frozen base alone answers 7/60 correctly \(substring match on gold answers in the generated text\), so CRN v2 adds 25 correct answers \(32–7\) on the original exam and LoRA adds 43\. WithN=60N\{=\}60, the 95% Wilson interval for 53\.3% is \[40\.9%, 65\.4%\]; for 83\.3% it is \[72\.0%, 90\.7%\]\. WithN=120N\{=\}120, the interval for 43\.3% is \[34\.6%, 52\.4%\]; for 77\.5% it is \[69\.0%, 84\.4%\]\. The gap is real on both exams, but correction alone is not the full picture\.

### 4\.2Capability preservation

Table 2:Capability benchmarks \(N=200N\{=\}200per task, except car\-washN=8N\{=\}8\)\.Δ\\Deltais the change from the frozen base\. Identical prompts and greedy decoding for all models\.Table[2](https://arxiv.org/html/2609.16145#S4.T2)is the central result\.CRN v2 shows no measurable degradation on any tested benchmark—it matches the frozen base exactly on MMLU, BoolQ, and car\-wash\.LoRA degrades 17–75 pp across the same benchmarks, including total failure on the 8\-question car\-wash set\. HellaSwag scores 0/200 for both base and CRN v2 due to a scoring bug \(thefirst\_letterparser expects a single letter A–D but both models generate full\-sentence completions\); we report it for completeness and exclude it from claims\.

The mechanism is straightforward: the base model is frozen, so there is nothing to forget\. The correction module learns to adjust logits where the base is wrong, while KL preservation keeps it close to base behavior everywhere else\.

We note two caveats\. First, per\-taskNNis small \(200 for MMLU/BoolQ, only 8 for car\-wash\); the 125/200 vs\. 64/200 gap on MMLU is large enough to be unambiguous, but finer differences would require largerNN\. Second, “no degradation” means “no degradation on the three tested benchmarks”—we do not claim universal preservation\.

### 4\.3KL preservation ablation

Table 3:KL weight ablation\. All other hyperparameters fixed except as noted in the “rank /λ\\lambda/ DPO steps” row\. Capability column shows MMLU \(representative; BoolQ/car\-wash behave identically—no degradation at either setting\)\.Loweringλ\\lambdafrom 0\.1 to 0\.01 degrades correction from 53\.3% to 35\.0% \(and reworded from 43\.3% to 25\.8%\)\. Capability preservation is unaffected at either setting \(the base is frozen, so KL affects only the correction module’s training dynamics\)\. We caution that this ablation*confounds*three variables—rank \(128→\\to256\),λ\\lambda\(0\.1→\\to0\.01\), and DPO steps \(500→\\to2000\)—so we cannot attribute the drop toλ\\lambdaalone\. The qualitative pattern \(weaker anchoring→\\toworse correction\) is consistent with the hypothesis that the correction module must remain anchored to base representations to be effective, but isolatingλ\\lambdarequires a single\-variable sweep \(future work\)\.

### 4\.4Injection\-depth sweep

Table 4:Injection\-depth sweep \(exploratory\)\. All configurations useλ=0\.1\\lambda\{=\}0\.1, SFT 2,000 steps unless noted\. Logit CRN v2 \(rank 128, single depth\) is the only independently verified configuration—checkpoint and benchmark JSONs are released\. Multi\-depth logit correction concatenates hidden states from multiple layers \(including the final\) before producing a single logit delta \(rank 128,∼\\sim35M total\)\.†Session\-observed: eval logs were removed during disk maintenance and deep/multi\-depth checkpoints were not retained, so these rows are not independently re\-verifiable from the release\.Three findings \(Table[4](https://arxiv.org/html/2609.16145#S4.T4)\)\. First,deeper injection helps but never beats logit correction: layer 4 reaches only 30\.0%/28\.3% while layer 7 reaches 50\.0%/55\.8%—yet neither exceeds the logit\-level 53\.3% on the original exam despite 30 and 27 frozen downstream layers of amplification respectively\. Second,DPO at depth 7 is destructive: correction stays flat \(50\.0%/55\.0% vs\. 50\.0%/55\.8% SFT\-only\) while capabilities collapse \(MMLU 13%, BoolQ degenerate\)—the correction feeds into 27 downstream layers, so preference optimization corrupts all downstream computation\. SFT\-only at depth 7 preserves capabilities on a small probe \(4/6 MMLU\), consistent with the frozen\-base safety property holding only when the correction stays small and anchored\. Third,no alternative configuration exceeded 53\.3%: concatenating hidden states from multiple layers \(∼\\sim35M params\) reaches only 40%, and training for 5,000 SFT\+\+2,000 DPO steps \(rank 128\) stays at 53\.3%—suggesting the rank\-128 result is not easily improved by adding capacity or training duration, though independent verification of these alternative configurations is needed to establish whether∼\\sim53% is a hard ceiling or a best\-achieved point on this exam\. The mechanism is consistent with a ceiling: frozen layers process the correction module’s additive output without amplifying it, so adding more correction capacity or training time may not push past what the frozen computation graph allows\. Together, these results are consistent with∼\\sim53% being the best result across tested configurations on this exam, though we do not claim a theoretical ceiling\.

### 4\.5Training time

Total wall time on Apple M4 \(16 GB, MPS\): SFT 2,000 steps∼\\sim17 min \+ DPO 500 steps∼\\sim8 min==∼\\sim25 min end\-to\-end\. Checkpoints every 200 steps with resumable state\. Deep\-variant SFT\-only \(1\.6M params, gradients through frozen layers\) takes∼\\sim55–60 min for 2,000 steps on the same hardware\.

## 5Discussion

The tradeoff is real and measurable\.LoRA corrects more errors \(83\.3% vs\. 53\.3%\) but degrades capabilities by 17–75 pp\. CRN v2 corrects fewer errors but preserves every tested capability\. For deployment, preservation matters: a model that fixes some errors but breaks general reasoning is worse than one that fixes fewer errors and stays reliable\.

∼\\sim53% is the best result across tested configurations, not a proven ceiling\.Rank 128 with 500 DPO steps achieves 53\.3%; alternative configurations we tested—longer training \(5,000\-step SFT\+\+2,000\-step DPO, rank 128\), multi\-depth logit correction \(2 depths, rank 128\), and deep hidden\-state injection at two depths—also do not exceed 53\.3% on the original exam \(Section[4\.4](https://arxiv.org/html/2609.16145#S4.SS4)\)\. However, these alternatives are single\-run results from the same experimental session and lack independent verification \(logs removed, checkpoints not retained\); we therefore describe them as consistent with a ceiling rather than proof of one\. The mechanism is plausible: LoRA modifies weights inside every layer so corrections cascade through all downstream computation, while any frozen\-base method can only add to activations or logits the frozen layers then process unchanged\.

The design principle generalizes\.Frozen\-base adjustment with KL anchoring is not specific to Gemma 4 E2B\. Any frozen LM can be augmented with a correction module trained on its error patterns\. The released code is model\-agnostic up to the tokenizer and hidden\-dimension constants\.

What this is not\.We do not claim architectural novelty—Eq\.[1](https://arxiv.org/html/2609.16145#S1.E1)is a standard low\-rank bottleneck\. We do not claim the 53\.3% reflects out\-of\-distribution generalization—all exam prompts appear verbatim in the training data \(Section[3\.3](https://arxiv.org/html/2609.16145#S3.SS3)\)\. We do not claim universal capability preservation—we tested three benchmarks atN=200N\{=\}200/88\.

## 6Limitations

1. 1\.Correction reaches 53\.3%, leaving 46\.7% of exam errors unfixed—insufficient for high\-stakes use\.
2. 2\.Evaluation is a single 60\-question domain exam; reworded variants are low\-diversity templates \(71\.6% character overlap\), not genuine paraphrases\.
3. 3\.Per\-task benchmarkNNis small \(200 for MMLU/BoolQ, 8 for car\-wash\); finer capability differences require largerNN\.
4. 4\.The KL ablation confounds rank,λ\\lambda, and DPO steps—a single\-variable sweep is needed\.
5. 5\.Autoregressive generation requires one full base forward pass per token \(no KV cache\), making inference∼\\sim1 s/token on M4\.
6. 6\.Training data \(83,400 rows from 17,810 unique prompts\) is small; scaling behavior is unknown\.
7. 7\.HellaSwag evaluation is broken for both models due to a scoring\-parser mismatch; we report it but draw no conclusions from it\.
8. 8\.The deep injection variant is exploratory: only depth\-7 SFT\-only numbers are log\-verified; depth\-4 and DPO rows are session\-observed \(eval logs removed, checkpoints not retained\); capability probes are small \(N=30N\{=\}30MMLU,N=20N\{=\}20BoolQ\); and DPO at depth 7 destroyed capabilities in our single run without hyperparameter sweep\.

## 7Conclusion

We study frozen\-base error correction: a small correction module on top of a frozen language model, trained to fix errors without degrading base capabilities\. CRN v2 \(34M params, 0\.73% of the base\) corrects 53\.3% of errors with no measurable degradation on tested benchmarks\. A LoRA baseline at the matched CRN v1 budget corrects 83\.3% but degrades 17–75 pp\. The KL preservation term is load\-bearing—weakening it degrades correction\. An exploratory injection\-depth sweep \(hidden\-state correction at layers 4/7, multi\-depth logit correction, longer training\) found no configuration that exceeded the rank\-128 logit result: deeper injection helps but does not exceed it, and DPO at depth destroys capabilities\. These are single\-run, session\-observed results; only the layer\-7 SFT\-only row is independently log\-verified\. The pattern is consistent with∼\\sim53% being the best result across tested configurations, though we do not claim a proven ceiling\. The principle \(frozen base \+ logit correction \+ KL anchoring\) is simple, generalizable, and fully reproducible\. All code, main\-result weights, and evaluation scripts are released at[https://github\.com/eulogik/prajna](https://github.com/eulogik/prajna)\.

## Reproducibility

All main\-result numbers in this paper are produced by committed scripts and fixed checkpoints; no thresholds are tuned on the exam\. The deep\-variant exploratory rows are excepted \(Section[4\.4](https://arxiv.org/html/2609.16145#S4.SS4)\)\. From the repository root \(after settingHF\_HOMEfor the model cache\):

```
# CEHRI original (60 Qs)  -> 32/60 = 53.3%
CRN_V2_CKPT=prajna/checkpoints/crn_v2_dpo.pt \
CRN_V2_RANK=128 CEHRI_EXAM=prajna/data/cehri_exam.json \
python prajna-phase2/src/eval_crn_v2.py

# CEHRI reworded (120 Qs) -> 52/120 = 43.3%
CRN_V2_CKPT=prajna/checkpoints/crn_v2_dpo.pt \
CRN_V2_RANK=128 CEHRI_EXAM=prajna/data/cehri_exam_reworded.json \
python prajna-phase2/src/eval_crn_v2.py

# Capability: recorded artifacts (identical prompts, greedy decoding;
# MMLU/BoolQ N=200, car-wash N=8; harness was ephemeral, JSONs retained)
# base:  MMLU 125/200, BoolQ 144/200, car-wash 6/8
cat prajna/checkpoints/crn_v2_bench_base.json

# Capability: CRN v2 (identical: MMLU 125/200, BoolQ 144/200, car-wash 6/8)
cat prajna/checkpoints/crn_v2_bench_crnv2.json
```

Deep\-injection variant \(experimental; code only—no trained deep checkpoints in the release\)\. Depth\-7 SFT\-only numbers \(30/60 orig, 67/120 reworded\) are verified against retained logs \(crn\_deep\_sft\_orig\.log,crn\_deep\_sft\_reworded\.log\); depth\-4 and depth\-7 DPO rows are session\-observed \(Section[4\.4](https://arxiv.org/html/2609.16145#S4.SS4)\):

```
# Train deep injection at layer 7 (rank 512, KL 0.1, SFT-only)
HF_HOME=<model-cache> DEEP_RANK=512 DEEP_DEPTHS="7" DEEP_KL_LAMBDA=0.1 \
DEEP_SFT_STEPS=2000 DEEP_DPO_STEPS=0 DEEP_CKPT_DIR=prajna/checkpoints \
python prajna-phase2/src/train_crn_deep.py

# Eval deep injection (orig 60 Qs / reworded 120 Qs)
HF_HOME=<model-cache> DEEP_RANK=512 DEEP_DEPTHS="7" \
DEEP_CKPT=prajna/checkpoints/crn_deep_sft.pt \
CEHRI_EXAM=prajna/data/cehri_exam.json \
python prajna-phase2/src/eval_crn_deep.py
```

The released bundle on HuggingFace \(eulogik/Prajna\-CRNv2\) contains the CRN v2 weights and eval scripts\.

## References

- \[1\]N\. Houlsby et al\. Parameter\-Efficient Transfer Learning for NLP\.*ICML*, 2019\.
- \[2\]E\. Hu et al\. LoRA: Low\-Rank Adaptation of Large Language Models\.*ICLR*, 2022\. arXiv:2106\.09685\.
- \[3\]X\. Li and P\. Liang\. Prefix\-Tuning: Optimizing Continuous Prompts for Generation\.*ACL*, 2021\. arXiv:2101\.00190\.
- \[4\]K\. Meng et al\. Locating and Editing Factual Associations in GPT\.*NeurIPS*, 2022\. arXiv:2202\.05262\.
- \[5\]K\. Meng et al\. Mass\-Editing Memory in a Transformer\.*ICLR*, 2023\. arXiv:2210\.33602\.
- \[6\]R\. Rafailov et al\. Direct Preference Optimization: Your Language Model is Secretly a Reward Model\.*NeurIPS*, 2023\. arXiv:2305\.18290\.
- \[7\]A\. Madaan et al\. Self\-Refine: Iterative Refinement with Self\-Feedback\.*NeurIPS*, 2023\. arXiv:2303\.17651\.
- \[8\]Y\. Dua et al\. Empowering Multi\-Step Reasoning across Domains via Chain\-of\-Verification\. 2023\. arXiv:2305\.19733\.
- \[9\]M\. McCloskey and N\. Cohen\. Catastrophic Interference in Connectionist Networks\.*JEP: General*, 1989\.
- \[10\]J\. Kirkpatrick et al\. Overcoming Catastrophic Forgetting in Neural Networks\.*PNAS*, 2017\. arXiv:1612\.00796\.
- \[11\]Z\. Li and D\. Hoiem\. Learning Without Forgetting\.*TPAMI*, 2018\. arXiv:1606\.09282\.

Similar Articles

ReAD: Reinforcement-Guided Capability Distillation for Large Language Models

arXiv cs.CL

This paper introduces ReAD, a reinforcement-guided capability distillation framework that optimizes token budgets by accounting for cross-capability transfer in large language models. It demonstrates improved downstream utility and reduced harmful spillover compared to existing baselines.