alterna ai
ALTERNA AI / ГЛАВА 02 · 05

02.5 Повернуть, растянуть, повернуть

На предыдущей странице: направление, которое не поворачивается.

Сложное линейное преобразование можно разобрать на два выбора взаимно перпендикулярных направлений и растяжение между ними. Это сингулярное разложение — SVD.

Простая таблица: горизонталь ×3, вертикаль ×1.

Два пространства требуют двух наборов направлений

Eigendecomposition сравнивает входное направление с его образом в том же пространстве и не существует в удобной вещественной форме для любой матрицы. Singular value decomposition существует и для прямоугольной вещественной матрицы:

A=UΣVT,A=U\Sigma V^T,

где для полной формы

A∈Rm×n,U∈Rm×m,Σ∈Rm×n,V∈Rn×n.A\in\mathbb R^{m\times n}, \quad U\in\mathbb R^{m\times m}, \quad \Sigma\in\mathbb R^{m\times n}, \quad V\in\mathbb R^{n\times n}.

Столбцы VV задают ортонормированные входные направления, столбцы UU — ортонормированные выходные направления, а σi≥0\sigma_i\ge0 на диагонали Σ\Sigma являются масштабами.

Правые singular vectors удовлетворяют

ATAvi=σi2vi.A^TAv_i=\sigma_i^2v_i.

Если σi>0\sigma_i>0, то

ui=Aviσi.u_i=\frac{Av_i}{\sigma_i}.

Число положительных singular values равно точному rank.

Последовательность трёх действий

Для входа xx

Ax=U(Σ(VTx)).Ax=U\bigl(\Sigma(V^Tx)\bigr).

Сначала VTV^T выражает вход в правом ортонормированном базисе. Затем Σ\Sigma независимо масштабирует координаты. Наконец, UU собирает результат в выходном пространстве. Ортогональные матрицы могут включать отражение, поэтому каждую из них неточно называть только поворотом.

Возьмём

A=diag⁡(3,1),U=V=I,Σ=diag⁡(3,1).A=\operatorname{diag}(3,1), \qquad U=V=I, \qquad \Sigma=\operatorname{diag}(3,1).

Для x=[1,2]Tx=[1,2]^T trace равен

[1,2]T→VT[1,2]T→Σ[3,2]T→U[3,2]T.[1,2]^T\xrightarrow{V^T}[1,2]^T \xrightarrow{\Sigma}[3,2]^T \xrightarrow{U}[3,2]^T.

Усечение даёт оптимальный low-rank объект в выбранной норме

Если оставить только σ1=3\sigma_1=3, получим

A1=[3000].A_1=\begin{bmatrix}3&0\\0&0\end{bmatrix}.

Второе входное направление удаляется. Для матрицы ошибка Фробениуса равна отброшенному singular value:

∥A−A1∥F=1,∥A−A1∥F∥A∥F=110≈0.316228.\|A-A_1\|_F=1, \qquad \frac{\|A-A_1\|_F}{\|A\|_F}=\frac1{\sqrt{10}}\approx0.316228.

Для конкретного x=[1,2]Tx=[1,2]^T полный выход [3,2]T[3,2]^T, а rank-one выход [3,0]T[3,0]^T; ошибка этого вектора равна 2. Нельзя смешивать ошибку матрицы и ошибку одного output.

У поворота на 90 градусов оба singular values равны 1. Выбор одного rank-one направления тогда не уникален: нет единственной «самой большой» оси. Разные корректные SVD могут отличаться знаками пар ui,viu_i,v_i или базисом внутри равного singular-подпространства, сохраняя UΣVT=AU\Sigma V^T=A.

Браузерная лаборатория аналитически решает только 2×22\times2 случай через ATAA^TA. Промышленные библиотеки используют более устойчивые алгоритмы, поскольку явное построение ATAA^TA возводит condition number в квадрат. Проверяйте реконструкцию, ортогональность и ошибку, а не конкретный знак каждого singular vector.

При сжатии потерялась вертикальная составляющая. SVD описывает направления и масштабы; качество для конкретной задачи требует отдельной проверки.

Исправление через узкое промежуточное пространство. Как этот вопрос продолжает полученный результат?

Python-примеры главы 02 Академическая база →