База

Векторы и матрицы с нуля

Векторы

Вектор — упорядоченный список чисел $\mathbf{v} = (v_1, \dots, v_n)$. Геометрически — стрелка из начала координат.

Операция Как считается Смысл
Сложение поэлементно сдвиг: «король − мужчина + женщина ≈ королева»
Умножение на число каждый элемент × c растяжение
Длина $\lVert\mathbf{v}\rVert = \sqrt{v_1^2 + \dots + v_n^2}$ Пифагор в n измерениях
Скалярное произведение $\mathbf{a}\cdot\mathbf{b} = \sum a_i b_i$ похожесть направлений

Матрицы

Матрица — таблица чисел $m \times n$ ($m$ строк, $n$ столбцов). Умножение матрицы на вектор — каждая строка скалярно умножается на вектор:

$$ \begin{pmatrix} 1 & 2 \\ 3 & 4 \\ 5 & 6 \end{pmatrix} \begin{pmatrix} 10 \\ 1 \end{pmatrix} = \begin{pmatrix} 1\cdot10 + 2\cdot1 \\ 3\cdot10 + 4\cdot1 \\ 5\cdot10 + 6\cdot1 \end{pmatrix} = \begin{pmatrix} 12 \\ 34 \\ 56 \end{pmatrix} $$

Это ровно то, что делает слой нейросети: 2 входа → 3 выхода, каждая строка матрицы — веса одного нейрона.

Умножение матриц $C = AB$: элемент $C_{ij}$ — скалярное произведение $i$-й строки $A$ на $j$-й столбец $B$. Размерности: (m×k)·(k×n) → (m×n), внутренние должны совпасть.

import numpy as np
W = np.array([[1, 2], [3, 4], [5, 6]])     # слой: 2 входа → 3 нейрона
x = np.array([10, 1])
print(W @ x)                                # [12 34 56]
X = np.array([[10, 1], [0, 1], [1, 1]])     # батч из 3 примеров
print(X @ W.T)                              # каждый пример через слой: форма (3, 3)

Транспонирование, единичная и обратная матрицы

  • $A^\top$ — строки становятся столбцами: размер $m \times n$ → $n \times m$.
  • $I$ — единичная: $I\mathbf{x} = \mathbf{x}$.
  • $A^{-1}$: $AA^{-1} = I$. Система $A\mathbf{x} = \mathbf{b}$ решается как $\mathbf{x} = A^{-1}\mathbf{b}$ (в коде — np.linalg.solve(A, b)).
  • Обратная существует, только если определитель $\det A \ne 0$. Для матрицы $2\times2$:

$$ \det\begin{pmatrix} a & b \\ c & d\end{pmatrix} = ad - bc $$

🏋️ Практика Б11

Б11.1. Найдите длину вектора $(3, 4)$ и косинус угла между $(1, 0)$ и $(1, 1)$.

▶️ Ответ $\sqrt{9 + 16} = 5$. $\cos = \frac{1}{1 \cdot \sqrt{2}} \approx 0.707$ — угол 45°.

Б11.2. Какой формы будет результат: матрица $(32 \times 768)$ умножить на $(768 \times 3072)$?

▶️ Ответ $(32 \times 3072)$ — батч из 32 токенов прошёл через расширяющий слой FFN трансформера.

Б11.3. Решите систему $2x + y = 5$, $x - y = 1$ через матрицы.

▶️ Ответ
A = np.array([[2, 1], [1, -1]]); b = np.array([5, 1])
print(np.linalg.solve(A, b))       # [2. 1.]
$\det A = -2 - 1 = -3 \ne 0$ — решение единственное.