Lensa ML

Singular Value Decomposition

Langkah 1 dari 6: Apa yang Dilakukan SVD

Matriks apa pun = rotasi, skala, rotasi, yang diuraikan menjadi UΣVᵀ

Elemen matriks A[1,2]1.00
v₁v₂A = UΣVᵀ
σ₁
2.558
σ₂
0.977
σ₁/σ₂
2.62

Lingkaran satuan (putus-putus) menjadi elips. Panah merah muda dan ungu menandai sumbu utamanya.

Geser elemen matriks dan lihat lingkaran satuan menjadi elips. Kedua semi-sumbu elips itu panjangnya σ₁ dan σ₂, dan arahnya adalah kolom-kolom U. Gambaran ini berlaku untuk setiap matriks, dan itulah yang membuat SVD lebih umum daripada eigendecomposition: matriks yang tidak simetris bisa punya eigenvector kompleks atau jumlahnya kurang, tetapi singular vector-nya selalu ada dan selalu saling tegak lurus. Di tiga dimensi, lingkaran menjadi bola dan elips menjadi elipsoid, dengan satu sumbu per singular value.

Langkah 2 dari 6: U, Σ, dan V Secara Terpisah

Lihat peran tiap komponen: Vᵀ memutar, Σ mengubah skala, U memutar

Fase dekomposisi0.00
A = U · Σ · VᵀVᵀ (Rotasi)
Fase
Vᵀ (Rotasi)
σ₁
2.558
σ₂
0.977

Fase 1: Vᵀ memutar input ke "basis alami" matriks.

Geser slider fase perlahan dari awal sampai akhir. Fase pertama dan terakhir hanya mengubah orientasi lingkaran, tidak pernah bentuknya, karena U dan V ortogonal: keduanya mempertahankan panjang dan sudut. Semua perentangan terjadi di Σ. Pemisahan ini memudahkan inversi. Batalkan tiap bagian dengan urutan terbalik (putar balik dengan U, bagi dengan tiap σ yang bukan nol, putar balik dengan V), dan kamu mendapat pseudoinverse, yang dipakai solver least squares ketika matriks tidak persegi atau tidak bisa diinversi.

Langkah 3 dari 6: Singular Value

σ₁ dan σ₂ mengatur seberapa jauh matriks merentangkan tiap sumbu

Rasio σ₁/σ₂3.00
σ₁=2.0σ₂=0.67
σ₁
2.00
σ₂
0.67
Rasio σ₁/σ₂
3.0
Rasio luas
1.33

σ₁ 3,0× lebih besar daripada σ₂. Matriks memperkuat satu arah jauh lebih banyak daripada arah lainnya.

Naikkan rasio σ₁/σ₂ dan perhatikan rasio luasnya. Untuk matriks 2×2, luas berubah sebesar σ₁·σ₂, yang sama dengan nilai mutlak determinan. Rasio σ₁/σ₂ adalah condition number: kalau nilainya besar, error kecil di input bisa menjadi error besar di output, jadi menyelesaikan persamaan dengan matriks itu rapuh secara numerik. Di deep learning, σ₁ dari matriks weight membatasi seberapa jauh sebuah layer bisa merentangkan input-nya, dan spectral normalization membagi tiap matriks weight dengan nilai itu agar training GAN tetap stabil.

Langkah 4 dari 6: Low-Rank Approximation

Simpan k singular value teratas, buang sisanya

Rank k (dari 8)5
8.0σ14.0σ22.7σ32.0σ41.6σ51.3σ61.1σ71.0σ8Simpan 5 singular value teratas95.8% energi tersimpan
Rank k
5
Energi %
95.8%
Parameter (penuh)
64
Parameter (k)
80

Rank 5 menangkap 95,8% energi matriks hanya dengan 80 parameter (vs 64 penuh). Singular value yang dibuang kecil, jadi hanya sedikit yang hilang.

Turunkan rank k dan lihat jumlah parameternya berkurang. Teorema Eckart–Young menyatakan bahwa menyimpan k singular value teratas memberi aproksimasi rank-k terbaik: tidak ada matriks rank-k lain yang lebih dekat dengan matriks aslinya. Angka energi menunjukkan porsi jumlah kuadrat singular value yang disimpan. Matriks m×n yang disimpan pada rank k butuh k(m + n + 1) angka, bukan mn, dan penghematannya besar ketika k kecil.

Langkah 5 dari 6: SVD dan PCA

SVD dari data yang di-center langsung memberi principal component

Jumlah komponen2
PC1PC2SVD dari data yang di-center = PCA
Komponen
2
Terjelaskan
100.0%
σ₁²
1.16
σ₂²
0.09

Dengan kedua komponen, rekonstruksinya sempurna: dua komponen merentang seluruh bidang 2D.

