Overfitting

overfitting — хорошее совпадение с обучением без переноса на новое

Раздел
Обучение
Обновлено
11.08.26

Overfitting, или переобучение, возникает, когда модель всё точнее подстраивается под обучающие примеры, но хуже работает на новых данных. В генерации это часто выглядит как навязчивое повторение фона, позы, одежды или композиции датасета.

Коротко

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

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

Обучение нужно не ради обучающего набора

Модель оптимизируют на доступных примерах, но ценность появляется на данных, которых она не видела. Эта способность называется обобщением.

Если ошибка на обучающем наборе уменьшается, это лишь подтверждает, что оптимизатор справляется со своей непосредственной задачей. Чтобы судить об обобщении, нужна отдельная проверка. Классическая картина переобучения выглядит так:

  • train loss продолжает снижаться;
  • validation loss сначала улучшается, затем перестаёт улучшаться или растёт;
  • разрыв между ними увеличивается.

Такой рисунок хорошо объясняет термин, но не является единственным возможным сигналом. У генеративных моделей численная ошибка и воспринимаемое качество могут расходиться. Портрет способен выглядеть убедительно и при этом плохо переноситься в новые сцены. Поэтому к loss добавляют содержательные тесты.

Train, validation и test выполняют разные роли

Данные обычно делят на три части:

Часть Для чего она нужна
Train Обновление параметров модели
Validation Выбор гиперпараметров, длительности и чекпоинта
Test Финальная оценка уже выбранного решения

Если после каждого запуска смотреть test и менять обучение под его результат, test постепенно становится ещё одним validation-набором. Итоговая оценка выходит слишком оптимистичной.

Для изображений важен и способ разделения. Два почти одинаковых кадра из одной фотосессии по разные стороны split создают утечку: validation формально отдельный, но почти повторяет train. Честнее делить данные по сессиям, исходным видео, персонажам или другим группам, внутри которых кадры тесно связаны.

Как переобучение выглядит в персонализации изображений

У LoRA, Textual Inversion или другого способа персонализации симптомом становится не высокая похожесть сама по себе. Похожесть как раз может быть целью. Проблема начинается, когда вместе с нужным субъектом неизбежно приходят случайные признаки датасета.

Например:

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

Последний эффект близок к language drift: значение общего слова вроде «собака» или «человек» смещается в сторону конкретного обученного экземпляра. В DreamBooth для защиты классового prior была предложена отдельная prior-preservation loss; её цель и результаты описаны в исходной статье DreamBooth.

Небольшая проверочная сетка

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

  1. знакомая сцена, близкая к train;
  2. новый фон и освещение;
  3. непривычный ракурс;
  4. другая одежда или материал;
  5. сочетание субъекта с новым объектом;
  6. общий класс без персональной метки;
  7. те же prompts без адаптера.

Несколько фиксированных seed показывают устойчивость, а не один случайно удачный пример. Сравнение последовательных чекпоинтов на одной сетке помогает увидеть момент, когда узнаваемость ещё растёт, а управляемость уже начинает снижаться.

При этом проверка должна соответствовать реальному использованию. Если адаптер создаётся только для одного неизменного костюма, сохранение этого костюма не является ошибкой. Overfitting определяется не абстрактной «гибкостью вообще», а переносом на целевую задачу.

Почему это происходит

Переобучение возникает не из-за одного параметра. Риск складывается из нескольких факторов:

  • обучающие данные плохо представляют будущие условия;
  • примеров мало или они почти дублируют друг друга;
  • подписи не отделяют субъект от фона, позы и одежды;
  • обучаемая часть модели имеет избыточную ёмкость для задачи;
  • обновления слишком велики или продолжаются слишком долго;
  • регуляризация не соответствует масштабу и типу обучения;
  • validation содержит утечки или слишком мало сценариев.

Поэтому универсальная таблица «столько фотографий, эпох, rank и dropout» быстро вводит в заблуждение. Один набор может быть разнообразным при небольшом объёме, другой — состоять из сотни почти одинаковых кадров.

Что помогает вернуть обобщение

