Hoppa till innehållet
AI-grafen
E· Universitetmatematik· ca 60 min· grundläggande — ändras sällan· verifierad 2026-09-20

Matrisfaktorisering och lågrangsapproximation

Kunna förklara rang, SVD och varför en stor matris ofta kan approximeras som produkten av två små.

Förkunskaper

Intuition

Rang = antalet oberoende riktningar en matris «egentligen» innehåller. En 1000 × 1000-matris med rang 5 är bara fem mönster i olika blandningar — den kan skrivas som produkten av en 1000 × 5 och en 5 × 1000-matris: 10 000 tal i stället för en miljon.

SVD (singulärvärdesuppdelning) hittar de mönstren, sorterade efter betydelse: A=UΣV⊤A = U\Sigma V^\top. Behåll de k största singulärvärdena → bästa rang-k-approximationen (Eckart–Young).

Varför bry sig? Betygsmatriser (användare × filmer), ordsamförekomster och viktuppdateringar vid finjustering är ofta nästan lågrangiga. LoRA utnyttjar exakt det: ΔW ≈ BA med litet k.

Kod

import numpy as np
rng = np.random.default_rng(0)

# en «hemligt» lågrangig matris + brus
B, A = rng.normal(size=(200, 4)), rng.normal(size=(4, 300))
M = B @ A + rng.normal(0, 0.5, (200, 300))

U, s, Vt = np.linalg.svd(M, full_matrices=False)
print(np.round(s[:8], 1))     # fyra stora, sedan små: [.. .. .. ..  ~10 ~10 ...]

def approx(k):
    return (U[:, :k] * s[:k]) @ Vt[:k]

for k in (1, 2, 4, 8, 50):
    fel = np.linalg.norm(M - approx(k)) / np.linalg.norm(M)
    print(k, round(fel, 3))    # faller brant till k=4, sedan bara brus kvar

print(200 * 300, 200 * 4 + 4 * 300)   # 60000 vs 2000 tal

Formellt

För A∈Rm×nA\in\mathbb R^{m\times n}: A=UΣV⊤A = U\Sigma V^\top med ortogonala U,VU, V och Σ=diag(σ1≥σ2≥⋯≥0)\Sigma = \text{diag}(\sigma_1\ge\sigma_2\ge\dots\ge 0). Rang = antal σi>0\sigma_i > 0. Eckart–Young–Mirsky: Ak=∑i≤kσiuivi⊤A_k = \sum_{i\le k}\sigma_i u_i v_i^\top minimerar ∥A−X∥F\|A - X\|_F över alla XX med rang ≤k\le k, med fel ∑i>kσi2\sqrt{\sum_{i>k}\sigma_i^2}. Parametrar: k(m+n)k(m+n) mot mnmn. Andelen «energi» ∑i≤kσi2/∑iσi2\sum_{i\le k}\sigma_i^2/\sum_i\sigma_i^2 ger ett val av kk. Randomiserad SVD ger AkA_k i O(mnk)O(mnk).

Behärskning innebär

  • Förklarar rang och SVD
  • Approximerar en matris med låg rang och mäter felet
  • Kopplar lågrang till LoRA och rekommendationssystem

Logga in för att göra övningarna och bygga upp din behärskning.

Källor

Alla källor och licenser