Muonic: Input Conditioning Muon with Improved Diagonal Approximations
Pranavchandra Vivekananda
Sumukh Bettadapura, Ajan Subramanian
Optimizers
We have been working with a new kind of training objective over the past few weeks: epiplexity [1] and Zhang's closed form approximation of it. [2] It borrows from the idea of maximising learnable novelty from data. Instead of using loss for a wrong guess (as in cross-entropy) or trying to bring two probability distributions closer to each other (as in KL divergence), this training rewards for an objective that extracts structure from the samples it sees through a spectral readout.
Along the journey, we had a thought. What if we could use this idea in an optimiser? We started running toy experiments with spectral filters, changing how strongly different singular directions contributed to the update. Our first filter suppressed large singular values; a gentler version smoothly capped them. We naively realized that we were practically rederiving Muon. It takes a momentum matrix and approximately orthogonalises it, bringing its singular values towards a common scale. Different rules, but the broader idea of reshaping the update through its spectrum already had a very capable optimiser attached to it. [3]
Now, the spectrum only describes the loss locally to first order. It cannot tell us how quickly a promising direction becomes too steep as we move (basically, what a Hessian would provide). For a linear layer, that curvature depends partly on the inputs, because a weight change affects the output through those inputs.
The simplest way to do this is to take an optimiser and give it information on how input layer's features behave and use that information to bend the momentum to your will.
But doing these calculations could potentially add more computation per step, which is where we had to use some smart linear algebra.
With the help of GPT, we came up with two ways do this and tested them on a toy transformer (4.84M-parameter Tiny Shakespeare transformer) over 5 seeds where it ended up beating vanilla Muon.
Methodology
1. What “input-aware” means
Consider one linear layer:
Here, is the activation entering this particular layer. Each weight matrix gets statistics from its own inputs. Collect input vectors into , with one input per row. Define
is the uncentered second moment. Its diagonal contains feature energies, and its off-diagonal entries describe how features occur together:
Now why should you even care, just for an update?
Changing the weights by changes the layer output by , so
We find that size doesn't matter when it comes to weight changes as they can have very different effects on the layer’s outputs, depending on the inputs. An input-aware optimizer uses , or an approximation to it, to account for this difference.
2. The weight update
The shared momentum calculation is
where .
Ordinary Muon transforms . Our variants first compute
and then we apply Muon’s spectral transformation to construct the update direction. [4] The final weight update rule becomes
where is the scheduled weight shrink and denotes that approximate polar transformation.
For each layer, we construct an input geometry matrix from the activations entering that layer. Let
where is the input dimension. We approximate the normalized second moment , then add damping:
Normalization removes the overall input-energy scale, while damping ensures that the inverse remains a good little boy and behaves. We explore two constructions.
Why should an update care about the inputs?
A tiny layer with two input features and one output. Follow a dot to see how changing the weights changes that sample’s output.
Each dot is one input to the layer.
Horizontal position is feature 1; vertical position is feature 2. This batch spreads much farther horizontally. The layer sees more variation in feature 1.
Horizontal position is feature 1; vertical position is feature 2. This batch spreads much farther horizontally. The layer sees more variation in feature 1.
The equation behind this step
3. Input conditioning method A: Mean + diagonal
Mean + diagonal uses feature variances and the mean activation vector. The exact second moment decomposes as
We retain the diagonal of the centered covariance and the mean outer product. Writing ,
The diagonal term captures each feature’s variability. The rank-one term captures the shared structure implied by nonzero feature means. This approximation preserves individual feature second moments but omits centered cross-feature correlations.
Find what the mean misses.
Move the centre of this cloud. Then change its tilt without moving the centre. Which change can Mean + diagonal see?
Mean + diagonal retains each feature’s variance and the shared mean. Changing the centred correlation tilts the samples, but leaves this approximation unchanged.
Drag the mean marker, or focus it and use the arrow keys.
Connect this to the equation
Mean + diagonal
By training steps
By training time
4. Input conditioning method B: Nyström + diagonal
Nyström + diagonal captures a richer set of relationships between features. We choose a fixed random orthonormal matrix , with , and measure the normalized second moment along those directions:
The matrix is a sketch: a compact collection of measurements. The standard Nyström reconstruction [5] is
where is the pseudoinverse. The sketch can be computed directly from batch activations without constructing the full matrix .
Our implementation removes an estimated isotropic background from the retained spectrum, producing a corrected low-rank factor . We then restore the diagonal energy that this factor has not represented:
The result is
Measure a little.
Reconstruct the rest.
Each tile describes a relationship between two input features. Measure one column, and Nyström uses it to estimate the entries you haven’t measured. Add another column to see what changes.
A sampled column gives the relationship of one feature to every other feature. Nyström combines these measurements to reconstruct the full second-moment matrix. More independent measurements can recover more of its structure.
01 You measure
Blank tiles haven’t been measured.
02 Nyström reconstructs
Select any tile to see how close it is.
Explore the correction used in Muonic
The raw reconstruction is only the starting point. Follow the correction, then watch the diagonal tiles regain their original values.
Connect this to the equation
Nyström + diagonal
By training steps
By training time
Results
We tested a 4.84M-parameter transformer on Tiny Shakespeare for 1,200 steps, using five fresh paired seeds per study.
| Method | Muon validation CE ↓ | Candidate CE ↓ | Loss reduction | Additional training time |
|---|---|---|---|---|
| Nyström + diagonal | 1.48923 | 1.46495 | 1.63% | 12.0% |
| Mean + diagonal | 1.48889 | 1.47410 | 0.99% | 5.4% |
Both methods achieved lower final loss than Muon on all five paired seeds. Nyström also retained its advantage within Muon’s recorded compute budget.
These results show that our input-aware preconditioning can improve validation quality in this setting. We acknowledge that we build on the shoulders of giants and we're just excited to post about some empirical work that we did in an engaging way. While the results are modest, it's genuinely interesting to see how this pans out at scale and what more we can do in this direction.
References
[1] Marc Finzi et al. (2026). From Entropy to Epiplexity: Rethinking Information for Computationally Bounded Intelligence ↗. The epiplexity framework.
[2] Yanbo Zhang and Michael Levin (2026). Intelligence from Learnable Novelty ↗. A closed-form estimator of learnable novelty.
[3] Keller Jordan (2024). Muon: An optimizer for hidden layers in neural networks ↗. Muon and its five-step Newton–Schulz transformation.
[4] Zhehang Du and Weijie Su (2026). The Newton-Muon Optimizer ↗. Prior work on input-second-moment preconditioning before the matrix-sign update.
[5] Zachary Frangella, Joel A. Tropp and Madeleine Udell (2021). Randomized Nyström Preconditioning ↗. Background on randomized low-rank approximation and preconditioned linear solvers.