Мощный блог

Математика для собеседования: линейная алгебра, SVD и вероятность

28 августа 2026 · Собесы

Темы 1–5: линейная алгебра, SVD и PCA, градиенты и backprop, база теории вероятностей и распределения — тот минимум математики, который спрашивают на ML-секции.

1. Линейная алгебра для ML

Важность на собеседовании: 5/10 █████░░░░░

🔥🔥 Часто. Отдельной секцией почти не спрашивают, но она всплывает внутри других вопросов: косинусная близость, мультиколлинеарность, почему XᵀX необратима, оценка сложности. В РФ-компаниях на ML-базе могут попросить объяснить ранг и нормы на пальцах. Глубоко копают редко.

Суть. Данные — матрица X размера n×d (n объектов, d признаков). Почти всё в ML — это умножение матриц и проекции.

Ключевое:

  • Скалярное произведение ⟨a,b⟩ = Σ aᵢbᵢ = ‖a‖‖b‖cos θ — основа косинусной близости и attention.
  • Нормы: L1 = Σ|xᵢ|, L2 = √(Σxᵢ²), L∞ = max|xᵢ|. L2 — «евклидова длина», L1 — «манхэттенская».
  • Ранг — число линейно независимых столбцов. Мультиколлинеарность = неполный ранг = XᵀX необратима = линрега не имеет единственного решения.
  • Собственные векторы: Av = λv. Направления, которые матрица только растягивает.
  • Положительная определённость: xᵀAx > 0 ∀x≠0. Гессиан положительно определён → точка локального минимума. Ковариационная матрица всегда положительно полуопределена.
  • Сложность: умножение (n×d)·(d×k) — O(n·d·k). Обращение d×d — O(d³).

Пример (почему это важно). Аналитическое решение линрега w = (XᵀX)⁻¹Xᵀy требует O(d³). При d=100 000 признаков (TF-IDF) это невозможно → используем SGD, O(n·d) за эпоху.

import numpy as np
X = np.random.randn(1000, 50)
print(np.linalg.matrix_rank(X))          # 50 — полный ранг
X_bad = np.hstack([X, X[:, :1]])         # дубль столбца
print(np.linalg.matrix_rank(X_bad))      # 50, а не 51 → мультиколлинеарность
print(np.linalg.cond(X_bad.T @ X_bad))   # огромное число обусловленности

На собесе спрашивают: зачем нормировать эмбеддинги перед косинусом; что такое мультиколлинеарность и чем она вредна; почему XᵀX может быть необратима.

Вопросы:

  1. Почему косинусная близость нормированных векторов эквивалентна скалярному произведению? — Если ‖a‖=‖b‖=1, то cos θ = ⟨a,b⟩. Поэтому в векторных БД эмбеддинги нормируют и используют быстрый dot-product индекс вместо косинуса.
  2. Чем L1-норма отличается от L2 геометрически? — Единичный шар L1 — ромб с углами на осях, L2 — круг. Углы ромба лежат на осях координат → оптимум чаще попадает на ось → зануление признака.

2. SVD, PCA и матричные разложения

Важность на собеседовании: 6/10 ██████░░░░

🔥🔥 Часто. PCA — обязательный минимум классического ML: «зачем центрировать», «PCA vs t-SNE», «сколько компонент взять». SVD как таковое спрашивают реже, но связь SVD↔PCA — популярный уточняющий вопрос. Глубина средняя: вывода теоремы Эккарта–Янга не требуют.

Суть. Любую матрицу можно разложить A = U Σ Vᵀ, где U, V — ортогональные, Σ — диагональная с сингулярными числами σ₁ ≥ σ₂ ≥ …. Это самый универсальный инструмент снижения размерности.

Теория.

  • SVD: оставив топ-k сингулярных чисел, получаем лучшее приближение ранга k по норме Фробениуса (теорема Эккарта–Янга).
  • PCA = SVD центрированной матрицы. Главные компоненты — собственные векторы ковариационной матрицы C = (1/n)XᵀX, их собственные значения = объяснённая дисперсия.
  • Порядок действий в PCA: центрирование (обязательно) → масштабирование (если признаки в разных единицах) → SVD → проекция.
  • Доля объяснённой дисперсии: λᵢ / Σλⱼ. Обычно берут k, покрывающее 90–95%.
  • LSA (Latent Semantic Analysis) — это SVD над TF-IDF матрицей: исторический предок эмбеддингов.

Пример.

from sklearn.decomposition import PCA, TruncatedSVD
pca = PCA(n_components=0.95)     # столько компонент, чтобы объяснить 95% дисперсии
X_low = pca.fit_transform(X_scaled)
print(pca.explained_variance_ratio_.cumsum())

