Обучение останавливается, когда валидационная метрика перестала улучшаться.
Ключевые тезисы
- Patience задаёт, сколько эпох ждать улучшения.
- Обязательно восстанавливать лучшие веса, а не последние.
- Бесплатная и очень эффективная .
Какую задачу решает
У итеративного обучения есть точка, после которой качество на новых данных начинает падать, хотя на обучающих продолжает расти: модель перешла от изучения закономерностей к запоминанию шума. просто фиксирует , когда валидационная метрика перестала улучшаться, и возвращает лучший чекпойнт.
Это самая дешёвая форма : ничего не нужно подбирать, кроме терпения — числа итераций без улучшения, после которого обучение прекращается. Для она к тому же заменяет подбор числа деревьев: поставьте заведомо большое значение и позвольте алгоритму остановиться самому.
patience=5 при обучении с шумной валидационной метрикой почти гарантированно остановит обучение слишком рано — на случайном локальном ухудшении, после которого модель ещё улучшалась бы десятки эпох. Разумные значения: 10–20 эпох для сетей, 50–100 итераций для (там итерации дешевле и шумнее). И обязательно restore_best_weights=True: без него вы получите модель в остановки, то есть на несколько шагов хуже лучшей найденной.
Подробный разбор
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 должна учитывать шум валидации: слишком малая остановит обучение на случайном ухудшении.
- Всегда восстанавливайте лучшие веса, а не оставляйте последние.
- Валидация для — это уже потраченная выборка: финальную оценку делайте на отдельном тесте.
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, слегка увеличив его пропорционально росту выборки.
Где применяется
- Стандартная практика: число деревьев подбирается автоматически.
- Обучение Экономит время и защищает от на длинных прогонах.
- Ограниченный бюджетОбучение прекращается, как только перестаёт приносить пользу.
Плюсы, минусы и альтернативы
Плюсы
- Не требует подбора коэффициента .
- Экономит вычисления: обучение не идёт дольше нужного.
- Работает с любой итеративной моделью.
- Совместима с другими видами .
Минусы
- Требует отдельной валидационной выборки — на малых данных это дорого.
- Валидационная метрика шумна, и остановка может сработать на флуктуации.
- Многократное использование валидации для остановки постепенно подгоняет модель под неё.
- Плохо сочетается с косинусным расписанием, рассчитанным на полное число шагов.
Брать, если
- Обучается — практически всегда.
- Длительное обучение сети и есть .
Не брать, если
- Данных так мало, что отделить валидацию нельзя.
- Используется расписание , рассчитанное на фиксированную длину.
Чем заменяют
Видеолекции
Тайм-кода именно на эту тему в записях нет. Но глава «Оптимизация обучения» разобрана в курсе целиком — с той оговоркой, что место в записи придётся искать самому.
Связанные темы
Переобучение и регуляризация
Regularization80%
Регуляризация · Оптимизация обученияЛюбое ограничение сложности модели, снижающее переобучение.
Weight Decay80%
Затухание весов · Оптимизация обученияПостепенное сжатие весов к нулю на каждом шаге оптимизации.
Overfitting80%
Переобучение · Практика MLМодель запомнила обучающую выборку вместе с шумом: train-метрика отличная, val — плохая.
Underfitting80%
Недообучение · Практика MLМодель слишком проста или недоучена: ошибка велика и на train, и на валидации.
Variance80%
Дисперсия · Математический справочникМера разброса значений вокруг среднего.
Random Forest80%
Случайный лес · Классическое машинное обучениеБэггинг деревьев со случайными подвыборками объектов и признаков: усреднение резко снижает дисперсию.
Всё, что названо в описании, разобрано здесь же или в соседней теме — переходы под каждым определением.
Patience (терпение)
Сколько итераций без улучшения ждать перед остановкой. Слишком мало — остановка на случайной флуктуации.
Разбор ниже: Как правильно останавливатьсяВосстановление лучших весов
Возвращается чекпойнт с лучшей валидационной метрикой, а не последний. Забыть об этом — типичная ошибка.
Разбор ниже: Как правильно останавливатьсяОтдельная валидация
Метрика, по которой останавливаемся, должна быть на данных, не участвующих в обучении.
Разбор ниже: Как правильно останавливатьсяРанняя остановка в бустинге
Заменяет подбор n_estimators: ставьте много деревьев и включайте остановку.
Профильная компетенция для ролей: ML Engineer, CV-инженер, Исследователь, Инженер речи.
Усиливает профиль: NLP-инженер.
Тема встречается в тесте по направлениям — ошибки приведут обратно на эту страницу.
Глава «Оптимизация обучения» последний раз правилась . Нашли ошибку — напишите.