Алгебра
SVD и приложения
Netflix Prize 2009: матрица 480 тысяч пользователей x 17 тысяч фильмов сжата до 50 сингулярных векторов. PCA в биоинформатике раскрывает популяционные структуры в геномных данных. LoRA fine-tunит GPT с 128K параметров вместо 16M. Всё это SVD.
- LoRA/QLoRA: все современные fine-tuning пайплайны LLM используют low-rank приближение через SVD
- PCA: стандартный инструмент предобработки в sklearn, уменьшение размерности перед любым ML
- LSA/TruncatedSVD: семантический поиск через SVD term-document матрицы
Предварительные знания
SVD: три матрицы, одно разложение
Netflix Prize 2009: матрица 480189 пользователей x 17770 фильмов - почти 8.5 миллиарда ячеек. Победивший алгоритм сжал её до 50 сингулярных векторов и угадал рейтинги с точностью 10.06%. Инструмент - SVD.
Для любой матрицы A ∈ ℝ^{m x n} существует разложение A = UΣVᵀ: U ∈ ℝ^{m x m} ортогональная (повороты выходного пространства), Σ ∈ ℝ^{m x n} диагональная с σ₁ >= σ₂ >= ... >= 0 (масштабирование), Vᵀ ∈ ℝ^{n x n} ортогональная (повороты входного пространства).
Геометрически: каждое линейное отображение A: ℝⁿ -> ℝᵐ можно представить как: 1) поворот/отражение в ℝⁿ (V^T), 2) растяжение вдоль осей (Sigma), 3) поворот/отражение в ℝᵐ (U). SVD - это «полярная декомпозиция» в общем виде.
Для матрицы A ∈ ℝ^{5x3} (thin SVD): какие размеры U, s, Vt?
Теорема Эккарта-Янга: лучшее низкоранговое приближение
Разложение A = Σᵢ σᵢ uᵢ vᵢᵀ - сумма матриц ранга 1. Усечённое SVD A_k = Σᵢ₌₁ᵏ σᵢ uᵢ vᵢᵀ - **оптимальная** аппроксимация ранга k.
Ошибка аппроксимации: ||A - A_k||_F² = σ_{k+1}² + ... + σ_r². Если сингулярные числа быстро убывают - матрица хорошо аппроксимируется низкоранговой. Именно это происходит в данных реального мира.
На реальных изображениях (не случайных) k=50 из 1000 сингулярных чисел даёт >99% объяснённой дисперсии при сжатии в 10x. Это потому что пиксели соседних пикселей коррелированы - матрица имеет эффективно низкий ранг.
Ошибка ||A - A_k||_F² (теорема Эккарта-Янга) равна:
PCA, LoRA и языковые модели
**PCA (Principal Component Analysis)** - SVD центрированной матрицы данных. Первый сингулярный вектор v₁ - направление максимальной дисперсии. Проекция X v₁ = первая главная компонента.
**LoRA (Low-Rank Adaptation)** использует идею теоремы Эккарта-Янга напрямую: изменение весов при fine-tuning имеет низкий ранг. Вместо полного W (миллиарды параметров) обучаются B @ A - матрица ранга r.
LSA (Latent Semantic Analysis) в NLP: term-document матрица разлагается через SVD, топ-k компонент - семантические оси. BERT и GPT используют attention-матрицы, low-rank структура которых объясняет, почему LoRA работает: обновления весов при fine-tuning имеют эффективно низкий ранг.
В PCA первая главная компонента - это:
Ключевые идеи
- A = U Sigma V^T: поворот -> масштаб -> поворот; существует для любой матрицы
- sigma_i = sqrt(lambda_i(A^T A)); ранг(A) = число ненулевых sigma_i
- Эккарт-Янг: A_k = sum_{i<=k} sigma_i u_i v_i^T - оптимальное приближение ранга k
- Ошибка ||A - A_k||_F^2 = sum_{i>k} sigma_i^2 - то, что выброшено
- PCA = SVD центрированных данных; PC_i = v_i - направление максимальной дисперсии
- LoRA: delta_W = B @ A с rank r - fine-tuning в r*(d_in + d_out) параметрах вместо d_in*d_out
Связанные темы
SVD - мост между линейной алгеброй и ML:
- Квадратичные формы — sigma_i^2 = lambda_i(A^T A); SVD диагонализирует билинейную форму x^T A^T A x
- Линейная алгебра в ML — Transformer attention, backprop, matrix factorization - всё использует SVD-идеи