Рабочая комбинация зависит от причины, но варианты обычно относятся к четырём группам.

Данные

  • добавить действительно новые ракурсы, фоны и условия, а не соседние кадры той же серии;
  • удалить дубли и конфликтующие подписи;
  • явно описать переменные признаки, чтобы они не сливались с концептом;
  • отделить validation до начала подбора параметров.

Объём обновлений

  • выбрать более ранний чекпоинт;
  • уменьшить число обновлений или learning rate;
  • ограничить число и ёмкость обучаемых параметров.

Регуляризация

  • использовать подходящую штрафную функцию, dropout или weight decay, если реализация поддерживает их корректно;
  • применять prior-preservation или другие контрольные задачи, когда важно сохранить общий класс;
  • осторожно использовать аугментации, не меняющие идентичность концепта.

Оценка

  • отслеживать validation отдельно от train;
  • сохранять промежуточные состояния;
  • сравнивать их на неизменной сетке условий;
  • остановить обучение, когда целевая проверка перестаёт улучшаться.

Early stopping — не магический отдельный алгоритм. Это решение оставить более раннее состояние по заранее выбранному validation-сигналу. Если сама проверка плохо отражает будущую задачу, ранняя остановка выберет не тот момент.

Memorization — родственное, но не равное понятие

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

Они часто встречаются вместе, но логически различаются. Модель может запомнить редкий пример и всё же хорошо работать на большей части целевого распределения. И наоборот, она может плохо обобщать из-за смещения датасета, не выдавая буквальных копий.

Для генеративных моделей memorization несёт отдельный риск приватности и авторских совпадений. Исследование Extracting Training Data from Diffusion Models показало, что отдельные обучающие изображения можно извлекать из diffusion-моделей. Сам по себе визуальный симптом «не меняется фон» ещё не доказывает буквальное хранение исходного файла.

С чем ещё путают

  • Underfitting. Модель не справляется даже с train; и знакомые, и новые примеры получаются плохо.
  • Catastrophic forgetting. Дообучение разрушает прежние способности модели. Это может сопровождать overfitting, но описывает другую потерю.
  • Language drift. Общее слово меняет значение в сторону персонального концепта.
  • Dataset bias. Данные не представляют целевой мир; модель может честно выучить смещённое распределение.
  • Неудачный prompt. Один слабый запрос не доказывает переобучение; нужен повторяемый разрыв между знакомыми и новыми условиями.
  • Слишком сильный adapter weight. Большая сила при генерации способна сделать признаки навязчивыми даже у неплохо обученного адаптера.

Можно ли исправить готовый переобученный адаптер

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

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

Частые вопросы

Падающий train loss означает overfitting?

Нет. Он лишь показывает улучшение на обучающей задаче. Для диагноза нужен разрыв с validation или устойчивое ухудшение на новых сценариях.

Сколько примеров защищает от переобучения?

Фиксированного порога нет. Важны независимость и разнообразие примеров относительно будущей задачи. Небольшой, но разнообразный набор иногда полезнее большой серии почти одинаковых кадров.

Большой rank LoRA обязательно переобучается?

Нет. Более высокая ёмкость может повысить риск, но результат зависит от данных, оптимизации и регуляризации. Само значение rank без контекста ничего не доказывает.

Всегда ли validation loss должен расти?

Нет. Он может остановиться, шуметь или продолжать медленно снижаться, пока воспринимаемая гибкость уже ухудшается. Для генерации численную метрику дополняют проверочными изображениями и задачами.

Можно ли выбирать лучший чекпоинт по test-набору?

Технически можно, но после такого выбора test больше не даёт независимую финальную оценку. Для выбора служит validation, а test сохраняет роль последней проверки.

Главное

Overfitting — не просто «слишком много эпох» и не синоним запоминания. Это потеря переноса: модель всё лучше соответствует train, но хуже решает целевую задачу на новых данных.

В персонализации изображений переобучение видно по навязчивым деталям датасета и снижению управляемости. Честный validation, разнообразные сценарии и сравнение промежуточных чекпоинтов показывают проблему точнее, чем одна цифра loss или удачный портрет.

Источники