Когда вы запускаете обучение или дообучение нейросети, один из главных параметров, который нужно настроить – это количество эпох (epochs). Если поставить слишком маленькое значение, модель ничего не поймет и будет выдавать случайный результат. Если слишком большое – она просто зазубрит ваши данные, но не сможет работать с новыми запросами в реальных условиях.
| Что разберем | Что это даст на практике |
| Что такое эпоха и как она работает | Поймете, за что именно вы платите временем и ресурсами видеокарты |
| Как связаны эпохи, батчи и итерации | Перестанете путать базовые настройки при запуске скриптов обучения |
| Как выбрать правильное количество эпох | Сможете задать адекватное значение для своей задачи без слепого угадывания |
| Что делать с недообучением и переобучением | Узнаете, как по графикам ошибок понять, когда пора останавливать процесс |
Что такое эпоха: быстрый ответ
Эпоха – это один полный проход всего обучающего набора данных через нейросеть.
Если у вас есть база из 10 000 отзывов покупателей на маркетплейсе, и вы учите нейросеть определять тональность текста (позитив или негатив), то одна эпоха завершится ровно в тот момент, когда сеть «прочитает» и проанализирует все 10 000 отзывов один раз.
Одной эпохи почти никогда не бывает достаточно. Обучение нейросети похоже на подготовку студента к экзамену: если прочитать учебник один раз, в голове останется только общая картина. Чтобы найти закономерности и научиться решать задачи, нужно прочитать материал несколько раз. Каждый новый проход того же самого учебника – это новая эпоха.
Разница между эпохами, батчами и итерациями
Главная ошибка новичков – путать эпохи с итерациями (шагами). Это приводит к тому, что обучение либо обрывается в самом начале, либо длится сутками и сжигает бюджет на аренду серверов.
Чтобы оперативная память видеокарты не переполнилась, данные никогда не загружают в нейросеть целиком. Их дробят на части. Отсюда возникают три связанных понятия:
- Размер батча (Batch Size) – количество примеров, которые нейросеть обрабатывает за один раз.
- Итерация или шаг (Iteration / Step) – один цикл обработки одного батча.
- Эпоха (Epoch) – состояние, когда все батчи прошли через сеть.
Пример расчета:
У вас есть 1 000 фотографий документов для обучения модели распознавания паспортов.
Вы установили Batch Size = 100 (сеть берет по 100 фото за раз).
Чтобы обработать всю тысячу, сети потребуется сделать 10 шагов (итераций).
Когда пройдут эти 10 шагов, завершится 1 эпоха.
Если вы поставили в настройках 50 эпох, то всего сеть сделает 500 шагов (10 шагов * 50 эпох).
Сколько эпох ставить: практические сценарии
Универсального числа эпох не существует. Значение зависит от объема данных, архитектуры сети и вашей задачи.
Сценарий 1: Дообучение готовой модели (Fine-tuning)
Если вы берете готовую большую модель (например, Llama или Stable Diffusion) и дообучаете ее на своих данных (например, загружаете 50 фотографий конкретного товара или 1000 диалогов вашей техподдержки), вам нужно мало эпох.
Рабочий диапазон: от 3 до 15 эпох. Если поставить больше, модель «забудет» свои изначальные знания и переобучится.
Сценарий 2: Обучение небольшой сети с нуля
Если вы строите простую модель для табличных данных (например, предсказание оттока клиентов из базы в 50 000 строк), сети потребуется время на поиск закономерностей с нуля.
Рабочий диапазон: от 50 до 200 эпох.
Сценарий 3: Адаптация под сложный стиль
Если вы тренируете LoRA-модель для генерации изображений в очень специфичном стиле (например, корпоративная изометрия), и у вас всего 20-30 картинок в датасете, модель должна увидеть их много раз.
Рабочий диапазон: от 100 до 150 эпох.
Главные ошибки при выборе количества эпох
В процессе обучения сеть вычисляет «ошибку» (Loss) – насколько сильно ее ответы расходятся с правильными. Оценивать количество эпох нужно именно по поведению этой ошибки на тренировочных и тестовых данных.
Ошибка 1: Недообучение (Underfitting)
В чем проблема: Вы поставили слишком мало эпох (например, 5 вместо 50). Сеть не успела найти закономерности.
Как распознать: Ошибка (Loss) все еще быстро падает на графике, когда процесс обучения внезапно завершается. На практике модель выдает случайный шум или отвечает наугад.
Решение: Увеличить количество эпох минимум в 2-3 раза и запустить обучение заново.
Ошибка 2: Переобучение (Overfitting)
В чем проблема: Вы поставили слишком много эпох (например, 500 там, где хватило бы 50).
Как распознать: На графике ошибка на тренировочных данных продолжает падать почти до нуля, а ошибка на тестовых (новых) данных вдруг начинает расти.
К чему приводит: Нейросеть идеально, вплоть до пикселя или буквы, зазубривает ваши обучающие данные. Но если дать ей новые данные, которых не было в датасете, она выдаст полный бред. Она потеряла способность к обобщению.
Решение: Использовать метод Early Stopping (ранняя остановка).
Ограничения и неочевидные случаи
Правило Early Stopping (Ранней остановки)
В реальной практике инженеры редко пытаются угадать точное число эпох. Стандартный рабочий подход: задать заведомо большое число эпох (например, 1000) и включить в коде параметр Early Stopping.
Как это работает: скрипт следит за ошибкой на тестовой выборке. Если в течение заданного количества эпох (например, 10) ошибка не снижается или начинает расти, обучение принудительно прерывается. Модель сохраняется в той точке, где качество было максимальным.
Больше эпох не исправят плохие данные
Если ваша разметка кривая (в папке «кошки» лежат собаки, а отзывы размечены случайным образом), увеличение числа эпох только ухудшит ситуацию. Сеть просто быстрее и надежнее выучит ваши ошибки. Если модель не учится после 30-50 эпох, проблема в 90% случаев в датасете, а не в настройках.
Влияние Learning Rate (шага обучения)
Количество эпох напрямую связано с параметром Learning Rate (скорость обучения).
Если Learning Rate высокий, сеть учится быстро, и ей нужно меньше эпох, но она может проскочить оптимальное решение.
Если Learning Rate низкий, сеть учится аккуратно, но эпох потребуется в разы больше, что увеличит время аренды GPU.
Коротко о главном
- Эпоха – это один просмотр нейросетью всего вашего датасета от начала до конца.
- Итерация – это обработка одного кусочка данных (батча). Эпоха состоит из множества итераций.
- Для дообучения готовых моделей обычно хватает 3-15 эпох. Для обучения с нуля счет идет на десятки и сотни.
- Слишком мало эпох приведут к тому, что модель ничего не поймет. Слишком много – к тому, что она зазубрит данные и провалится на реальных задачах.
- Чтобы не угадывать, всегда используйте Early Stopping: ставьте эпохи с запасом, а скрипт сам остановит обучение, когда модель перестанет умнеть.