Ganti antara satu dan dua komponen. Jika matriks data X di-center, sehingga mean setiap kolom nol, right singular vector-nya adalah arah utama, dan σᵢ²/(n − 1) adalah variance di sepanjang tiap arah. Library seperti scikit-learn menghitung PCA dengan cara ini, bukan dengan membentuk matriks covariance XᵀX, karena membentuk XᵀX mengkuadratkan condition number dan mengurangi presisi.

Langkah 6 dari 6: SVD di ML

LoRA, kompresi, dan sistem rekomendasi mengandalkan struktur low-rank

Rasio kompresi (d/r)4
W (64×64)4096 parameter≈B (64×16)·A (16×64)2048 parameter (hemat 50%)
Parameter penuh
4096
Parameter LoRA
2048
Rank r
16
Hemat
50%

Kompresi 4×: rank 16 hanya memakai 2048 parameter vs 4096 penuh, dan rank ini cukup untuk banyak perubahan khusus tugas.

Ubah rank r dan bandingkan jumlah parameter penuh dengan LoRA. LoRA tidak menjalankan SVD. Ia melatih dua matriks kecil yang hasil kalinya menjadi weight update, dan SVD menjelaskan kenapa cara itu bisa berhasil: kalau sebagian besar energi update itu berada di beberapa arah singular, hasil kali rank-r bisa menangkapnya. Sistem rekomendasi memakai ide yang sama dengan menguraikan matriks rating pengguna-item menjadi vector pengguna dan vector item, dan latent semantic analysis menguraikan matriks istilah-dokumen untuk menemukan topik.

Apa itu singular value decomposition (SVD)?

Singular value decomposition menguraikan matriks real apa pun, A, menjadi tiga bagian: A = UΣVᵀ. U dan V adalah matriks ortogonal yang hanya memutar atau mencerminkan, sedangkan Σ adalah matriks diagonal berisi singular value tidak negatif yang diurutkan dari terbesar ke terkecil. Setiap matriks punya SVD, termasuk matriks persegi panjang. Hal ini tidak berlaku untuk eigendecomposition.

Di machine learning, SVD menjadi dasar principal component analysis (PCA), kompresi low-rank, sistem rekomendasi, latent semantic analysis, dan alasan di balik fine-tuning LoRA. Singular value juga menunjukkan rank sebuah matriks dan seberapa stabil matriks itu secara numerik.

Ide utama

  • Setiap matriks bisa diuraikan menjadi A = UΣVᵀ: rotasi, skala di sepanjang sumbu, rotasi.
  • Singular value tidak negatif, terurut, dan unik untuk matriks tertentu.
  • Jumlah singular value yang bukan nol adalah rank.
  • Menyimpan k singular value teratas memberi aproksimasi rank-k terbaik.
  • PCA pada data yang di-center adalah SVD dari matriks data.
  • Struktur low-rank membuat kompresi, sistem rekomendasi, dan LoRA bisa bekerja.

Pertanyaan umum

Apakah singular value sama dengan eigenvalue?

Umumnya tidak. Singular value dari A adalah akar kuadrat eigenvalue dari AᵀA. Keduanya hanya sama untuk matriks simetris dengan eigenvalue tidak negatif. Eigenvalue bisa negatif atau kompleks, sedangkan singular value selalu real dan tidak negatif.

Apa arti singular value yang bernilai nol?

Matriks itu meratakan setidaknya satu arah sepenuhnya, jadi tidak full rank dan tidak bisa diinversi. Right singular vector yang berpasangan dengan singular value nol merentang null space, yaitu kumpulan input yang dikirim matriks ke nol.

Apakah SVD unik?

Singular value unik. Singular vector unik sampai pembalikan tanda ketika semua singular value berbeda. Kalau ada dua singular value yang sama, rotasi apa pun dari vector-nya di bidang itu juga menghasilkan SVD yang valid.

Bagaimana SVD dihitung dalam praktik?

Library seperti NumPy dan PyTorch memanggil rutin LAPACK, yang menyederhanakan bentuk matriks lalu beriterasi. Untuk matriks m×n dengan m ≥ n, biayanya O(mn²). Untuk matriks yang sangat besar dan hanya butuh k nilai teratas, randomized SVD menghitungnya jauh lebih cepat.

Penjelasan terkait

Referensi

  1. Eckart & Young (1936), "The approximation of one matrix by another of lower rank", Psychometrika
  2. Halko, Martinsson & Tropp (2011), "Finding Structure with Randomness: Probabilistic Algorithms for Constructing Approximate Matrix Decompositions"
  3. Miyato et al. (2018), "Spectral Normalization for Generative Adversarial Networks"
  4. Hu et al. (2021), "LoRA: Low-Rank Adaptation of Large Language Models"

Terakhir diperbarui