COMRAD404 / GLOSSARY

Epoch (эпоха)

epoch

Epoch (эпоха) в обучении моделей — это обычно один полный проход по обучающему набору данных. Но в Keras и похожих стеках эпоха может задаваться числом шагов и не совпадать с полным проходом.

TL;DR

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

Epoch (эпоха) в обучении моделей — это обычно один полный проход по обучающему набору данных. Но это правило не абсолютно: в актуальных API Keras эпоха может быть и операционной границей, заданной числом шагов через steps_per_epoch, поэтому она не всегда совпадает с полным проходом по данным.

Английский термин: epoch. Также встречается: эпоха обучения, проход по данным. Последний вариант полезен для интуиции, но не всегда точен: Keras FAQ прямо описывает epoch как произвольную отсечку, обычно равную одному полному проходу по тренировочному датасету, и использует её как границу для логирования и периодической оценки.

Простыми словами

Грубо говоря, эпоха — это один «круг» обучения. Если у вас есть набор примеров, модель не смотрит на них все сразу: она проходит их порциями, а когда дошла до конца набора, это обычно и называют одной эпохой.

Можно представить это как подготовку к экзамену по карточкам. Вы пролистали всю колоду один раз — это одна эпоха. Затем перемешали карточки и прошли их ещё раз — вторая эпоха. В исследовательской работе One Pass ImageNet именно так и описывается типичный сценарий глубокого обучения: несколько проходов по датасету с перемешиванием на каждой эпохе.

Как это работает

Во встроенных циклах обучения Keras и TensorFlow данные обычно делятся на небольшие порции — батчи. Затем fit() проходит эти батчи один за другим, обновляя параметры модели, а после завершения эпохи может записать метрики, запустить валидацию и callbacks. В TensorFlow документация отдельно отмечает, что датасет сбрасывается после каждой эпохи.

Датасет
  -> batch 1
  -> batch 2
  -> ...
  -> batch N
  -> конец epoch
       -> логирование метрик
       -> validation
       -> callbacks / checkpoint
  -> следующая epoch
  1. Фреймворк получает обучающие данные.
  2. Данные разбиваются на батчи; если вам нужно освежить этот термин, см. Batching (пакетная обработка).
  3. На каждом батче модель делает шаг обучения.
  4. После последнего батча эпоха завершается, и Keras может сохранить значения loss и метрик в History.history по эпохам.
  5. В конце эпохи может запускаться validation; в Keras FAQ и руководстве TensorFlow именно граница эпохи используется для периодической оценки.

Важная оговорка: в Keras 3 эпоха считается проходом по x и y целиком только если не задан steps_per_epoch. Если этот параметр указан, эпоха заканчивается после заданного числа шагов. Поэтому формула «1 epoch = весь датасет» верна по умолчанию, но не во всех конфигурациях.

В PyTorch обучающий tutorial использует термин чуть более операционно: epoch — это одна внешняя итерация цикла оптимизации, внутри которой обычно есть train loop и validation/test loop. А словарь scikit-learn дополнительно предупреждает, что в экосистеме в целом термины iteration и epoch применяются не полностью единообразно.

Где применяется

  • Управление длительностью обучения. Параметр epochs в fit() задаёт, сколько таких циклов выполнить.
  • Логирование метрик. В Keras значения loss и метрик складываются в History.history по эпохам, поэтому графики обучения обычно читают именно в этом разрезе.
  • Валидация по расписанию. В Keras и TensorFlow validation обычно запускается в конце каждой эпохи, а не после каждого батча.
  • Сохранение и возобновление обучения. В Keras FAQ рекомендуется BackupAndRestore: callback сохраняет номер эпохи и веса и позволяет продолжить обучение с последней завершённой эпохи. Это тесно связано с понятием checkpoint.

Практический пример

Ниже — минимальный сценарий на Keras, где эпоха по умолчанию означает полный проход по x и y:

history = model.fit(
    x,
    y,
    epochs=3,
    batch_size=32,
    validation_data=(x_val, y_val)
)

print(history.history.keys())

Что здесь важно:

  • epochs=3 просит выполнить три эпохи.
  • Если steps_per_epoch не задан, Keras трактует эпоху как проход по всему x и y.
  • Если передан validation_data, validation выполняется в конце каждой эпохи.
  • Метрики сохраняются в history.history по эпохам, а не по каждому отдельному батчу.

Теперь вариант, где эпоха перестаёт быть синонимом «полного прохода по данным»:

model.fit(
    dataset,
    epochs=3,
    steps_per_epoch=100
)

Здесь Keras завершит эпоху после 100 шагов. Если dataset бесконечно повторяется или просто больше этого объёма, одна эпоха будет лишь частью полного прохода. Отдельная тонкость касается валидации: документация Keras отмечает, что если вы потребляете только часть validation-датасета через validation_steps, то в каждой эпохе будут использоваться те же validation-сэмплы из этого частичного диапазона.

