Alterna · учебный материал
02.1 Матрица меняет пространство
Одна таблица коэффициентов преобразует каждую точку по одинаковому правилу. Сетка поможет увидеть растяжение и поворот.
Что в этом материале
- Матрица задаёт действие сразу на всё пространство
- Столбцы являются образами базисных векторов
- Что сохраняет линейное отображение
- Линейное и аффинное преобразования
Содержание и основные понятия
Вектор описывает объект несколькими координатами.
Одна таблица коэффициентов преобразует каждую точку по одинаковому правилу. Сетка поможет увидеть растяжение и поворот.
Возьмём [1,2] и таблицу [[2,1],[0,1]]. Первая координата результата: 2×1+1×2=4; вторая: 0×1+1×2=2. Именно этот пример стоит на рисунке до изменения параметров.
Координаты и расчёт геометрического примера приведены в тексте. Для изменения пространственного рисунка включитеJavaScript.
Матрица задаёт действие сразу на всё пространство
Вектор описывает один объект пространства. Матрица задаёт правило, которое согласованно действует на каждый допустимый вектор. При столбцовом соглашении
A
∈
R
m
×
n
,
x
∈
R
n
,
y
=
A
x
∈
R
m
.
A\in\mathbb R^{m\times n},
\qquad x\in\mathbb R^n,
\qquad y=Ax\in\mathbb R^m.
A
∈
R
m
×
n
,
x
∈
R
n
,
y
=
A
x
∈
R
m
.
Число столбцов
A
A
A
обязано совпадать с размерностью входа, а число строк определяет размерность выхода. Это не только правило синтаксиса: каждая строка содержит коэффициенты одного выходного признака,
y
i
=
∑
j
=
1
n
A
i
j
x
j
.
y_i=\sum_{j=1}^{n}A_{ij}x_j.
y
i
=
j
=
1
∑
n
A
ij
x
j
.
Для
A
=
[
2
1
0
1
]
,
x
=
[
1
2
]
A=\begin{bmatrix}2&1\\0&1\end{bmatrix},
\qquad x=\begin{bmatrix}1\\2\end{bmatrix}
A
=
[
2
0
1
1
]
,
x
=
[
1
2
]
получаем
A
x
=
[
2
⋅
1
+
1
⋅
2
0
⋅
1
+
1
⋅
2
]
=
[
4
2
]
.
Ax=\begin{bmatrix}2\cdot1+1\cdot2\\0\cdot1+1\cdot2\end{bmatrix}
=\begin{bmatrix}4\\2\end{bmatrix}.
A
x
=
[
2
⋅
1
+
1
⋅
2
0
⋅
1
+
1
⋅
2
]
=
[
4
2
]
.
Столбцы являются образами базисных векторов
Любой вход раскладывается по стандартному базису:
x
=
x
1
e
1
+
⋯
+
x
n
e
n
x=x_1e_1+\cdots+x_ne_n
x
=
x
1
e
1
+
⋯
+
x
n
e
n
. Линейность даёт
A
x
=
x
1
A
e
1
+
⋯
+
x
n
A
e
n
.
Ax=x_1Ae_1+\cdots+x_nAe_n.
A
x
=
x
1
A
e
1
+
⋯
+
x
n
A
e
n
.
Умножение на
e
j
e_j
e
j
выбирает
j
j
j
-й столбец, поэтому
A
x
=
x
1
A
:
,
1
+
⋯
+
x
n
A
:
,
n
.
Ax=x_1A_{:,1}+\cdots+x_nA_{:,n}.
A
x
=
x
1
A
:
,
1
+
⋯
+
x
n
A
:
,
n
.
В нашем примере
A
e
1
=
[
2
,
0
]
T
Ae_1=[2,0]^T
A
e
1
=
[
2
,
0
]
T
,
A
e
2
=
[
1
,
1
]
T
Ae_2=[1,1]^T
A
e
2
=
[
1
,
1
]
T
, а
A
x
=
1
[
2
,
0
]
T
+
2
[
1
,
1
]
T
=
[
4
,
2
]
T
.
Ax=1[2,0]^T+2[1,1]^T=[4,2]^T.
A
x
=
1
[
2
,
0
]
T
+
2
[
1
,
1
]
T
=
[
4
,
2
]
T
.
Достаточно знать образы базисных стрелок, чтобы восстановить действие матрицы на любой линейной комбинации. Поэтому двумерную матрицу удобно видеть как деформацию всей координатной сетки: каждая прямая сетки строится из тех же преобразованных базисных направлений.
Что сохраняет линейное отображение
Для любых совместимых
x
,
z
x,z
x
,
z
и скаляров
α
,
β
\alpha,\beta
α
,
β
:
A
(
α
x
+
β
z
)
=
α
A
x
+
β
A
z
.
A(\alpha x+\beta z)=\alpha Ax+\beta Az.
A
(
αx
+
β
z
)
=
α
A
x
+
β
A
z
.
Отсюда следуют три геометрических свойства. Начало остаётся на месте, потому что
A
0
=
0
A0=0
A
0
=
0
. Прямые переходят в прямые или схлопываются. Параллельность сохраняется, если направления не были уничтожены. Углы и длины сохраняются далеко не каждой матрицей.
Единичный квадрат с вершинами
0
,
e
1
,
e
2
,
e
1
+
e
2
0,e_1,e_2,e_1+e_2
0
,
e
1
,
e
2
,
e
1
+
e
2
переходит в параллелограмм со сторонами-столбцами
[
2
,
0
]
T
[2,0]^T
[
2
,
0
]
T
и
[
1
,
1
]
T
[1,1]^T
[
1
,
1
]
T
. Его ориентированная площадь умножается на determinant, здесь на 2.
Линейное и аффинное преобразования
Правило
x
↦
A
x
+
b
x\mapsto Ax+b
x
↦
A
x
+
b
при
b
≠
0
b\ne0
b
=
0
переносит начало в
b
b
b
. Оно называется аффинным. Разность двух выходов всё ещё преобразуется линейно:
(
A
x
+
b
)
−
(
A
z
+
b
)
=
A
(
x
−
z
)
,
(Ax+b)-(Az+b)=A(x-z),
(
A
x
+
b
)
−
(
A
z
+
b
)
=
A
(
x
−
z
)
,
но строгое равенство
f
(
0
)
=
0
f(0)=0
f
(
0
)
=
0
нарушено. Поэтому bias нейронного слоя нельзя незаметно включать в геометрический рассказ о линейном операторе, не расширив координаты или не назвав отображение аффинным.
Поворот на 90 градусов
R
=
[
0
−
1
1
0
]
R=\begin{bmatrix}0&-1\\1&0\end{bmatrix}
R
=
[
0
1
−
1
0
]
переводит
[
1
,
2
]
T
[1,2]^T
[
1
,
2
]
T
в
[
−
2
,
1
]
T
[-2,1]^T
[
−
2
,
1
]
T
, сохраняет длины и площадь. Shear меняет углы, но может сохранять площадь. Диагональная матрица независимо масштабирует координатные направления. Одна и та же таблица чисел может быть оператором, dataset или covariance matrix; роль определяется контрактом задачи.
Плотный matvec размера
[
m
,
n
]
[m,n]
[
m
,
n
]
выполняет
m
n
mn
mn
умножений и
m
(
n
−
1
)
m(n-1)
m
(
n
−
1
)
сложений в прямом алгоритме. Матрица
[
4096
,
4096
]
[4096,4096]
[
4096
,
4096
]
содержит 16 777 216 чисел, то есть 64 MiB float32 payload. Это только один числовой массив: activations, gradients, optimizer state и overhead считаются отдельно.
A, x = [[2, 1], [0, 1]], [1, 2]
y = [sum(row[j] * x[j] for j in range(2)) for row in A]
assert y == [4, 2]
Код повторяет только что разобранные операции.
Полный проверяемыйPython-пример главы
доступен отдельным файлом; показанный короткий фрагмент не заменяет его реализацию.
Каждый вход внёс свой вклад. Большая таблица повторяет это правило для остальных выходов. Здесь вектор записан столбцом Ax; в Mini-GPT строки используют запись xW.
Два преобразования подряд. Как этот вопрос продолжает полученный результат?
Python-примеры главы 02
Академическая база →