В машинном обучении почти всё хранится и считается как векторы и матрицы. Объект с признаками это вектор, батч объектов это матрица, слой нейросети это умножение на матрицу весов. На собесе проверяют не доказательства, а умение быстро посчитать и объяснить, где это в модели.
Векторы и скалярное произведение
Вектор это упорядоченный набор чисел: x = (x₁, …, xₙ). Скалярное произведение:
a·b = a₁b₁ + a₂b₂ + … + aₙbₙ = |a|·|b|·cos θ
Отсюда три вывода:
- a·b = 0 у ненулевых векторов означает, что они ортогональны.
- Знак показывает, смотрят ли векторы в одну сторону.
- Косинусная близость cos θ = a·b / (|a|·|b|) не зависит от длины векторов. Поэтому эмбеддинги текстов сравнивают косинусом: смысл в направлении, а длина часто отражает побочное, например частоту слова.
Нормы
Норма это длина вектора. Три главные:
- L1: сумма модулей. Для (3, -4) это 7.
- L2: корень из суммы квадратов. Для (3, -4) это 5.
- L∞: максимальный модуль. Для (3, -4) это 4.
L1 и L2 встречаются как регуляризация (lasso и ridge), L2 как евклидово расстояние в kNN и кластеризации.
Матрицы и их умножение
Матрица A размером m×n переводит вектор длины n в вектор длины m. Произведение AB определено, только если число столбцов A равно числу строк B, и результат имеет размер «строки A × столбцы B».
def matmul(A, B):
return [[sum(A[i][t] * B[t][j] for t in range(len(B)))
for j in range(len(B[0]))] for i in range(len(A))]
Что важно помнить:
- AB ≠ BA в общем случае.
- (AB)ᵀ = BᵀAᵀ, порядок меняется.
- Умножение n×m на m×k стоит n·m·k умножений. Поэтому A·(B·x) может быть в сотни раз дешевле, чем (A·B)·x.
Полносвязный слой это y = xW + b. Если у слоя 128 входов и 64 выхода, то W имеет размер 128×64, а батч из 32 объектов (32×128) проходит через слой одним умножением и даёт 32×64.
Ранг, обратная матрица, определитель
Линейная независимость: ни один вектор набора не выражается через остальные. Ранг матрицы это максимальное число независимых строк (оно равно числу независимых столбцов).
Квадратная матрица n×n обратима, только если её ранг n. Эквивалентно: определитель не равен нулю. Для 2×2 det [[a, b], [c, d]] = ad - bc.
Где это в ML: линейная регрессия решается нормальным уравнением
w = (XᵀX)⁻¹ Xᵀ y
Если два признака линейно зависимы (цена в рублях и та же цена в тысячах), столбцы X зависимы, XᵀX вырождена и решение неединственно. Это мультиколлинеарность. L2-регуляризация лечит её: XᵀX + λI обратима при любом λ > 0.
Особые матрицы
- Единичная I: AI = IA = A.
- Симметричная: A = Aᵀ. Таковы ковариационная матрица и гессиан гладкой функции.
- Ортогональная Q: QᵀQ = I, обратная равна транспонированной, длины сохраняются. Это повороты и отражения.
- Положительно определённая: xᵀAx > 0 для любого ненулевого x. Ковариационная матрица положительно полуопределена.
Частые ошибки
- Путать размеры при умножении и не проверять их перед ответом.
- Считать, что ненулевые строки обязательно независимы.
- Говорить «косинус от 0 до 1»: он лежит от -1 до 1.
- Решать систему, явно вычисляя обратную матрицу: численно надёжнее метод Гаусса или разложения.
Что спросят на собесе
- Что такое скалярное произведение и косинусная близость, почему эмбеддинги сравнивают косинусом.
- Размер результата и стоимость умножения матриц, где это в нейросети.
- Что такое ранг, когда матрица необратима, что такое мультиколлинеарность.
- Посчитать нормы L1 и L2, определитель 2×2.
- Чем ортогональная матрица отличается от симметричной.