Оптимизация обучения

Early Stopping

Ранняя остановка

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

Направления: Глубокое обучение · Оптимизация

Обучение останавливается, когда валидационная метрика перестала улучшаться.

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

  • Patience задаёт, сколько эпох ждать улучшения.
  • Обязательно восстанавливать лучшие веса, а не последние.
  • Бесплатная и очень эффективная .

Какую задачу решает

У итеративного обучения есть точка, после которой качество на новых данных начинает падать, хотя на обучающих продолжает расти: модель перешла от изучения закономерностей к запоминанию шума. просто фиксирует , когда валидационная метрика перестала улучшаться, и возвращает лучший чекпойнт.

Это самая дешёвая форма : ничего не нужно подбирать, кроме терпения — числа итераций без улучшения, после которого обучение прекращается. Для она к тому же заменяет подбор числа деревьев: поставьте заведомо большое значение и позвольте алгоритму остановиться самому.

Типичная ошибка настройки

patience=5 при обучении с шумной валидационной метрикой почти гарантированно остановит обучение слишком рано — на случайном локальном ухудшении, после которого модель ещё улучшалась бы десятки эпох. Разумные значения: 10–20 эпох для сетей, 50–100 итераций для (там итерации дешевле и шумнее). И обязательно restore_best_weights=True: без него вы получите модель в остановки, то есть на несколько шагов хуже лучшей найденной.

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

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

best, wait = None, 0
for epoch in range(max_epochs):
    train_one_epoch()
    score = evaluate(val)
    if best is None or score > best.score:
        best, wait = snapshot(model, score), 0
    else:
        wait += 1
        if wait >= patience:
            break
model.load_state_dict(best.weights)   # обязательный шаг
  • Patience должна учитывать шум валидации: слишком малая остановит обучение на случайном ухудшении.
  • Всегда восстанавливайте лучшие веса, а не оставляйте последние.
  • Валидация для — это уже потраченная выборка: финальную оценку делайте на отдельном тесте.
-3-113-4-2024xy
степень полинома3
ошибка на train0.568
ошибка на test0.395
диагнозбаланс
Ранняя остановка — способ остановиться в точке, где тестовая ошибка минимальна

model = LGBMClassifier(n_estimators=5000, learning_rate=0.03)
model.fit(X_tr, y_tr,
          eval_set=[(X_val, y_val)], eval_metric="auc",
          callbacks=[early_stopping(stopping_rounds=200, verbose=False)])
print(model.best_iteration_)
Ставим заведомо большое число деревьев и позволяем валидации решить, где остановиться
На практике

После подбора числа итераций модель часто переобучают на train + val с найденным best_iteration, слегка увеличив его пропорционально росту выборки.

Где применяется

  • Стандартная практика: число деревьев подбирается автоматически.
  • Обучение Экономит время и защищает от на длинных прогонах.
  • Ограниченный бюджетОбучение прекращается, как только перестаёт приносить пользу.

Плюсы, минусы и альтернативы

Плюсы

  • Не требует подбора коэффициента .
  • Экономит вычисления: обучение не идёт дольше нужного.
  • Работает с любой итеративной моделью.
  • Совместима с другими видами .

Минусы

  • Требует отдельной валидационной выборки — на малых данных это дорого.
  • Валидационная метрика шумна, и остановка может сработать на флуктуации.
  • Многократное использование валидации для остановки постепенно подгоняет модель под неё.
  • Плохо сочетается с косинусным расписанием, рассчитанным на полное число шагов.

Брать, если

  • Обучается — практически всегда.
  • Длительное обучение сети и есть .

Не брать, если

  • Данных так мало, что отделить валидацию нельзя.
  • Используется расписание , рассчитанное на фиксированную длину.

Чем заменяют

Видеолекции

Тайм-кода именно на эту тему в записях нет. Но глава «Оптимизация обучения» разобрана в курсе целиком — с той оговоркой, что место в записи придётся искать самому.

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

Переобучение и регуляризация

Кому эта тема нужна

Профильная компетенция для ролей: ML Engineer, CV-инженер, Исследователь, Инженер речи.

Усиливает профиль: NLP-инженер.

Проверить себя

Тема встречается в тесте по направлениям — ошибки приведут обратно на эту страницу.

Следующий шагПроверить себя: Глубокое обучениеТема встречается в этом тесте 2 раза. Ошибка приведёт обратно на эту страницу — с объяснением, что именно не сошлось.Перейти →

Глава «Оптимизация обучения» последний раз правилась . Нашли ошибку — напишите.