Чем отличается от…

Термин Что обычно означает Где возникает путаница
Epoch Один цикл обучения; часто полный проход по обучающим данным В Keras может задаваться через steps_per_epoch; тогда это не обязательно полный проход
Batch Небольшая порция данных, на которой выполняется один шаг обучения Иногда говорят «модель увидела данные», но фактически она видит их батчами внутри эпохи; см. batching
Iteration / step Один шаг цикла обучения, обычно на одном батче В некоторых библиотеках и текстах терминология непоследовательна; scikit-learn прямо предупреждает об этом
Полный проход по данным Интуитивное описание эпохи по умолчанию Полезно для объяснения, но не покрывает случаи с повторяющимся датасетом и steps_per_epoch

Ограничения и заблуждения

  • Заблуждение: одна epoch всегда равна одному полному проходу по датасету. Точнее: это верно по умолчанию для Keras при обучении на конечных x и y, но перестаёт быть строгим правилом, если задан steps_per_epoch или данные повторяются бесконечно.
  • Заблуждение: epoch — это полностью стандартизованный термин во всех ML-библиотеках. Точнее: scikit-learn предупреждает, что в экосистеме встречается непоследовательное употребление iteration и epoch.
  • Заблуждение: число эпох само по себе говорит, сколько данных модель реально обработала. Точнее: без знания размера батча, числа шагов и типа датасета это не всегда так.
  • Ограничение документации: старые страницы Keras 2 или legacy-формулировки в разных стеках могут отличаться от текущего Keras 3 API. Если вы документируете рабочий пайплайн, сверяйтесь именно с той версией и тем backend, которые используете.

Редакционное ограничение: эта статья описывает актуальную на 2026-08-18 трактовку термина по документации Keras, TensorFlow, PyTorch и scikit-learn из предоставленного набора источников. Для других библиотек и нестандартных циклов обучения формулировки могут отличаться.

Практический вердикт: когда вы видите в конфиге или статье «10 epochs», не считайте автоматически, что модель сделала десять полных проходов по датасету. Сначала проверьте steps_per_epoch, тип входных данных, схему валидации и сохранения состояния между эпохами.

Связанные термины и инструменты

Для полного контекста обучения полезно разобрать ещё несколько соседних понятий: Batching объясняет, как данные режутся на пакеты внутри эпохи; Checkpoint — как сохраняется состояние модели на границе эпох; Chunking — как готовят длинные тексты до обучения или индексации; для более широкого словаря дообучения можно также посмотреть DPO.

Источники

Вопросы и ответы

Epoch и iteration — это одно и то же?

Не всегда. В Keras и TensorFlow epoch обычно означает внешний цикл, состоящий из множества шагов по батчам, а step или iteration чаще относится к одному такому шагу. Но scikit-learn отдельно предупреждает, что терминология в экосистеме не полностью единообразна.

Всегда ли одна эпоха равна полному проходу по датасету?

Нет. В Keras это верно по умолчанию для конечных x и y, но при steps_per_epoch эпоха заканчивается после заданного числа шагов. Если датасет повторяется бесконечно, эпоха вообще становится удобной операционной отсечкой, а не естественным концом набора данных.

Когда запускается validation?

В Keras FAQ и руководстве TensorFlow validation выполняется в конце каждой эпохи. Если используется validation_steps и берётся только часть validation-датасета, Keras указывает, что на каждой эпохе будут использоваться те же validation-сэмплы из этой части.

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

Да, в Keras для этого рекомендуется BackupAndRestore. По FAQ этот callback сохраняет номер эпохи и веса, чтобы обучение можно было возобновить с последней завершённой эпохи, а не начинать заново.

Источники

SOURCES

Вопросы и ответы

FAQ
Epoch и iteration — это одно и то же?

Не всегда. В Keras и TensorFlow epoch обычно означает внешний цикл из множества шагов по батчам, а step или iteration чаще относится к одному такому шагу. При этом scikit-learn предупреждает, что терминология в экосистеме не полностью единообразна.

Всегда ли одна эпоха равна полному проходу по датасету?

Нет. В Keras это верно по умолчанию для конечных x и y, но при steps_per_epoch эпоха заканчивается после заданного числа шагов. Если датасет повторяется бесконечно, epoch становится операционной границей, а не естественным концом набора данных.

Когда запускается validation?

В Keras FAQ и руководстве TensorFlow validation выполняется в конце каждой эпохи. Если используется validation_steps и берётся только часть validation-датасета, Keras указывает, что в каждой эпохе будут использоваться те же validation-сэмплы из этой части.

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

Да. Keras FAQ рекомендует BackupAndRestore: callback сохраняет номер эпохи и веса и позволяет возобновить обучение с последней завершённой эпохи.

Читайте также

LINKS