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
- Eigenvalue dan Eigenvector · Cara matriks mengubah ruang: eigenvector, eigenvalue, dan dekomposisi
- Aljabar Linear · Vector, matriks, dan bahasa data
- Dimensionality Reduction · PCA dan t-SNE untuk melihat data berdimensi tinggi
- LoRA dan Parameter-Efficient Fine-Tuning · Mengadaptasi model besar dengan melatih matriks low-rank kecil, bukan semua weight
- Norm dan Metrik Jarak · L1, L2, cosine similarity: cara mengukur kedekatan di ruang vector
- Kalkulus Matriks dan Jacobian · Turunan parsial, gradient, dan Jacobian: kalkulus untuk vector
Referensi
- Eckart & Young (1936), "The approximation of one matrix by another of lower rank", Psychometrika
- Halko, Martinsson & Tropp (2011), "Finding Structure with Randomness: Probabilistic Algorithms for Constructing Approximate Matrix Decompositions"
- Miyato et al. (2018), "Spectral Normalization for Generative Adversarial Networks"
- Hu et al. (2021), "LoRA: Low-Rank Adaptation of Large Language Models"
Terakhir diperbarui