Singular Value Perturbation
Unlocking RL Performance via Diverse Latent Reasoning

1KAIST, 2New York University, 3Google

Latent reasoning models cannot explore, so RL cannot improve them.
SVP fixes that by injecting structured randomness in the weights.

Deterministic latent reasoning

Fixed weights, 1 reasoning path

Latent reasoning has no randomness, so RL has no differing rollouts to compare.

Put structured noise in weights

Perturbed singular values, diverse paths

SVP-V introduces diversity to the latent trajectories via structured perturbation on the attention Value projection.

Exploration that RL can use

GSM8K accuracy

SVP-V-GRPO achieves state-of-the-art performance among continuous LRMs.

Read the full abstract

Latent Reasoning Models (LRMs) replace explicit chain-of-thought tokens with continuous recurrent computation, but that recurrence is deterministic: sampling answer tokens cannot explore alternative computations inside the latent reasoning phase, which limits the exploration reinforcement learning needs. Singular-Value Perturbation (SVP) diversifies latent trajectories by randomly rescaling coefficients in the fixed SVD basis of a weight matrix. Applied to attention Value projections (SVP-V), it perturbs the messages attention transmits while preserving the attention weights for a fixed input.

Across multiple LRMs and mathematical reasoning benchmarks, SVP-based configurations achieve the highest solution coverage in every evaluated setting, and intermediate LM-head readouts reveal semantic branching around decision-critical steps. Building on this, SVP-V-GRPO learns from the relative outcomes of perturbed trajectories while updating only the Value parameters: starting from COCONUT, it improves GSM8K accuracy from 34.1% to 50.3% and achieves state-of-the-art performance on all six benchmarks among released GPT-2-based continuous LRMs.

Method

Latent reasoning models think in hidden states, and that recurrence is deterministic. SVP introduces structured randomness in the weights by rescaling the singular values of the attention Value projection.

SVP-V

Decompose the Value projection once, WV = UΣR⊤. For each trajectory, draw Gaussian noise ε and rescale only the singular values; U and R⊤ never move. The draw is held fixed through prefill and every latent step, so each trajectory reasons with its own W̃V.

\[\widetilde{W}_V \;=\; \sum_{i=1}^{r} s_i(1+\alpha\varepsilon_i)\,u_i r_i^\top, \qquad \varepsilon_i \sim \mathcal{N}(0,1)\]

The only hyperparameter is \(\alpha\): the RMS size of the perturbation relative to the clean response, the same for every input.

Why the Value projection?

Perturbing WV changes the messages attention transmits but leaves the attention weights untouched for a fixed input, so it still acts when attention is sharply peaked and query- or key-side noise loses its effect. Empirically, WV is also the most effective perturbation injection site among all the targets we compared.

Why Gaussian coefficients?

With the SVD basis fixed and the perturbation size budgeted relative to the clean response, multiplicative Gaussian noise on the singular values is the unique maximum-entropy choice: the most diverse perturbation that budget allows.

SVP-V-GRPO: exploration that unlocks RL

RL needs rollouts that differ, and a deterministic latent recurrence gives it none. SVP-V-GRPO samples each rollout with its own SVP-V draw, learns from the relative outcomes of those perturbed trajectories, and updates only the attention Value projections (about 5.7% of the parameters). All accuracies below are measured with the perturbation switched off: the exploration is only needed during training, and the gain stays in the clean model.

1. Rollouts with per-trajectory noise

