# Singular-Value-Robust Projector-Splitting LoRA

- ID: 2438
- Canonical URL: https://synthcore.org/idea/2438/singular-value-robust-projector-splitting-lora
- API JSON: https://synthcore.org/api/idea/2438.json
- API Markdown: https://synthcore.org/api/idea/2438.md
- Verification status: mech_ok_no_baseline
- Source: [arXiv:2608.17157](https://arxiv.org/abs/2608.17157)
- Category: optimization
- Solves: stability, accuracy, memory
- ML areas: optimizer, attention, mlp, fine-tuning
- Math tags: dynamical-systems, linear-algebra, numerical-analysis, optimization
- Ratings: usefulness 7/10; difficulty 5/10; novelty 6/10

## Idea description

Train a fixed-rank neural weight update Y=USV^T with a projector-splitting Runge–Kutta step instead of independently applying Adam or gradient descent to U, S, and V. The update evolves the full low-rank matrix using the neural gradient but performs QR-based factor updates, avoiding S^{-1} and remaining stable when adapter singular values collapse or cross zero. Use a common-base midpoint construction so every internal stage starts from the same U,V basis and remains rank r.

## Mathematical statement

The paper represents a rank-r matrix as Y=USV^T, where U in R^{m x r} and V in R^{n x r} have orthonormal columns and S in R^{r x r} is the small core. The constrained dynamics are dY/dt=P_r(Y)F(t,Y), where F is the unconstrained matrix vector field, typically F=-gradient_Y L, and P_r(Y) is the tangent-space projector. For orthonormal U,V, use P_r(Y)[Z]=UU^T Z+ZVV^T-UU^T ZVV^T. Standard factor ODEs contain S^{-1} in the U and V equations, which is unstable for small singular values; projector splitting replaces these inverse operations with sequential QR factorizations. A practical splitting retraction PS(U,S,V,h,Z) is defined by K=US+hZV, QR-factor K=U_+R; update the core R_-=R-hU_+^T ZV; form L=VR_-^T+hZ^T U_+, QR-factor L=V_+S_+^T; and return U_+S_+V_+^T. Here h is the step size, Z is a stage vector field, and QR is a thin QR factorization. The midpoint method uses a common-base stage and endpoint, Y_{1/2}=PS(U,S,V,h/2,F(Y_0)) and Y_1=PS(U,S,V,h,F(Y_{1/2})). Under bounded and Lipschitz vector fields, with normal-component error epsilon_r=sup_t||(I-P_r(Y(t)))F(t,Y(t))||_F and initial error delta, its global error is O(delta+epsilon_r+h^2), with constants independent of the smallest singular value of S.

## Key formulas

- $$Y=USV^{\top},\qquad U^{\top}U=I_r,\quad V^{\top}V=I_r,$$
- $$\dot{Y}(t)=P_r(Y(t))F(t,Y(t)),\qquad P_r(Y)[Z]=UU^{\top}Z+ZVV^{\top}-UU^{\top}ZVV^{\top},$$
- $$K=US+hZV=U_+R,\qquad R_-=R-hU_+^{\top}ZV,$$
- $$L=VR_-^{\top}+hZ^{\top}U_+=V_+S_+^{\top},\qquad \operatorname{PS}(U,S,V;h,Z)=U_+S_+V_+^{\top}.$$

## Implementation notes

(1) Integration point: replace the optimizer update for a frozen-rank adapter or low-rank neural weight Y in one linear layer. For a base weight W0, use W=W0+Y with Y=USV^T; compute the ordinary backpropagation gradient G=gradient_Y L, and define F(Y)=-G or a preconditioned version of -G. Do not optimize U,S,V with separate Adam parameter tensors. Store U,V in FP16 or BF16 if desired, but perform QR and r-by-r core operations in FP32.

(2) Pseudocode:
```text
Y0 = U @ S @ V.T
G0 = grad(loss(W0 + Y0), Y0)
Z0 = -G0
Ymid, Umid, Smid, Vmid = PS(U,S,V,h/2,Z0)
Gmid = grad(loss(W0 + Ymid), Ymid)
Zmid = -Gmid
Y1, U1, S1, V1 = PS(U,S,V,h,Zmid)
commit U,S,V = U1,S1,V1
```
Inside PS, compute K=U@S+h*Z@V and thin-QR it as Unew,R; compute Rminus=R-h*Unew.T@Z@V; compute L=V@Rminus.T+h*Z.T@Unew and thin-QR it as Vnew,Q; set Snew=Q.T and return Unew@Snew@Vnew.T. Re-orthogonalize U and V if QR drift is detected. The same base U,S,V must be used for both midpoint and endpoint calls; only the endpoint is committed.

(3) Computed from the mathematics: rank preservation, tangent-space splitting, and inverse-free QR factor updates. Estimated empirically: the normal component epsilon_r can be approximated by ||G-P_r(Y)[G]||_F/max(||G||_F,1), and the smallest singular value of S is monitored only for diagnostics, not for the update. Tune h with gradient clipping or a backtracking test if the loss increases.

(4) First cheap experiment: train a 2-layer MLP or a single attention projection on CIFAR-10 or a small language-model batch using rank r=8 or 16 LoRA. Compare ordinary Adam on U,S,V, direct projected gradient descent on Y followed by truncated SVD, and the projector-splitting midpoint method at matched trainable parameters and FLOPs. Initialize S with logarithmically spaced singular values from 1 to 10^{-6}. Success means no NaNs or exploding factor norms, lower validation loss at equal optimizer steps, and stable performance as the minimum singular value approaches zero. Also report QR overhead and whether the method reaches a target loss with fewer steps or permits a larger stable learning rate.

## Verification

- Status: mech_ok_no_baseline
- Mechanism evidence: yes
- Mechanism confirmed: yes
- Practical verdict: harms
- Verdict: Built a readable projector-splitting MVP with exact three-substep QR updates and a common-base explicit midpoint integrator. The mechanism manifested: observed convergence order was 1.99897 across sigma-min values 1e-2, 1e-6, and 1e-10, while final-step errors differed by only about 0.005%; orthogonality errors stayed near machine precision. The toy fitting comparison favored projector splitting (0.1062 vs 0.2267 loss after 120 steps), but it was slower and used a plain factor-gradient baseline rather than production Adam, so this is evidence for robustness rather than a general LoRA training win.

### Mechanism check

- Verdict: Built a readable projector-splitting MVP with exact three-substep QR updates and a common-base explicit midpoint integrator. The mechanism manifested: observed convergence order was 1.99897 across sigma-min values 1e-2, 1e-6, and 1e-10, while final-step errors differed by only about 0.005%; orthogonality errors stayed near machine precision. The toy fitting comparison favored projector splitting (0.1062 vs 0.2267 loss after 120 steps), but it was slower and used a plain factor-gradient baseline rather than production Adam, so this is evidence for robustness rather than a general LoRA training win.
- Confidence: 8/10
- Limitations: Only a tiny NumPy matrix-fitting task was tested; no real MLP, LoRA layer, CIFAR/language dataset, CUDA implementation, production Adam comparison, FLOP-matched benchmark, adaptive step sizing, or rank-admissibility failure analysis was performed. The baseline was plain factor gradient descent rather than Adam.

### Practical benchmark

- Paired seeds: 8
- Baseline mean: 0
- Idea mean: 0
- p-value: 0.0081
- Paired wins: 0/8
- Benchmark verdict: idea worse (significant)

## Artifacts

- [REPORT.md](https://synthcore.org/code/945/REPORT.md)
- [bench_report.json](https://synthcore.org/code/945/bench_report.json)
- [projector_splitting_mvp.py](https://synthcore.org/code/945/projector_splitting_mvp.py)
- [report.md](https://synthcore.org/code/945/report.md)
- [report_bench_2026-09-01T162630.md](https://synthcore.org/code/945/report_bench_2026-09-01T162630.md)
- [results.json](https://synthcore.org/code/945/results.json)
- [stage2_bench.py](https://synthcore.org/code/945/stage2_bench.py)
- [Download all files as ZIP](https://synthcore.org/download/945)

## Disclaimer

AI-generated research hypothesis, automatically tested. Not peer-reviewed.
