Практика ML

Debugging models

Отладка моделей

актуальноТекущий рабочий стандарт

Систематический поиск причины, почему модель не учится или ведёт себя странно.

Ключевые тезисы

  • Первый тест: переобучите модель на 10 объектах до нулевой ошибки.
  • Проверьте порядок меток, нормализацию и распределение градиентов.
  • Слишком хороший результат — повод искать утечку, а не радоваться.

Подробный разбор

2 подтем — раскройте любую, чтобы увидеть объяснение, формулы, примеры и интерактивные графики.

1

Чек-лист отладки

По порядку — от самых частых причин к редким.

  1. Переобучите модель на 10 объектах. Если она не может выучить их наизусть — баг в коде, а не в данных.
  2. Проверьте порядок и соответствие X и y после всех перестановок и мержей.
  3. Посмотрите на распределения признаков в train и test: они должны совпадать.
  4. Проверьте масштабирование: расходящийся почти всегда означает его отсутствие.
  5. Посмотрите на нормы градиентов: нули означают затухание, NaN — взрыв или деление на ноль.
  6. Сравните с константным бейзлайном: модель обязана быть лучше.
На практике

Если метрика подозрительно высока — это не удача. Ищите утечку: признак из будущего, дубликаты между частями выборки, target encoding без out-of-fold.

2

Воспроизводимость

Без неё отладка превращается в гадание.

import os, random, numpy as np, torch
def seed_all(seed=42):
    random.seed(seed); np.random.seed(seed)
    torch.manual_seed(seed); torch.cuda.manual_seed_all(seed)
    os.environ["PYTHONHASHSEED"] = str(seed)
    torch.backends.cudnn.deterministic = True
На практике

Полная детерминированность на GPU иногда невозможна (атомарные операции, разный порядок сложения). Тогда фиксируйте seed и оценивайте разброс по нескольким запускам — это честнее, чем делать вид, что результат точный.

Связанные темы

Рабочий цикл ML-инженера