Матрицы и линейные преобразования: как слой «крутит» пространство
🔒 Sign in to use this
Матрица — это не таблица, это действие
Если вектор — это положение точки, то матрица — это команда, которая заставляет эту точку двигаться. Матрица может повернуть, растянуть, сжать или «схлопнуть» всё пространство сразу. В машинном обучении веса нейронного слоя — это числа в матрице. Когда данные проходят сквозь слой, матрица весов буквально «деформирует» пространство, пытаясь расположить точки разных классов подальше друг от друга.
Измените числа в матрице W и наблюдайте, как деформируется пространство
Grid nodes (x, y) map to (x′, y′): x′ = ax + by, y′ = cx + dy
Matrix W
()
[1.00, 0.00; 0.00, 1.00]
Линейные преобразования — что умеет матрица
Линейное преобразование сохраняет две вещи: прямые линии остаются прямыми, начало координат остаётся на месте. Всё остальное — повороты, растяжения, отражения, сдвиги осей — матрица может делать.
Identity [[1,0],[0,1]]: «нулевое действие». Пространство остаётся нетронутым. np.eye(2)
Масштаб [[2,0],[0,2]]: растягивает пространство в 2 раза по обеим осям
Поворот [[0,-1],[1,0]]: поворачивает все векторы на 90°. Попробуйте в виджете выше
Каждый полносвязный (Dense) слой нейросети — это матрица: y=Wx+b. Обучение = подбор чисел в W
Умножение матриц: склейка двух действий в одно
Умножение матриц A×B — это не просто арифметика. Это последовательное применение двух трансформаций: сначала B, потом поверх неё A. Наведите на ячейку результата C ниже — и увидите, какая строка A и какой столбец B участвуют в её вычислении. Важно: порядок имеет значение — A×B, как правило, не равно B×A.
Наведите на ячейку матрицы C, чтобы увидеть, из каких элементов она складывается
Cij=∑kAikBkj — row i of Слой 1 (W₁), column j of Слой 2 (W₂)
Слой 1 (W₁)
2
3
1
0
4
2
×
Слой 2 (W₂)
1
2
0
1
3
0
=
Результат
5
7
6
4
Наведите курсор на ячейку результата C — подсветятся строка A и столбец B.
Три операции, которые нужно знать
Нажмите на операцию для объяснения
↩️
Обратная матрица
📐
Определитель
🔄
Транспонирование
Матрицы в нейросетях: слой как деформация пространства
Каждый полносвязный слой — это буквально y=Wx+b. Матрица W деформирует пространство, вектор смещения b сдвигает его. Обучение нейросети — это подбор таких чисел в W, чтобы после всех деформаций точки разных классов (например, «кошки» и «собаки») оказались максимально далеко друг от друга и их можно было легко разделить.
Линейная алгебра в действии ▼
python
1
import numpy as np
▼
2
W = np.array([[0, -1], [1, 0]])
▼
3
x = np.array([1, 0])
▼
4
y = W @ x # [0, 1]
▼
5
inv_W = np.linalg.inv(W)
▼
6
det = np.linalg.det(W) # = 1.0
▼
ℹ️GPU стали сердцем глубокого обучения именно потому, что они умеют выполнять миллиарды матричных умножений параллельно. Обучение GPT-4 потребовало квадриллионы таких операций. Без этой «матричной магии» современные LLM были бы невозможны.