Yolo 비전 선전
선전
지금 참여하기
용어집

에폭

머신 러닝의 획기적인 발전, 즉 모델 학습에 미치는 영향, 과적합을 방지하고 성능을 최적화하는 방법에 대해 Ultralytics YOLO 통해 알아보세요.

에포크는 머신러닝 알고리즘이 전체 훈련 데이터셋을 한 번 완전히 순환하는 것을 의미합니다. 이 과정에서 모델은 데이터 내 모든 샘플을 정확히 한 번씩 기반으로 내부 매개변수를 업데이트할 기회를 가집니다. 딥 러닝의 맥락에서, 단일 패스만으로는 신경망이 복잡한 패턴을 효과적으로 학습하기에 거의 충분하지 않습니다. 따라서 훈련은 일반적으로 여러 에포크를 포함하며, 이를 통해 학습 알고리즘은 반복적으로 이해를 정교화하고 예측값과 실제 기준값 간의 오차를 최소화할 수 있습니다.

최적화에서 시대의 역할

훈련의 주요 목표는 특정 손실 함수를 최소화하기 위해 모델 가중치를 조정하는 것입니다. 확률적 경사 하강법(SGD)이나 Adam 같은 최적화 알고리즘은 각 에포크 동안 계산된 오차를 활용하여 이러한 조정을 안내합니다. 에포크 수가 증가함에 따라 모델은 일반적으로 높은 오차 상태(무작위 추측)에서 낮은 오차 상태(학습된 패턴)로 전환됩니다.

그러나 적절한 에포크 수를 선택하는 것은 하이퍼파라미터 튜닝의 핵심적인 측면이다.

  • 에포크 수가 너무 적음: 이는 모델이 데이터의 근본적인 추세를 아직 포착하지 못한 상태인 언더피팅으로 이어질 수 있습니다.
  • 에포크 수가 너무 많음: 이는 종종 모델이 새로운 데이터에 대한 일반화 대신 훈련 과정의 잡음을 암기하는 과적합을 초래합니다. 이를 방지하기 위해 개발자들은 검증 데이터에서의 성능을 모니터링하고 일반화가 더 이상 개선되지 않을 때 훈련을 중단하는 조기 종료 같은 기법을 활용합니다.

에포크 vs. 배치 vs. 반복

초보자들은 흔히 "에포크(epoch)"를 관련 용어와 혼동합니다. 이러한 개념들의 계층 구조를 이해하는 것은 훈련 루프를 올바르게 구성하는 데 필수적입니다:

  • 에포크: 전체 데이터셋을 한 번 완전히 통과하는 것.
  • 배치: 동시에 처리되는 데이터 세트의 하위 집합. 데이터 세트는 종종 GPU 한 번에 모두 들어갈 수 없을 만큼 크기 때문에, 배치 크기로 정의된 더 작은 그룹으로 분할됩니다.
  • 반복: 모델 가중치에 대한 단일 업데이트. 데이터셋에 1,000개의 이미지가 있고 배치 크기가 100인 경우, 한 에포크를 완료하는 데 10번의 반복이 필요합니다.

실제 애플리케이션

The number of epochs required varies drastically depending on the complexity of the task and the size of the data.

  • 의료 영상 분석: 의료 영상 분석, 예를 들어 MRI 스캔에서 종양을 탐지하는 경우, 정확도가 가장 중요합니다. 이러한 작업을 위해 훈련된 모델은 종종 수백 에포크 동안 실행됩니다. 이 광범위한 훈련은 컨볼루션 신경망(CNN)이 악성 조직과 정상 조직을 구분하는 미세한 이상을 식별할 수 있도록 하여 생명을 구할 수 있는 가능성을 제공합니다.
  • 자율 주행: 자율 주행 차량의 경우, 물체 탐지 모델은 보행자, 표지판 및 다른 차량을 안정적으로 식별해야 합니다. 이러한 견고한 시스템을 훈련하는 데는 일반적으로 대규모 데이터 세트가 필요합니다. COCO 이나 Objects365와 같은 방대한 데이터셋이 필요합니다. 데이터셋 규모가 매우 크지만, 모델은 다양한 기상 조건과 조명 환경에 잘 일반화되는 해법에 수렴하기 위해 여전히 여러 에포크가 필요합니다.

코드로 훈련 주기 관리하기

현대적인 프레임워크를 사용할 때 Ultralytics YOLO와 같은 현대적인 프레임워크를 사용할 때, 에포크 수는 훈련 명령어에서 간단히 지정할 수 있는 인수입니다. Ultralytics 도구는 각 에포크별 손실 곡선을 시각화하여 최적의 중단 지점을 식별하는 데 도움을 줄 수 있습니다.

다음 예시는 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번 독립적으로 처리합니다. 각 사이클 동안 모델은 수행합니다. 전파역전파 탐지 능력을 개선하기 위해

Ultralytics 커뮤니티 가입

AI의 미래에 동참하세요. 글로벌 혁신가들과 연결하고, 협력하고, 성장하세요.

지금 참여하기