Матрицы: определение и виды — Часть 1: Теория и основы
Матрицы: определение и виды 🔢
Часть 1: Теория и базовые задания
Знаешь, что общего между изображением кота в нейросети, рекомендацией фильма на Netflix и распознаванием твоего голоса Алексой? Все они работают с матрицами. Да-да, те самые прямоугольные таблички с числами, которые пугали в школе.
Но вот в чём фишка: матрицы — это не абстрактная математика для учебников. Это главный рабочий инструмент современного ML/AI. Когда ChatGPT генерирует текст, он перемножает матрицы. Когда DALL-E создаёт картинку — опять матрицы. Когда рекомендательная система предлагает тебе следующий ролик на YouTube — угадай что? Правильно, матрицы.
В этом уроке мы с тобой разберёмся с самых основ: что такое матрица, какие они бывают, и — самое интересное — где они используются в реальном ML. Не будет абстрактных примеров про яблоки. Вместо этого — embeddings, веса нейросетей, attention механизмы.
🎯 Что ты узнаешь в этой части:
- Что такое матрица простыми словами (и почему это важнее, чем кажется)
- Какие бывают виды матриц и зачем каждый нужен
- Как матрицы хранят embeddings слов в ChatGPT
- Почему форма матрицы критична для нейросетей
- 10 базовых заданий с подробными решениями
Что такое матрица? Начнём с нуля
Интуитивное понимание
Представь, что тебе нужно хранить информацию о 5 пользователях и их активности в 3 разных приложениях. Можно сделать так:
Здесь:
- Вся табличка называется матрицей и обозначается большой буквой (обычно $A$, $B$, $X$, $W$)
- Строки (rows) — горизонтальные ряды чисел (их 5 штук)
- Столбцы (columns) — вертикальные ряды чисел (их 3 штуки)
- Каждое число в табличке — элемент матрицы
Строгое определение
Определение:Матрица — это прямоугольная таблица чисел, состоящая из $m$ строк и $n$ столбцов.
Обозначения:
- $A$ — сама матрица
- $m$ — количество строк (rows)
- $n$ — количество столбцов (columns)
- $a_{ij}$ — элемент в $i$-й строке и $j$-м столбце
- Размер (shape): $m \times n$ (читается “эм на эн”)
Расшифровка:
- Строки = пользователи (3)
- Столбцы = фильмы (4)
- $r{11} = 5$ — первый пользователь поставил фильму №1 оценку 5
- $r{32} = 1$ — третий пользователь поставил фильму №2 оценку 1
Применение в ML: Именно так устроены рекомендательные системы Netflix! Алгоритм ищет паттерны в этой матрице, чтобы предсказать, какой фильм понравится тебе.
Пример 3 (ML — embeddings слов):
В NLP каждое слово представляется вектором чисел — word embedding. Все embeddings хранятся в матрице:
Что здесь:
- Размер: $5 \times 4$ (5 слов, каждое описывается 4 числами)
- В реальности: GPT-3 имеет матрицу embeddings $50257 \times 12288$ — 618 миллионов параметров только на embeddings!
Зачем это важно: Когда нейросеть обрабатывает текст “кот”, она ищет слово “кот” в этой матрице и достаёт его вектор. Это первый шаг в любой NLP-модели.
✅ Sparse матрица — большинство нулей. Экономит память в 10-100 раз!
✅ В ML всё — матрицы:
- Датасет: $(m, n)$ — примеры × признаки
- Веса Dense: $(n{\text{out}}, n{\text{in}})$
- Embeddings: $(V, d)$ — словарь × размерность
- Attention: $(n, n)$ — токены × токены
- Изображение: $(H, W, C)$ — высота × ширина × каналы
💡 Совет: Матрицы — это фундамент ML. Если хочешь понимать, как работают нейросети “под капотом”, нужно понимать матрицы. Это не абстракция — это рабочий инструмент каждого ML-инженера.
Матрицы: Часть 2 🎯
Средние задания (11-20)
Продолжаем практику! В этой части задания становятся интереснее — мы работаем с реальными сценариями из машинного обучения.
Главное из второй части
📊 Что освоили:
✅ Диагональные матрицы — быстрые в вычислениях, используются в оптимизации
✅ Shape для батчей — (N,C,H,W)(N, C, H, W)
(N,C,H,W) формат критичен для CNN
✅ Совместимость размеров — основа матричного умножения в нейросетях
✅ Треугольные матрицы — важны в LU-разложении и решении систем
✅ Attention матрицы — квадратичная сложность O(n2)O(n^2)
O(n2) — главная проблема трансформеров
✅ Flatten операция — 28×28→78428 \times 28 \rightarrow 784
28×28→784 для подачи в Dense слой
✅ Embeddings — миллионы параметров в одной матрице!
✅ Confusion Matrix — квадратная матрица для оценки классификации
💡 Совет: Обрати внимание, как часто в ML встречаются квадратные матрицы (attention, ковариации, confusion). Это не случайность — квадратные матрицы обладают особыми свойствами (собственные значения, определитель), которые критичны для анализа данных.
Продвинутые задания (21-30)
Финальная часть! Здесь мы работаем с реальными архитектурами нейросетей, считаем параметры, разбираемся с ковариациями и attention механизмами.
Задание 21
Вычислите параметры нейросети:
Input(784) → Dense(128) → Dense(64) → Dense(10), все слои с bias
Решение:
Шаг 1: Формула для Dense слоя:
Параметры = nout×(nin+1)n{\text{out}} \times (n{\text{in}} + 1)
nout×(nin+1)
Задание 22
One-hot encoding для словаря из 10,000 слов. Shape вектора для одного слова? Shape для предложения из 15 слов?
Решение:
Шаг 1: One-hot encoding = вектор длины = размеру словаря
Для одного слова:
Словарь 10,000 слов → вектор длины 10,000
Все нули, кроме одной единицы
Пример (словарь из 5 слов):
Shape для одного слова: (10000,1)(10000, 1)
(10000,1) или (10000,)(10000,)
(10000,)
Для предложения из 15 слов:
Шаг 2: Складываем 15 one-hot векторов в матрицу
Строки = слова (15)
Столбцы = one-hot вектор (10,000)
Shape: (15,10000)(15, 10000)
(15,10000)
Визуализация:
Слово 1: [0, 0, 1, 0, …, 0] 10000 элементов
Слово 2: [0, 0, 0, 1, …, 0]
…
Слово 15: [0, 0, 0, 0, …, 1]
↑
(15, 10000)
Шаг 3: Анализ разреженности
Всего элементов: 15×10000=150,00015 \times 10000 = 150,000
15×10000=150,000
Ненулевых: 15 (по одной единице на слово)
Доля ненулевых: 15150000=0.0001=0.01%\frac{15}{150000} = 0.0001 = 0.01\%
15000015=0.0001=0.01%
Вывод: Очень sparse! 99.99% — нули.
Геометрическая интерпретация: Единичная матрица — это “ничегонеделание”, как умножение на 1 для чисел.
Ответ: Проверено, I2×A=AI_2 \times A = A
I2×A=A
total = sum(p.numel() for p in conv.parameters())
print(total) # 1792
ВАЖНО: Размер входа (224×224)(224 \times 224)
(224×224) НЕ влияет на количество параметров!
Это свойство CNN — одни и те же фильтры работают на изображениях любого размера.
Ответ: 1,792 параметра (1,728 весов + 64 bias)
Задание 25
Почему матрица ковариаций всегда симметрична?
Решение:
Шаг 1: Определение ковариации
Ковариация признаков XX
X и YY
Y:
print(np.allclose(cov_matrix, cov_matrix.T)) # True
Ответ: Матрица ковариаций симметрична, потому что Cov(X,Y)=Cov(Y,X)\text{Cov}(X, Y) = \text{Cov}(Y, X)
Cov(X,Y)=Cov(Y,X) (коммутативность ковариации)
Задание 26
Batch из 32 примеров проходит через Dense(256 → 128). Какой shape входа? Какой shape выхода?
Решение:
Шаг 1: Понимаем Dense слой для батча
Для одного примера: вход (256,1)(256, 1)
(256,1) → выход (128,1)(128, 1)
(128,1)
Для батча из BB
B примеров все примеры обрабатываются параллельно.
Шаг 2: Shape входа
B=32B = 32
B=32 примера, каждый по 256 признаков
Шаг 2: Подставляем значения
V=30,000V = 30,000
V=30,000
d=512d = 512
d=512
Параметров = V×d=30,000×512V \times d = 30,000 \times 512
V×d=30,000×512
Шаг 3: Вычисляем
30,000×512=15,360,00030,000 \times 512 = 15,360,00030,000×512=15,360,000
В миллионах: 15.36 млн параметров
Шаг 4: В байтах (float32)
15,360,000×4=61,440,00015,360,000 \times 4 = 61,440,000
15,360,000×4=61,440,000 байт
=61.44= 61.44
=61.44 МБ
Код:
pythonimport torch.nn as nn
embedding = nn.Embedding(30000, 512)
params = sum(p.numel() for p in embedding.parameters())
print(f”Параметров: {params:,}“) # 15,360,000
Сравнение:
BERT-base (30k × 768): 23 млн
GPT-2 (50k × 768): 38 млн
GPT-3 (50k × 12288): 618 млн!
Ответ: 15,360,000 параметров (15.36 млн)
Задание 28
Матрица AA
A размера 100×50100 \times 50
100×50. Какой размер у ATAA^T A
ATA? Какой размер у AATAA^T
AAT?
Решение:
Дано: AA
A размера (100,50)(100, 50)
(100,50)
Часть 1: ATAA^T A
ATA
Шаг 1: Определяем размер ATA^T
AT
AA
A: (100,50)(100, 50)
(100,50)
ATA^T
AT: (50,100)(50, 100)
(50,100) (строки и столбцы поменялись)
Шаг 2: Проверяем возможность умножения AT×AA^T \times A
AT×A
ATA^T
AT: (50,100)(50, 100)
(50,100)
AA
A: (100,50)(100, 50)
(100,50)
Столбцы ATA^T
AT = 100 = строки AA
A ✅
Шаг 3: Вычисляем размер результата
(50,100)×(100,50)=(50,50)(50, 100) \times (100, 50) = (50, 50)
(50,100)×(100,50)=(50,50)
Вывод: ATAA^T A
ATA — квадратная матрица 50×5050 \times 50
50×50!
Часть 2: AATAA^T
AAT
Шаг 1: Проверяем умножение A×ATA \times A^T
A×AT
AA
A: (100,50)(100, 50)
(100,50)
ATA^T
AT: (50,100)(50, 100)
(50,100)
Столбцы AA
A = 50 = строки ATA^T
AT ✅
Итоговое резюме: Что освоили за 3 части
Теоретическая база
✅ Определение матрицы — прямоугольная таблица чисел m×nm \times n
m×n
✅ Элементы — aija_{ij}
aij (строка ii
i, столбец jj
j)
✅ Shape — критичен для операций в нейросетях
Виды матриц
✅ Прямоугольная — датасеты, веса Dense
✅ Квадратная — ковариации, attention, confusion matrix
✅ Векторы — примеры, градиенты, bias
✅ Нулевая — инициализация, padding
✅ Единичная — AI=AAI = A
AI=A, обратные матрицы
✅ Диагональная — быстрые вычисления, Adam optimizer
✅ Симметричная — ковариации, kernel matrices
✅ Sparse — TF-IDF, one-hot, графы
ML применения
✅ Датасет: (m,n)(m, n)
(m,n) — примеры × признаки
✅ CNN фильтры: (K,C,F,F)(K, C, F, F)
(K,C,F,F) — независимо от размера входа
✅ Ковариации: (n,n)(n, n)
(n,n) — всегда симметричны
Практические навыки
✅ Считать параметры нейросетей
✅ Проверять совместимость размеров
✅ Работать с shape в PyTorch/NumPy
✅ Понимать sparse vs dense
✅ Создавать confusion matrix
✅ Вычислять ковариации
Финальный лайфхак 🔥
Главное правило работы с матрицами в ML:
ВСЕГДА проверяй shape!
90% ошибок в нейросетях — это несовместимые размеры матриц.
Привычка профи:
pythonprint(f”X: {X.shape}“)
print(f”W: {W.shape}“)
print(f”XW: {(X @ W).shape}“) # Проверь ДО запуска!
Формула успеха:
Понимаешь матрицы → понимаешь линейную алгебру
Понимаешь линейную алгебру → понимаешь ML
Понимаешь ML → можешь создавать свои модели
Что дальше?
Следующие темы для изучения:
📚 Операции над матрицами:
💡 Последний совет: Матрицы — это не “страшная математика”. Это твой главный инструмент как ML-инженера. Каждый раз, когда пишешь model.fit(X, y), помни: внутри происходят тысячи матричных операций. Теперь ты понимаешь, что именно!
Удачи в изучении ML! Ты теперь знаешь матрицы на глубоком уровне. 🚀
Понял тему? Закрепи в боте! 🚀
Попрактикуйся на задачах и получи персональные рекомендации от AI