Линейная алгебра

Сингулярное разложение

Любая матрица — это поворот, растяжение по осям и ещё один поворот

Шаг 19 из 117 · ~34 мин

Разложение, которое есть у всех

У диагонализации два ограничения: матрица должна быть квадратной, и даже тогда она может не диагонализоваться. SVD не имеет ни одного из них.

A=UΣVA = \htmlData{k=U}{U}\,\htmlData{k=S}{\Sigma}\,\htmlData{k=V}{V^\top}

Читается справа налево как последовательность из трёх действий: вход, по осям, результат. Любое линейное отображение — вообще любое, включая неквадратные и вырожденные — устроено так.

Сингулярные значения σ1σ20\sigma_1 \ge \sigma_2 \ge \cdots \ge 0 стоят на диагонали Σ\Sigma. Их число равно min(m,n)\min(m, n), а количество ненулевых — это ранг.

Включите переключатель сингулярных направлений. Пунктирные векторы — ортогональная пара на входе, сплошные — куда они попадают:

e₁e₂
определитель
1
ранг
2

Откуда берутся сингулярные значения

Рассмотрим AAA^\top A — она симметрична и неотрицательно определена при любой AA. Подставим разложение:

AA=VΣUUΣV=VΣ2VA^\top A = V\Sigma^\top U^\top U \Sigma V^\top = V\Sigma^2V^\top

потому что UU=IU^\top U = I. Справа стоит спектральное разложение AAA^\top A. Значит:

  • правые сингулярные векторы (столбцы VV) — собственные векторы AAA^\top A;
  • σi=λi(AA)\sigma_i = \sqrt{\lambda_i(A^\top A)};
  • левые сингулярные векторы получаются как ui=Avi/σi\mathbf{u}_i = A\mathbf{v}_i / \sigma_i.

Так SVD и считают вручную для маленьких матриц. Настоящие библиотеки этого не делают: возведение в AAA^\top A квадрирует число обусловленности и топит малые сингулярные значения в шуме округления. Знать связь полезно, вычислять через неё — нет.

Связь с собственным разложением

собственные значениясингулярные значения
существуютне всегда действительныевсегда, всегда неотрицательные
для каких матрицтолько квадратныедля любых
базисыодин, необязательно ортогональныйдва ортонормированных
у поворотакомплексныевсе равны 1

Совпадают они, когда AA симметрична и неотрицательно определена. Если AA симметрична, но имеет отрицательные собственные значения, то σi=λi\sigma_i = |\lambda_i| — знак уходит в поворот.

Операторная норма и обусловленность

Насколько сильно матрица может растянуть вектор? Ответ — первое сингулярное значение:

A2=maxx0Axx=σ1\|A\|_2 = \max_{\mathbf{x} \ne \mathbf{0}} \frac{\|A\mathbf{x}\|}{\|\mathbf{x}\|} = \sigma_1

Наименьшее растяжение — это σmin\sigma_{\min}. Их отношение называется числом обусловленности:

κ(A)=σ1σmin\kappa(A) = \frac{\sigma_1}{\sigma_{\min}}

Это одна из важнейших величин всего плана. Смысл: во сколько раз задача способна усилить относительную ошибку. Если κ=108\kappa = 10^{8}, то восемь значащих цифр из входных данных превращаются в ноль значащих цифр в ответе.

Для вырожденной матрицы σmin=0\sigma_{\min} = 0 и κ=\kappa = \infty. Плохая обусловленность — это «почти вырожденная»: формально решение есть, практически оно не заслуживает доверия.

Число обусловленности вернётся в блоке 5 как главная величина, определяющая скорость градиентного спуска, — там она будет посчитана для гессиана. Это тот же самый κ\kappa.

Зачем это в машинном обучении

  • низкоранговое приближение — следующий урок, и с ним сжатие и LoRA;
  • PCA — это SVD центрированной матрицы данных;
  • псевдообратная матрица и устойчивое решение задачи наименьших квадратов;
  • диагностика: спектр весов слоя показывает, сколько направлений реально используется;
  • инициализация и нормализация — попытки удержать сингулярные значения около единицы, чтобы сигнал не затухал и не взрывался.

Источники

Проверки

0 из 2
  1. Сингулярные против собственных

    Отметьте все верные утверждения.

  2. Сингулярные значения матрицы 2×2

    Реализуйте singular_values2(m) для матрицы 2×22 \times 2: верните список [σ1,σ2][\sigma_1, \sigma_2] по убыванию.

    Путь через AAA^\top A. Она симметрична, обозначим её [pqqr]\begin{bmatrix} p & q \\ q & r \end{bmatrix}. Собственные значения симметричной матрицы 2×22 \times 2 считаются в закрытой форме:

    λ1,2=p+r2±(pr2)2+q2\lambda_{1,2} = \frac{p + r}{2} \pm \sqrt{\left(\frac{p - r}{2}\right)^2 + q^2}

    Сингулярные значения — корни из них. Подкоренное выражение здесь неотрицательно всегда, но из-за округления может выйти чуть меньше нуля — обрежьте по нулю перед взятием корня.

    Полезная проверка: σ1σ2=detA\sigma_1\sigma_2 = |\det A|.

    функция singular_values2

    Загрузка редактора…

    Ctrl/⌘ + Enter