Rollout \(j\) draws its own noise \(\varepsilon^{(j)} \sim \mathcal{N}(0, I)\), held fixed through prefill and every latent step; the answer is then decoded with the clean WV at temperature 1. Following Dr.GRPO, each of the \(G\) rollouts gets a centered, unnormalized advantage (\(\overline{\mathcal{R}}\) is the group's mean reward), and token losses are summed without response-length normalization:

\[\mathcal{R}_j = \mathbf{1}\{o_j \text{ is correct}\}, \quad \widehat{A}_j = \mathcal{R}_j - \overline{\mathcal{R}}\]

Following DAPO's dynamic sampling, we keep only groups that contain both correct and incorrect rollouts, since the rest have zero advantage. SVP-V raises how often a group qualifies.

2. Replay the same noise to optimize

We store \(\varepsilon^{(j)}\) with the sampled answer, replay prefill and latent reasoning under the same noise, and backpropagate through it to WV. The current, old, and reference policies all share that noise:

\[\rho_{j,\tau} = \frac{\pi_\theta\big(o_{j,\tau} \mid x,\, \varepsilon^{(j)},\, o_{j,<\tau}\big)} {\pi_{\theta_{\mathrm{old}}}\big(o_{j,\tau} \mid x,\, \varepsilon^{(j)},\, o_{j,<\tau}\big)}\]

Released checkpoint GRPO control (ours, matched recipe) SVP-V-GRPO

Accuracy of released GPT-2-based latent reasoning models and SVP-V-GRPO; pick a benchmark above. The ablation button adds the three GRPO controls (striped) that we trained from the same COCONUT checkpoint under one matched recipe, differing only in the exploration mechanism.

Full table (all benchmarks)
ModelGSM8KGSM-HardMultiArithSVAMPASDiv-AGSM-PlusMean
Released checkpoints
COCONUT (baseline checkpoint)34.17.780.935.660.217.439.3
SLPO34.97.682.834.358.718.239.4
SIM-CoT44.79.390.540.667.221.545.6
CoDi42.59.391.940.065.423.145.4
GRPO from the same COCONUT checkpoint, matched recipe
Temp-GRPO38.48.785.337.161.519.841.8
Gaussian-V-GRPO40.69.088.639.162.721.943.7
Dropout-GRPO45.29.390.944.671.124.847.7
SVP-V-GRPO (Ours)50.311.393.443.671.227.649.6

Why it works: SVP-V is good exploration

The RL gain rests on one claim: SVP-V makes latent trajectories differ in ways that matter. Two pieces of evidence, both measured at test time without any training.

Evidence 1Test-time solution coverage

If the exploration is useful, sampling with it should uncover more distinct correct solutions. It does: an SVP-based configuration has the best pass@16 in all 18 model-benchmark settings, matching or beating answer-token sampling and unstructured Gaussian noise on activations or weights everywhere.

MethodGSM8KGSM-HardMultiArithSVAMPASDiv-AGSM-Plus
Deterministic34.127.6680.8635.6060.1817.38
Top-p53.76 ± 0.2412.44 ± 0.0888.53 ± 0.4349.97 ± 0.3372.58 ± 0.3738.95 ± 0.34
Gaussian × Activation54.25 ± 0.1612.69 ± 0.1393.41 ± 0.1250.45 ± 0.2872.57 ± 0.2836.43 ± 0.21
SVP × Activation54.90 ± 0.1813.10 ± 0.1393.34 ± 0.3052.86 ± 0.4073.81 ± 0.1437.56 ± 0.16
Gaussian × WV55.98 ± 0.2513.59 ± 0.2893.46 ± 0.2951.68 ± 0.4174.13 ± 0.1839.16 ± 0.30
SVP × WV (SVP-V)57.22 ± 0.4813.90 ± 0.1293.60 ± 0.0753.45 ± 0.3874.87 ± 0.3040.05 ± 0.34

Unbiased pass@16 (%), five-seed mean ± std, 64 samples per prompt. Bold = best per benchmark for the selected model. Hyperparameters were selected once on a 1,024-problem GSM8K training subset and then held fixed across all six benchmarks. Deterministic is a single greedy run and has no seed variance.

Evidence 2Semantic branching at the decision-critical step

Reading the latent states through the LM head shows where trajectories differ. SVP-V does not scatter them everywhere: they agree on the easy steps and branch at the one step the clean model gets wrong. There, the correct intermediate value becomes reachable, and only SVP-V trajectories go on to the correct answer.

Nick, Richard, Jason and DJ each have paintball guns. DJ has 8 guns, Nick has 10 guns, RJ has 1 gun and Richard has 5 guns. If they were to share their guns equally, how many guns would each of them have?
8 + 10 + 1 + 5 = 24  ·  24 ÷ 4 = 6

value on the correct solution path darker route = contains a correct trajectory line width = number of trajectories

BibTeX

@article{shin2026svp,
  title         = {Singular Value Perturbation: Unlocking {RL} Performance via Diverse Latent Reasoning},
  author        = {Shin, Jihwan and Daliri, Majid and Mirrokni, Vahab and Zandieh, Amir and Han, Insu},
  journal       = {arXiv preprint arXiv:XXXX.XXXXX},
  year          = {2026},
  eprint        = {XXXX.XXXXX},
  archivePrefix = {arXiv},
  primaryClass  = {cs.LG},
  url           = {https://arxiv.org/abs/XXXX.XXXXX}
}