Epoch
Узнай, что такое эпоха в машинном обучении и как она влияет на обучение модели. Исследуй оптимизацию, избегай переобучения и обучай Ultralytics YOLO26 с легкостью.
Эпоха представляет собой один полный цикл прохождения через весь обучающий набор данных алгоритмом машинного обучения. В процессе этого модель получает возможность один раз обновить свои внутренние параметры на основе каждого примера из данных. В контексте глубинного обучения одного прохода редко бывает достаточно для того, чтобы нейронная сеть могла эффективно усвоить сложные закономерности. Поэтому обучение обычно включает множество эпох, позволяя алгоритму обучения итеративно совершенствовать свое понимание и минимизировать ошибку между прогнозами и реальными данными.
Link to this sectionРоль эпох в оптимизации#
Основная цель обучения — скорректировать веса модели так, чтобы минимизировать определенную функцию потерь. Алгоритмы оптимизации, такие как стохастический градиентный спуск (SGD) или оптимизатор Adam, используют ошибку, рассчитанную во время каждой эпохи, для управления этими корректировками. По мере увеличения количества эпох модель обычно переходит из состояния высокой ошибки (случайные угадывания) к более низкой ошибке (выученные закономерности).
Однако выбор правильного количества эпох является критическим аспектом настройки гиперпараметров.
- Слишком мало эпох: Это может привести к недообучению, когда модель еще не уловила фундаментальную тенденцию данных.
- Слишком много эпох: Это часто приводит к переобучению, при котором модель запоминает обучающий шум, вместо того чтобы обобщать новые данные. Чтобы предотвратить это, разработчики часто отслеживают производительность на проверочных данных и используют такие методы, как ранняя остановка, чтобы прекратить обучение, когда обобщающая способность перестает улучшаться.
Link to this sectionЭпоха vs. Пакет vs. Итерация#
Новичкам часто бывает сложно отличить «эпоху» от связанных понятий. Понимание иерархии этих концепций необходимо для правильной настройки циклов обучения:
- Эпоха: Один полный проход через весь набор данных.
- Пакет (Batch): Подмножество данных, обрабатываемое одновременно. Поскольку наборы данных часто слишком велики, чтобы целиком поместиться в видеопамять GPU, они делятся на группы меньшего размера, определяемые размером пакета.
- Итерация: Одно обновление весов модели. Если в наборе данных 1000 изображений, а размер пакета составляет 100, то для завершения одной эпохи потребуется 10 итераций.
Link to this sectionРеальные приложения#
Количество необходимых эпох сильно варьируется в зависимости от сложности задачи и объема данных.
- Медицинский анализ изображений: В медицинском анализе изображений, например при обнаружении опухолей на МРТ-снимках, точность имеет первостепенное значение. Модели, обученные для таких задач, часто работают сотни эпох. Такое длительное обучение гарантирует, что сверточная нейронная сеть (CNN) сможет распознать тонкие аномалии, отличающие злокачественную ткань от здоровой, что потенциально спасает жизни.
- Автономное вождение: Для автономных транспортных средств модели обнаружения объектов должны надежно идентифицировать пешеходов, знаки и другие транспортные средства. Обучение таких устойчивых систем обычно требует огромных наборов данных, таких как COCO или Objects365. Несмотря на огромный размер набора данных, модели все равно требуется несколько эпох для сходимости к решению, которое будет хорошо обобщаться при различных погодных условиях и уровне освещения.
Link to this sectionУправление циклами обучения с помощью кода#
При использовании современных фреймворков, таких как Ultralytics YOLO, определение количества эпох является простым аргументом в команде обучения. Инструменты, такие как Ultralytics Platform, помогают визуализировать кривые потерь для каждой эпохи, чтобы определить оптимальную точку остановки.
В следующем примере показано, как задать количество эпох при обучении модели YOLO26:
from ultralytics import YOLO
# Load the YOLO26n model (nano version for speed)
model = YOLO("yolo26n.pt")
# Train the model for 50 epochs
# The 'epochs' argument determines how many times the model sees the entire dataset
results = model.train(data="coco8.yaml", epochs=50, imgsz=640)В этом фрагменте аргумент epochs=50 указывает движку обучения пройти через набор данных coco8.yaml 50 раз. Во время каждого цикла модель выполняет прямое распространение и обратное распространение, чтобы улучшить свои возможности обнаружения.






