Алгебра

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-идеи

Связанные уроки

  • la-01-vectors-intro
SVD и приложения

0

1

Войти