Overfitting
overfitting — модель «зазубривает» датасет вместо обобщения
Overfitting (переобучение) — главная проблема тренировки нейросетей. Модель начинает «зазубривать» обучающий датасет вместо того, чтобы обобщать закономерности. В LoRA это видно так: лицо рисуется идеально на тех же сценах, что были в датасете, и «уплывает» на новых. Главные признаки: тренировочная ошибка падает, тестовая растёт; LoRA теряет гибкость. Решения: меньше эпох, больше разнообразия в датасете, регуляризация, early stopping.
Коротко
Коротко. Overfitting — это когда модель «зазубрила» датасет вместо понимания закономерности. В тренировке LoRA это видно как «прилипание» к датасету: лицо рисуется только в позах и сценах из обучающих кадров, новые промпты ломаются. Главные индикаторы: тренировочная ошибка падает, тестовая растёт. Лечение: меньше эпох, больше разнообразия в датасете, регуляризация, early stopping.
Что это такое
Иллюстратор тренирует LoRA на 20 портретах актёра. Все портреты сделаны в студии: ровный белый фон, ровный свет, схожая поза. Запускает тренировку на 20 эпох.
После тренировки тестирует:
- Промпт
sks person, studio shoot— лицо идеально, ракурс из датасета. - Промпт
sks person on the beach, sunny— лицо «уплывает», фон не получается, поза кривая. - Промпт
sks person in cyberpunk city, neon— модель «отказывается» рисовать, появляются артефакты или возвращается студийный фон.
Это overfitting. Модель «выучила» не лицо как абстракцию, а «лицо + студия + ровный свет» как одно целое. Любой новый контекст ломает работу.
Чтобы понять причину, удобно представить тренировку как изучение математики. Если ученику показать 20 примеров 2 + 2 = 4, он либо:
- Underfit: ничего не выучит.
- Good fit: поймёт, что плюс — это сложение, и решит
3 + 7 = 10. - Overfit: запомнит наизусть, что «2 + 2 = 4», но на
3 + 7ответит «42, как в книжке».
В нейросетях overfit — то же самое: модель «запоминает» датасет, а не обобщает.
Как это работает
Технические признаки overfitting:
- Train loss (ошибка на тренировочных картинках) падает с каждой эпохой.
- Val loss (ошибка на тестовых, не виданных моделью) сначала падает, потом растёт.
- Точка, где val loss начинает расти, — момент начала переобучения.
В стандартной тренировке без validation сложно увидеть это напрямую. Поэтому тестировать чекпоинты каждой эпохи — основной способ диагностики.
Главные причины overfitting:
- Слишком много эпох / шагов для размера датасета.
- Слишком высокий learning rate на малом датасете.
- Однотипный датасет (только студия, только селфи, только один ракурс).
- Слишком мало данных для сложности задачи.
- Слишком большая модель для маленького датасета (например, full fine-tune SDXL на 5 примерах).
Главные способы борьбы:
- Меньше эпох — самое простое и эффективное.
- Разнообразие датасета — разные фоны, ракурсы, освещение.
- Регуляризация — Weight Decay 0.01–0.1, dropout 0.05–0.1.
- Early stopping — остановить тренировку, когда тестовый loss перестал улучшаться.
- Меньше параметров — снизить rank LoRA с 64 до 16.
- Class images в DreamBooth — prior preservation loss защищает от «забывания».
Пример на практике
Тренер LoRA, 25 портретов актёра. Все в одной студии.
Первая попытка: 20 эпох, batch 1, LR 1e-4. Результат — overfit. Лицо рисуется только в студии, на улице — артефакты.
Анализ датасета: 25 фотографий из одной фотосессии. Один фон, одно освещение. Модель «выучила» что sks person = студийное освещение + белый фон.
Решение 1 — снизить эпохи: тренирует на 10 эпох. Результат лучше, но всё ещё «прилипает».
Решение 2 — расширить датасет: добавляет 15 фотографий с улицы, дома, на природе. Всего 40 кадров, теперь разнообразные. Тренирует на 12 эпох с LR 1e-4. Результат — лицо чёткое на любом фоне, LoRA «гибкая».
Главный вывод: разнообразие датасета побеждает переобучение лучше, чем меньшее число эпох. Если есть возможность собрать более разнообразный датасет — собирайте.
С чем часто путают
- Overfitting и Underfitting — overfitting это «зазубрил», underfitting — «ничего не выучил». Противоположные крайности, общее правило балансировки.
- Overfitting и переобучение в обычной речи — в обиходе «переобучить» = «выучить заново». В ML overfitting — это порок обучения, когда модель потеряла общность.
- Overfitting и Memorization — memorization это «запомнить наизусть», overfitting — следствие memorization. У трансформеров есть смежная проблема — копирование текста из датасета.
- Train Loss и Val Loss — train loss всегда падает с обучением. Val loss падает до точки overfitting, потом растёт. Разница — главный диагностический признак.
Частые ошибки и заблуждения
- «Если train loss падает — всё хорошо». Не всегда. Train loss падает и в случае overfitting, и в случае хорошего обучения. Главное — val loss.
- «Меньше эпох всегда решает overfitting». Не всегда. На однотипном датасете overfit наступает за 3–5 эпох — снижать не помогает.
- «Если LoRA плохо работает, надо больше тренировать». Часто наоборот. Если LoRA «жесткая» — нужно МЕНЬШЕ эпох или больше разнообразия.
- «Большой rank всегда лучше». Большой rank (64+) даёт больше выразительности, но и больше шансов на overfit. Стандарт 16–32 для большинства задач.
- «Регуляризация ухудшает обучение». Лёгкая регуляризация (WD 0.01, dropout 0.05) почти не влияет на финальное качество, но защищает от overfit.
Связанные термины
- Underfitting — противоположность; модель «недоучилась».
- Epoch — единица тренировки; число эпох — главный регулятор overfit.
- Learning Rate — связан с overfit через скорость обновления.
- Validation Set — отдельные данные для проверки обобщения.
- Early Stopping — техника останавливать тренировку до overfit.
- Regularization — техники против overfit (WD, dropout).
- Class Images / Prior Preservation — защита от overfit в DreamBooth.
Частые вопросы
Как понять, что LoRA переобучилась? Самый простой тест — попросить нарисовать концепт в новой сцене, не похожей на тренировочные. Если результат — артефакты или возврат к тренировочным сценам, это overfit.
Можно ли «исправить» переобученную LoRA?
Полностью — нет, нужна новая тренировка. Можно частично сгладить: использовать с меньшим weight (<lora:name:0.5> вместо 0.9), скомбинировать с другим LoRA.
Сколько фотографий нужно, чтобы избежать overfit? Минимум 15–20 разнообразных. Чем больше разнообразия (фон, ракурс, освещение, мимика), тем меньше шанс переобучиться. 50 разнообразных лучше 100 однотипных.
Что такое early stopping? Техника: периодически проверять модель на validation-set; если val loss перестал улучшаться 2–3 эпохи подряд — остановить тренировку. В kohya_ss это реализуется через ручную остановку и тестирование чекпоинтов.
Помогает ли регуляризация в LoRA?
Да. Параметры network_alpha (контролирует силу обновлений), dropout (0.05–0.1) и weight_decay (0.01) помогают. По умолчанию kohya_ss выставляет разумные значения.
FLUX-LoRA тоже переобучается? Да, концепция та же. Но FLUX обычно более устойчив за счёт большой базовой модели — overfit наступает медленнее. Стандартные 8–12 эпох обычно безопасны.
Главное
Overfitting — главная проблема тренировки моделей. В LoRA выглядит как «прилипание» к датасету: концепт рисуется только в тренировочных сценах. Главное лечение — разнообразие датасета: разные фоны, ракурсы, освещение. Второе — меньше эпох, если датасет ограничен. Тестируйте чекпоинты каждой эпохи на новых промптах — это основной способ диагностики. И помните золотое правило: 30 разнообразных фотографий побеждает 100 однотипных.