Вы строили модели, тренировали нейронные сети и настраивали гиперпараметры. Вы знаете scikit-learn, TensorFlow и PyTorch.
Но когда интервьюер спрашивает: "Как бы вы справились с дисбалансом классов в продакшен системе обнаружения мошенничества?" или "Объясните математически компромисс смещение-дисперсия."
Это руководство даёт 60+ реальных вопросов ML собеседований от Google, Meta, Amazon и топовых ИИ стартапов.
Что Оценивают ML Собеседования
- Фундаменты: Алгоритмы, математика, статистика
- Практический опыт: Решение реальных проблем
- System design: ML системы в продакшене
- Код: Реализация алгоритмов с нуля
- Коммуникация: Объяснение сложных концепций просто
Фундаментальные Вопросы ML
1. Объясните компромисс смещение-дисперсия
Смещение (Bias) — насколько далеки предсказания от истинных значений в среднем. Высокое смещение = недообучение.
Дисперсия (Variance) — насколько меняются предсказания с разными данными обучения. Высокая дисперсия = переобучение.
Общая Ошибка = Смещение² + Дисперсия + Неустранимая Ошибка
На практике:
- Увеличить сложность → уменьшает смещение, увеличивает дисперсию
- Добавить регуляризацию → уменьшает дисперсию
- Больше данных → уменьшает дисперсию без влияния на смещение
2. Что такое регуляризация?
Регуляризация добавляет штрафной член к функции потерь для предотвращения переобучения.
L1 (Lasso):
- Создаёт разреженные решения
- Хороша для отбора признаков
L2 (Ridge):
- Сжимает веса к нулю
- Лучше работает с коррелированными признаками
В нейронных сетях:
- Dropout: Случайно обнуляет нейроны
- Early stopping: Останавливает обучение при росте validation loss
3. Как работать с несбалансированными данными?
На уровне данных:
- Oversampling меньшинства (SMOTE)
- Undersampling большинства
- Аугментация данных
На уровне алгоритма:
- Веса классов
- Cost-sensitive learning
- Фреймирование как обнаружение аномалий
Оценка:
- НЕ используйте accuracy! Используйте:
- Precision, Recall, F1-score
- PR-AUC (лучше ROC-AUC)
4. Разница между bagging и boosting?
Bagging:
- Обучает модели на bootstrap выборках параллельно
- Уменьшает дисперсию
- Пример: Random Forest
Boosting:
- Обучает модели последовательно, каждая исправляет ошибки предыдущей
- Уменьшает смещение
- Примеры: XGBoost, LightGBM
Вопросы о Deep Learning
5. Объясните backpropagation математически
Backpropagation вычисляет градиенты потерь по каждому весу используя правило цепочки.
Ключевой инсайт: Градиенты текут назад, умножаясь на каждом слое. Поэтому:
- Затухающие градиенты: Sigmoid/tanh сжимают → используйте ReLU
- Взрывающиеся градиенты: Градиенты накапливаются → gradient clipping
6. Зачем нужны функции активации?
Без функций активации: Нейросеть = линейное преобразование независимо от глубины.
| Функция | Плюсы | Минусы |
|---|---|---|
| ReLU | Быстрая, нет затухания | Мёртвые нейроны |
| Leaky ReLU | Предотвращает мёртвые нейроны | — |
| GELU | Лучше для трансформеров | Сложная |
| Sigmoid | Выход [0,1] | Затухающий градиент |
7. Объясните механизм внимания и трансформеры
Внимание позволяет модели фокусироваться на релевантных частях входа:
Attention(Q, K, V) = softmax(QKᵀ / √dₖ) V
- Q (Query): Что ищем
- K (Key): С чем сопоставляем
- V (Value): Что извлекаем
Почему трансформеры работают:
- Параллельная обработка
- Дальние зависимости
- Масштабируемость
System Design для ML
8. Спроектируйте рекомендательную систему
Архитектура:
Пользователь → Feature Store → Генерация Кандидатов → Ранжирование → Результаты
Компоненты:
- Генерация кандидатов (Recall): Коллаборативная фильтрация, контент-based
- Ранжирование (Precision): Сложная модель, оптимизирует CTR
- Re-ranking: Разнообразие, бизнес-правила
9. Спроектируйте систему обнаружения мошенничества
Требования:
- Реальное время (< 100мс)
- Высокая точность
- Эволюционирующие паттерны
Признаки:
- Признаки транзакции
- Агрегированные признаки
- Графовые признаки
- Поведенческие признаки
Код с Нуля
10. Реализуйте логистическую регрессию
class LogisticRegression:
def __init__(self, lr=0.01, n_iters=1000):
self.lr = lr
self.n_iters = n_iters
def _sigmoid(self, z):
return 1 / (1 + np.exp(-np.clip(z, -500, 500)))
def fit(self, X, y):
n_samples, n_features = X.shape
self.weights = np.zeros(n_features)
self.bias = 0
for _ in range(self.n_iters):
z = np.dot(X, self.weights) + self.bias
predictions = self._sigmoid(z)
dw = (1/n_samples) * np.dot(X.T, (predictions - y))
db = (1/n_samples) * np.sum(predictions - y)
self.weights -= self.lr * dw
self.bias -= self.lr * db
Практикуйте с ИИ
Interview Whisper позволяет:
- Практиковать объяснение ML концепций
- Получать feedback о ясности
- Покрывать теорию И практику
Начните Практиковать ML Вопросы с ИИ
Связанные Статьи
Разница между чтением о ML и прохождением собеседований — практика.