# для разреженных матриц (TF-IDF) — TruncatedSVD, он не центрирует
svd = TruncatedSVD(n_components=300)

На собесе спрашивают: зачем центрировать перед PCA; PCA vs t-SNE vs UMAP; можно ли применять PCA к TF-IDF.

Вопросы:

  1. Почему PCA нужно применять после масштабирования? — PCA максимизирует дисперсию. Признак «зарплата в рублях» имеет дисперсию на порядки больше, чем «возраст», и заберёт первую компоненту просто из-за единиц измерения.
  2. Можно ли PCA к разреженной TF-IDF матрице? — Обычный PCA центрирует и уничтожает разреженность (память взорвётся). Нужен TruncatedSVD — он работает без центрирования, это и есть LSA.
  3. Связь SVD и PCA? — Если X центрирована, V из SVD — это главные компоненты, а σᵢ²/(n−1) — объяснённые дисперсии. PCA unsupervised: может выкинуть компоненту с малой дисперсией, но высокой предсказательной силой (supervised-аналог — LDA, PLS).

3. Матанализ, градиенты, backprop

Важность на собеседовании: 9/10 █████████░

🔥🔥🔥 Критично. Вывод градиента логистической регрессии на доске — классика РФ-собесов (Яндекс, Сбер, Авито). Спрашивают глубоко: цепное правило, почему softmax+CE даёт p−y, затухающий градиент. Если не выведете градиент логрега — секция считается проваленной.

Разбивка по подтемам:

Подтема Балл
Вывод градиента логрега на доске 10/10
Цепное правило / backprop 9/10
Почему softmax+CE даёт p−y 8/10
Затухающий градиент 8/10
Гессиан, седловые точки 4/10

Суть. Обучение = минимизация функции потерь градиентными методами. Нужно уметь считать производные руками.

Теория.

  • Градиент ∇f — вектор частных производных, указывает направление наискорейшего роста. Шаг делаем против него.
  • Правило цепочки: dL/dx = dL/dy · dy/dx — это и есть backpropagation.
  • Гессиан H = ∇²f — матрица вторых производных. H ≻ 0 → минимум, H ≺ 0 → максимум, знакопеременный → седловая точка. В нейросетях седловые точки гораздо более частая проблема, чем локальные минимумы.
  • Полезные производные (надо знать наизусть):
    • d/dz σ(z) = σ(z)(1−σ(z)), где σ — сигмоида;
    • d/dz tanh(z) = 1 − tanh²(z);
    • d/dz ReLU(z) = [z>0];
    • для softmax + cross-entropy: dL/dz = p − y (изумительно простой результат, спрашивают часто);
    • для MSE L = ½(ŷ−y)²: dL/dŷ = ŷ − y;
    • для линрега L = ‖Xw − y‖²: ∇_w L = 2Xᵀ(Xw − y).

Вывод, который просят на доске (логрег):
L = −[y log p + (1−y) log(1−p)], p = σ(wᵀx).
∂L/∂p = −y/p + (1−y)/(1−p); ∂p/∂z = p(1−p); ∂z/∂w = x.
Перемножаем: ∂L/∂w = (p − y)·x. Тот же вид, что у линрега — это свойство обобщённых линейных моделей с канонической функцией связи.

На собесе спрашивают: выведи градиент логрега; почему градиент softmax+CE равен p−y; что такое затухающий градиент.

Вопросы:

  1. Почему сигмоида вызывает затухание градиента? — σ'(z) ≤ 0.25, и при перемножении по L слоям градиент падает как 0.25^L. Отсюда ReLU (производная 1 в положительной области) и residual-связи.
  2. Что такое якобиан и где встречается? — Матрица частных производных вектор-функции. В backprop через слой y = Wx якобиан по x равен Wᵀ, поэтому градиент «идёт назад» через транспонированную матрицу.

4. Теория вероятностей: базис

Важность на собеседовании: 9/10 █████████░

🔥🔥🔥 Критично. Байес и условная вероятность — самые частые «математические» вопросы на ML-секции. Задача про тест на болезнь встречается буквально дословно. ЦПТ спрашивают в связке с A/B. Копают средне-глубоко: считать руками, объяснять смысл, ловить ловушку «некоррелированность ≠ независимость».

Разбивка по подтемам:

Подтема Балл
Формула Байеса и задача про тест на болезнь 10/10
Условная вероятность и независимость 9/10
Матожидание, дисперсия, ковариация 8/10
ЦПТ и ЗБЧ 7/10
Некоррелированность ≠ независимость 7/10

Суть. Язык, на котором формулируется вся ML-теория.

