Результаты обучения
- Различать недообучение, приемлемое обучение и переобучение по ошибкам на обучающих и проверочных данных.
- Интерпретировать кривые обучения и разрыв между train loss и validation loss.
- Объяснять связь сложности модели с систематической ошибкой и вариативностью результата.
- Выбирать обоснованные способы уменьшения недообучения и переобучения.
- Описывать корректную роль validation и test выборок при настройке модели.
1. Две ошибки вместо одной
Обучающая выборка показывает, насколько модель согласуется с примерами, на которых подбирались параметры. Проверочная выборка помогает оценить, насколько найденная закономерность переносится на данные, не участвовавшие в обновлении параметров. Для сравнения используйте одну и ту же метрику или функцию потерь и сопоставимые условия.
Низкая ошибка на обучении сама по себе недостаточна. Нам важно одновременно видеть, что происходит на обучающих и проверочных данных. Тестовую выборку оставляют для итоговой независимой оценки — её не следует многократно использовать для выбора модели.
2. Недообучение: модель не уловила закономерность
Недообучение (underfitting) возникает, когда модель слишком проста для структуры задачи, признаки недостаточны, ограничения слишком сильны или обучение не успело найти подходящие параметры. В результате модель ошибается уже на обучающих примерах, а на проверочных данных ситуация обычно не становится существенно лучше.
Типичный сигнал — высокая обучающая потеря вместе с высокой проверочной потерей. Возможные действия: проверить качество признаков и постановку задачи, выбрать более выразительную модель, ослабить чрезмерную регуляризацию или убедиться, что оптимизация действительно сошлась. Просто обучать дольше полезно не всегда: сначала проверьте, что ограничение связано именно с недостаточным обучением.
3. Приемлемое обучение: закономерность переносится
При хорошем обобщении ошибка на обучающих данных невелика, а проверочная ошибка остаётся близкой к ней и не ухудшается существенно. Небольшая разница естественна: выборки содержат разные объекты и случайные колебания. Важны не абсолютное равенство значений, а устойчивость результата и соответствие метрик требованиям задачи.
Проверочная ошибка не обязана быть ниже обучающей. Регуляризация, dropout и другие методы могут намеренно усложнять поведение модели во время обучения, поэтому train loss иногда оказывается выше. Сравнивайте значения в контексте конкретного алгоритма и одинакового способа вычисления метрики.
4. Переобучение: модель подстроилась под выборку
Переобучение (overfitting) возникает, когда модель слишком точно воспроизводит обучающие примеры, включая случайный шум и частные особенности выборки. На обучении ошибка продолжает снижаться, но на проверочных данных перестаёт улучшаться или растёт. Модель хорошо описывает знакомые примеры, но хуже переносит закономерность на новые.
Причины могут сочетаться: избыточная сложность модели, мало разнообразных данных, шумные метки, утечка информации, слишком долгий подбор параметров или многократная настройка по одной и той же validation выборке. Большая разница между train и validation loss — полезный сигнал, но не самостоятельное доказательство: проверьте распределения, разбиение и корректность измерения.
5. Кривые обучения и ранняя остановка
По мере обучения train loss часто продолжает уменьшаться. Validation loss сначала может снижаться, а затем перестать улучшаться и начать расти. Это один из типичных сценариев переобучения. Ранняя остановка (early stopping) выбирает момент, когда проверочная метрика достигла лучшего значения, и восстанавливает соответствующие параметры модели.
Нельзя выбирать эпоху по тестовой выборке. Для early stopping используется validation-набор или внутренний механизм валидации. На практике задают patience — сколько эпох ждать улучшения, — чтобы не реагировать на единичное колебание. Если validation loss шумный, полезно смотреть на динамику и повторяемость, а не на один скачок.
6. Сложность модели: компромисс, а не соревнование
Увеличение сложности часто позволяет лучше подогнать обучающие данные, поэтому train error обычно снижается. Но validation error может сначала уменьшаться, а после некоторой точки расти: модель начинает описывать случайные особенности выборки. Это иллюстрация компромисса между смещением (bias) и разбросом (variance), а не универсальный закон для каждой модели и датасета.
Высокое смещение означает, что выбранное семейство моделей систематически не может выразить нужную зависимость. Высокая дисперсия означает, что результат сильно меняется при изменении обучающей выборки. Эти термины помогают думать о причинах ошибки, но реальные диагностики требуют экспериментов, корректных разбиений и анализа данных.
7. Что делать: сначала диагноз, затем метод
Если высоки и train, и validation loss, проверьте недостаточную выразительность модели, признаки, регуляризацию и сходимость оптимизации. Если train loss низкий, а validation loss заметно выше или растёт, проверьте утечку, шум и различия выборок; затем рассмотрите упрощение модели, регуляризацию, больше разнообразных данных, аугментацию или early stopping.
Не применяйте все способы одновременно. Меняйте один фактор за раз, фиксируйте validation-протокол и сравнивайте результат. Дополнительные данные помогают не всегда: они должны быть релевантными и представлять будущие условия. Регуляризация тоже не универсальное лекарство — слишком сильная регуляризация может вернуть модель к недообучению.
8. Небольшой эксперимент с полиномиальной моделью
Сравним модели разной сложности на одной синтетической задаче. Линейная модель может оказаться слишком простой для волнообразной зависимости; полином умеренной степени способен описать её лучше; полином высокой степени может начать реагировать на шум и отдельные точки. Конкретные значения зависят от случайного разбиения — поэтому важно сравнивать train и validation, а не объявлять одну степень универсально лучшей.
В примере validation используется для выбора сложности. После выбора подхода итоговую оценку следует выполнить на отдельной test выборке, которая не участвовала в подборе. В реальной работе также проверяют несколько разбиений или используют кросс-валидацию, если объём данных позволяет.
Пример: сравнение полиномиальных моделей разной сложности
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
rng = np.random.default_rng(7)
X = np.sort(rng.uniform(0, 1, 36)).reshape(-1, 1)
y = np.sin(2 * np.pi * X[:, 0]) + rng.normal(0, 0.18, len(X))
X_train, X_val, y_train, y_val = train_test_split(
X, y, test_size=0.25, random_state=7
)
for degree in (1, 4, 12):
model = make_pipeline(
PolynomialFeatures(degree=degree, include_bias=False),
LinearRegression()
)
model.fit(X_train, y_train)
train_mse = mean_squared_error(y_train, model.predict(X_train))
val_mse = mean_squared_error(y_val, model.predict(X_val))
print(degree, round(train_mse, 3), round(val_mse, 3))Первая колонка — степень полинома, затем MSE на обучающей и проверочной выборках. С ростом степени обучающая ошибка может снижаться, но проверочная не обязана следовать за ней. Запустите пример несколько раз с другим random_state и сравните устойчивость. Не используйте validation как окончательный test.
Практическое задание
Посмотрите на два эксперимента. В первом train loss = 0.42 и validation loss = 0.45; во втором train loss = 0.08 и validation loss = 0.91. При одинаковой метрике и сопоставимых выборках второй случай требует проверки на переобучение. Но прежде чем менять архитектуру, убедитесь, что разбиение корректно, нет утечки и validation набор отражает ожидаемые условия.
Источники и дополнительное чтение
Словарь урока
Ситуация, когда модель не описывает важную закономерность даже в обучающих данных.
Подстройка модели под частные особенности и шум обучающей выборки в ущерб работе на новых данных.
Способность модели сохранять качество на новых объектах из целевой области применения.
Значение функции потерь на данных, использованных для подбора параметров.
Значение функции потерь на отдельной выборке для выбора модели и настройки.
Разница между ошибкой на проверочных и обучающих данных при сопоставимом измерении.
Способность семейства моделей выражать разнообразные зависимости.
Систематическая ошибка, связанная с ограничениями модели или предположениями.
Чувствительность обученного результата к изменениям обучающей выборки.
Остановка обучения по динамике validation-метрики с сохранением лучшего состояния.
Самопроверка
Вопрос 1
Если train loss и validation loss оба высоки, что вероятнее всего следует проверить первым?
Вопрос 2
Какой сигнал типичен для переобучения?
Вопрос 3
Для чего используют validation выборку?
Вопрос 4
Почему не следует многократно подбирать модель по test выборке?
Вопрос 5
Что может уменьшить переобучение?
Вопрос 6
Что означает большой generalization gap?
Вопрос 7
Какое действие может помочь при недообучении?
Вопрос 8
Правда ли, что низкая train loss доказывает хорошее качество на новых данных?