Alterna · учебный материал
02.5 Повернуть, растянуть, повернуть
Сложное линейное преобразование можно разобрать на два выбора взаимно перпендикулярных направлений и растяжение между ними. Это сингулярное разложение — SVD.
Что в этом материале
- Два пространства требуют двух наборов направлений
- Последовательность трёх действий
- Усечение даёт оптимальный low-rank объект в выбранной норме
Содержание и основные понятия
На предыдущей странице: направление, которое не поворачивается.
Сложное линейное преобразование можно разобрать на два выбора взаимно перпендикулярных направлений и растяжение между ними. Это сингулярное разложение — SVD.
Простая таблица: горизонталь ×3, вертикаль ×1.
Координаты и расчёт геометрического примера приведены в тексте. Для изменения пространственного рисунка включитеJavaScript.
Два пространства требуют двух наборов направлений
Eigendecomposition сравнивает входное направление с его образом в том же пространстве и не существует в удобной вещественной форме для любой матрицы. Singular value decomposition существует и для прямоугольной вещественной матрицы:
A
=
U
Σ
V
T
,
A=U\Sigma V^T,
A
=
U
Σ
V
T
,
где для полной формы
A
∈
R
m
×
n
,
U
∈
R
m
×
m
,
Σ
∈
R
m
×
n
,
V
∈
R
n
×
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}.
A
∈
R
m
×
n
,
U
∈
R
m
×
m
,
Σ
∈
R
m
×
n
,
V
∈
R
n
×
n
.
Столбцы
V
V
V
задают ортонормированные входные направления, столбцы
U
U
U
— ортонормированные выходные направления, а
σ
i
≥
0
\sigma_i\ge0
σ
i
≥
0
на диагонали
Σ
\Sigma
Σ
являются масштабами.
Правые singular vectors удовлетворяют
A
T
A
v
i
=
σ
i
2
v
i
.
A^TAv_i=\sigma_i^2v_i.
A
T
A
v
i
=
σ
i
2
v
i
.
Если
σ
i
>
0
\sigma_i>0
σ
i
>
0
, то
u
i
=
A
v
i
σ
i
.
u_i=\frac{Av_i}{\sigma_i}.
u
i
=
σ
i
A
v
i
.
Число положительных singular values равно точному rank.
Последовательность трёх действий
Для входа
x
x
x
A
x
=
U
(
Σ
(
V
T
x
)
)
.
Ax=U\bigl(\Sigma(V^Tx)\bigr).
A
x
=
U
(
Σ
(
V
T
x
)
)
.
Сначала
V
T
V^T
V
T
выражает вход в правом ортонормированном базисе. Затем
Σ
\Sigma
Σ
независимо масштабирует координаты. Наконец,
U
U
U
собирает результат в выходном пространстве. Ортогональные матрицы могут включать отражение, поэтому каждую из них неточно называть только поворотом.
Возьмём
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).
A
=
diag
(
3
,
1
)
,
U
=
V
=
I
,
Σ
=
diag
(
3
,
1
)
.
Для
x
=
[
1
,
2
]
T
x=[1,2]^T
x
=
[
1
,
2
]
T
trace равен
[
1
,
2
]
T
→
V
T
[
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.
[
1
,
2
]
T
V
T
[
1
,
2
]
T
Σ
[
3
,
2
]
T
U
[
3
,
2
]
T
.
Усечение даёт оптимальный low-rank объект в выбранной норме
Если оставить только
σ
1
=
3
\sigma_1=3
σ
1
=
3
, получим
A
1
=
[
3
0
0
0
]
.
A_1=\begin{bmatrix}3&0\\0&0\end{bmatrix}.
A
1
=
[
3
0
0
0
]
.
Второе входное направление удаляется. Для матрицы ошибка Фробениуса равна отброшенному singular value:
∥
A
−
A
1
∥
F
=
1
,
∥
A
−
A
1
∥
F
∥
A
∥
F
=
1
10
≈
0.316228.
\|A-A_1\|_F=1,
\qquad
\frac{\|A-A_1\|_F}{\|A\|_F}=\frac1{\sqrt{10}}\approx0.316228.
∥
A
−
A
1
∥
F
=
1
,
∥
A
∥
F
∥
A
−
A
1
∥
F
=
10
1
≈
0.316228.
Для конкретного
x
=
[
1
,
2
]
T
x=[1,2]^T
x
=
[
1
,
2
]
T
полный выход
[
3
,
2
]
T
[3,2]^T
[
3
,
2
]
T
, а rank-one выход
[
3
,
0
]
T
[3,0]^T
[
3
,
0
]
T
; ошибка этого вектора равна 2. Нельзя смешивать ошибку матрицы и ошибку одного output.
У поворота на 90 градусов оба singular values равны 1. Выбор одного rank-one направления тогда не уникален: нет единственной «самой большой» оси. Разные корректные SVD могут отличаться знаками пар
u
i
,
v
i
u_i,v_i
u
i
,
v
i
или базисом внутри равного singular-подпространства, сохраняя
U
Σ
V
T
=
A
U\Sigma V^T=A
U
Σ
V
T
=
A
.
Браузерная лаборатория аналитически решает только
2
×
2
2\times2
2
×
2
случай через
A
T
A
A^TA
A
T
A
. Промышленные библиотеки используют более устойчивые алгоритмы, поскольку явное построение
A
T
A
A^TA
A
T
A
возводит condition number в квадрат. Проверяйте реконструкцию, ортогональность и ошибку, а не конкретный знак каждого singular vector.
При сжатии потерялась вертикальная составляющая. SVD описывает направления и масштабы; качество для конкретной задачи требует отдельной проверки.
Исправление через узкое промежуточное пространство. Как этот вопрос продолжает полученный результат?
Python-примеры главы 02
Академическая база →