Epoch
머신러닝에서 에포크(epoch)가 무엇이며 모델 학습에 어떤 영향을 미치는지 학습하십시오. 최적화를 탐색하고 과적합을 방지하며 Ultralytics YOLO26을 쉽게 학습시키는 방법을 알아보십시오.
에포크는 머신 러닝 알고리즘이 전체 학습 데이터셋을 한 번 완전히 통과하는 과정을 의미합니다. 이 과정 동안 모델은 데이터의 모든 샘플을 사용하여 내부 파라미터를 정확히 한 번 업데이트할 기회를 갖게 됩니다. 딥러닝의 맥락에서, 신경망이 복잡한 패턴을 효과적으로 학습하기 위해 한 번의 통과만으로는 부족한 경우가 많습니다. 따라서 학습은 일반적으로 여러 에포크에 걸쳐 진행되며, 이를 통해 학습 알고리즘이 반복적으로 이해도를 개선하고 예측값과 실제 정답 간의 오차를 최소화할 수 있습니다.
Link to this section최적화에서 에포크의 역할#
The primary goal of training is to adjust model weights to minimize a specific loss function. Optimization algorithms, such as stochastic gradient descent (SGD) or the Adam optimizer, use the error calculated during each epoch to guide these adjustments. As the number of epochs increases, the model generally shifts from a state of high error (random guessing) to lower error (learned patterns).
그러나 적절한 에포크 수를 선택하는 것은 하이퍼파라미터 튜닝에서 매우 중요한 요소입니다.
- 에포크가 너무 적은 경우: 이는 모델이 데이터의 기본 추세를 아직 파악하지 못한 상태인 과소적합으로 이어질 수 있습니다.
- 에포크가 너무 많은 경우: 이는 흔히 과적합을 초래하며, 모델이 새로운 데이터에 일반화하는 대신 학습 데이터의 노이즈까지 암기하게 됩니다. 이를 방지하기 위해 개발자는 종종 검증 데이터의 성능을 모니터링하고 일반화 성능이 더 이상 개선되지 않을 때 학습을 중단하는 조기 종료와 같은 기법을 사용합니다.
Link to this section에포크 vs 배치 vs 반복(Iteration)#
초보자가 "에포크"를 관련 용어와 혼동하는 것은 흔한 일입니다. 학습 루프를 올바르게 구성하려면 이러한 개념의 계층 구조를 이해하는 것이 필수적입니다:
- 에포크(Epoch): 전체 데이터셋을 한 번 완전히 통과하는 과정.
- 배치(Batch): 동시에 처리되는 데이터셋의 일부분입니다. 데이터셋이 너무 커서 GPU 메모리에 한꺼번에 담을 수 없는 경우가 많기 때문에, 배치 사이즈로 정의된 더 작은 그룹으로 나눕니다.
- 반복(Iteration): 모델의 가중치를 한 번 업데이트하는 것입니다. 데이터셋에 1,000개의 이미지가 있고 배치 사이즈가 100이라면, 한 에포크를 완료하는 데 10번의 반복이 필요합니다.
Link to this section실제 애플리케이션 사례#
필요한 에포크 수는 작업의 복잡성과 데이터의 규모에 따라 크게 달라집니다.
- 의료 영상 분석: MRI 스캔에서 종양을 감지하는 것과 같은 의료 영상 분석에서는 정확도가 무엇보다 중요합니다. 이러한 작업을 위해 학습된 모델은 종종 수백 번의 에포크를 수행합니다. 이처럼 광범위한 학습을 통해 합성곱 신경망(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번 반복해서 학습하도록 지시합니다. 각 주기 동안 모델은 순전파와 역전파를 수행하여 탐지 성능을 개선합니다.






