머신 러닝에서 과적합을 식별, 예방 및 해결하는 방법을 알아보세요. 모델 일반화 및 실제 성능을 개선하기 위한 기술을 알아보세요.
과적합은 다음에서 발생합니다. 머신 러닝(ML)에서는 모델이 학습 데이터에 대한 학습 데이터의 특정 세부 사항과 노이즈가 새로운 데이터에 대한 성능에 부정적인 영향을 미칠 정도로 학습할 때 발생합니다. 기본적으로 모델은 학습에 필요한 기본 패턴을 학습하기보다는 예시를 암기하는 것이 아니라 일반화에 필요한 일반화. 그 결과 개발 중에는 높은 높은 정확도를 달성하지만 실제 배포 시에는 신뢰할 수 있는 예측을 제공하지 못합니다.
지도 학습의 맥락에서 목표는 은 보이지 않는 입력, 즉 테스트 데이터에 대해 잘 작동하는 모델을 만드는 것입니다. 테스트 데이터. 과적합은 일반적으로 모델이 다음과 같은 경우에 발생합니다. 사용 가능한 데이터의 양에 비해 모델이 너무 복잡할 때 발생하며, 이러한 상황은 종종 분산이 높다고 설명됩니다. 이러한 모델은 데이터 세트의 무작위 변동이나 '노이즈'를 마치 중요한 특징인 것처럼 포착합니다. 이 딥 러닝(DL)의 핵심 과제입니다, 개발자는 복잡성과 유연성 사이에서 균형을 잡아야 하며, 이를 흔히 편향성-변동성 트레이드오프.
애플리케이션에 따라 과잉 피팅은 심각한 결과를 초래할 수 있습니다:
개발자는 일반적으로 훈련 중 손실 함수를 모니터링하여 과적합을 detect . 손실 함수를 모니터링하여 과적합을 감지합니다. 명확한 지표는 훈련 손실이 계속 감소하는 반면에 검증 데이터 손실이 증가하기 시작하는 경우입니다. 이를 방지하기 위해 이를 해결하기 위해 몇 가지 기술이 사용됩니다:
이 개념을 다음과 구별하는 것이 중요합니다. 과소 맞춤과 구별하는 것이 중요합니다. 과적합은 모델이 너무 복잡하고 너무 복잡하고 학습 데이터에 맞추기 위해 "너무 열심히" 노력하는 경우(높은 분산)가 과적합인 반면에, 과소적합은 모델이 너무 단순하여 데이터의 기본 추세를 포착하지 못할 때 발생합니다(높은 편향성). 두 경우 모두 예측 성능이 저하되지만 성능이 저하되지만, 그 이유는 정반대입니다. 최적의 모델을 얻으려면 이 두 가지 극단 사이를 탐색해야 합니다.
다음과 같은 최신 라이브러리 ultralytics 예방 전략의 실행을 간소화할 수 있습니다. 예를 들어
사용자가 쉽게 적용할 수 있습니다. 조기 정지 및 중도 탈락
훈련할 때 YOLO11 모델입니다.
from ultralytics import YOLO
# Load the YOLO11 model (recommended for latest SOTA performance)
model = YOLO("yolo11n.pt")
# Train with 'patience' for early stopping and 'dropout' for regularization
# This helps the model generalize better to new images
results = model.train(
data="coco8.yaml",
epochs=100,
patience=10, # Stop if validation loss doesn't improve for 10 epochs
dropout=0.1, # Randomly drop 10% of units to prevent co-adaptation
)