Теория.

  • Условная вероятность: P(A|B) = P(A∩B)/P(B).
  • Формула Байеса: P(A|B) = P(B|A)P(A) / P(B). Читается: апостериор ∝ правдоподобие × априор.
  • Формула полной вероятности: P(B) = Σᵢ P(B|Aᵢ)P(Aᵢ).
  • Независимость: P(A∩B) = P(A)P(B). Условная независимость (основа Naive Bayes): P(A∩B|C) = P(A|C)P(B|C).
  • Матожидание: E[X] = Σ xP(x); линейно всегда: E[aX+bY] = aE[X]+bE[Y] (независимость не требуется!).
  • Дисперсия: Var[X] = E[X²] − (E[X])²; Var[aX] = a²Var[X]; Var[X+Y] = Var[X]+Var[Y] только при независимости.
  • Ковариация: Cov(X,Y) = E[XY] − E[X]E[Y]. Корреляция Пирсона — нормированная ковариация ∈ [−1,1], ловит только линейную связь.
  • ЗБЧ: среднее выборки сходится к матожиданию. ЦПТ: сумма/среднее многих независимых слагаемых ≈ нормально, (X̄ − μ)/(σ/√n) → N(0,1). Это фундамент A/B-тестов.

Классические задачи с собеса.

Задача Байеса (спрашивают в Сбере и Т-Банке). Болезнь у 1% людей. Тест даёт 95% истинно-положительных и 10% ложно-положительных. Тест положительный — какова вероятность болезни?
P(D|+) = 0.95·0.01 / (0.95·0.01 + 0.10·0.99) = 0.0095/0.1085 ≈ 8.8%.
Мораль: при редком событии даже хороший тест даёт много ложных срабатываний — прямая аналогия с precision при дисбалансе классов.

Задача о двух конвертах / монетах. «Бросаем монету 2 раза, известно, что хотя бы один орёл. Вероятность двух орлов?» — 1/3, а не 1/2. Пространство {ОР, РО, ОО}.

Вопросы:

  1. Некоррелированность = независимость? — Нет. X ~ N(0,1), Y = X²: Cov = 0, но зависимость полная. Обратное верно: независимость ⇒ нулевая корреляция.
  2. Зачем ЦПТ в A/B-тестах и где она ломается? — Позволяет использовать нормальную аппроксимацию для средних даже при негауссовой метрике (выручка), если выборка велика и дисперсия конечна. Ломается на тяжёлых хвостах, зависимых наблюдениях и малых скошенных выборках — лечится бутстрэпом.

5. Распределения

Важность на собеседовании: 3/10 ███░░░░░░░

🔥 Иногда. Спрашивают в формате «какое распределение у этой величины» или «почему логрег предполагает Бернулли». Глубоко не копают — достаточно знать список и когда что применимо. Не тратьте на это много времени.

Дискретные:

  • Бернулли Bern(p): один бинарный исход. E=p, Var=p(1−p) (максимум при p=0.5). Правдоподобие логрега — это Бернулли.
  • Биномиальное Bin(n,p): число успехов в n испытаниях. Основа A/B-теста на конверсию.
  • Пуассон Pois(λ): число редких событий за интервал. E=Var=λ. Клики, звонки в саппорт. Если Var > E — сверхдисперсия, нужен отрицательный биномиальный.
  • Геометрическое: число попыток до первого успеха.

Непрерывные:

  • Нормальное N(μ,σ²): правило 68–95–99.7. Появляется из ЦПТ. MSE ⟺ гауссов шум.
  • Экспоненциальное: время между событиями, «без памяти». Латентность запросов — часто похоже.
  • Логнормальное: величина, равная произведению многих факторов. Выручка, время сессии, зарплаты. Правая скошенность → медиана < среднее.
  • Равномерное, Бета (сопряжённое к Бернулли, априор для конверсии), Гамма, Стьюдента (t-распределение при малой выборке, тяжелее хвосты, чем у нормального).

Практический вывод. Выбор функции потерь = выбор предположения о распределении шума. MSE ⟺ нормальный шум; MAE ⟺ распределение Лапласа (устойчивее к выбросам); Пуассоновская потеря ⟺ счётные данные.

Вопрос: Метрика «выручка на пользователя» сильно скошена — что делать в A/B-тесте? — Либо логарифмировать (но тогда меняется интерпретация), либо использовать бутстрэп/перестановочный тест, либо винзоризовать выбросы, либо перейти на устойчивую метрику (медиана, доля покупателей).


Часть 2 из 17 конспекта для подготовки к собеседованиям на NLP/LLM-разработчика. Остальные части — в разделе «Собесы».

0,0
0 оценок
5★
0
4★
0
3★
0
2★
0
1★
0

Оставить отзыв

Нажмите на звезду для оценки от 1 до 5
Необязательно. Используется только для связи
0/2000

Комментарии

Все С ответами Проверенные Только 4-5★