Overfitting
머신러닝에서 과적합(Overfitting)의 원인과 증상을 탐구해 보십시오. Ultralytics YOLO26을 사용하여 높은 분산을 방지하고 일반화 성능을 개선하는 방법을 배우십시오.
과적합(Overfitting)은 머신러닝에서 모델이 학습 데이터를 너무 과하게 학습하여, 데이터의 근본적인 분포보다는 노이즈나 무작위 변동까지 학습하는 현상을 의미합니다. 과적합된 모델은 새롭고 보지 못한 데이터에 적용되는 일반적인 패턴을 학습하는 대신, 학습 세트에 포함된 특정 예시들을 효과적으로 암기하게 됩니다. 이로 인해 학습 데이터에서는 뛰어난 성능을 보이지만, 실제 환경에서는 일반화 능력이 떨어지게 됩니다. 이는 종종 "높은 분산(high variance)"이라고 표현되는데, 이는 모델의 예측 결과가 학습에 사용된 특정 데이터셋에 따라 크게 달라짐을 의미합니다.
과적합이 발생하는 이유#
과적합(overfitting)의 주된 원인은 가용 데이터 양에 비해 모델의 복잡도가 지나치게 높기 때문입니다. 만약 neural network가 너무 크거나(즉, 층이나 파라미터가 너무 많으면) 학습 예제를 쉽게 암기해 버릴 수 있습니다. 그 외의 기여 요인으로는 다음이 있습니다:
- 불충분한 학습 데이터: 작은 데이터셋은 전체 모집단에는 존재하지 않는 허위 상관관계를 포함할 수 있습니다. 제한된 데이터로 학습된 모델은 이러한 우연한 패턴을 학습하기 쉽습니다.
- 데이터 노이즈 및 이상치: training data에 포함된 높은 수준의 노이즈나 대표성이 없는 이상치는 모델을 오도하여, 진정한 신호가 아닌 이상값에 맞춰 내부 파라미터를 조정하게 만듭니다.
- 연장된 학습 기간: 너무 많은 epochs 동안 학습을 진행하면 모델은 학습 셋의 노이즈에 맞춰질 때까지 가중치를 계속해서 정제하게 됩니다. 이는 종종 validation data를 사용하여 모니터링됩니다.
과적합 vs. 과소적합#
과적합을 underfitting과 구분하는 것이 중요합니다. 과적합이 너무 많은 세부 사항(노이즈 포함)을 학습하는 것과 관련이 있다면, 과소적합은 모델이 너무 단순하여 데이터의 기저 구조를 전혀 포착하지 못할 때 발생합니다. 과소적합된 모델은 학습 데이터와 새로운 데이터 모두에서 성능이 떨어지며, 흔히 높은 편향(bias)을 초래합니다. 이 두 극단 사이의 균형을 맞추는 것을 bias-variance tradeoff라고 합니다.
과적합 방지#
엔지니어들은 과적합을 완화하고 모델의 견고성을 개선하기 위해 여러 기법을 사용합니다:
- 정규화(Regularization): L1/L2 정규화 또는 dropout layers 추가와 같은 기법은 학습 중에 페널티나 무작위성을 도입하여 모델이 특정 피처에 과도하게 의존하는 것을 방지합니다.
- 조기 종료(Early Stopping): 검증 셋에서 loss function을 모니터링하면, 학습 정확도가 계속 상승하더라도 보이지 않는 데이터에 대한 성능 향상이 멈추는 즉시 학습을 중단할 수 있습니다.
- 데이터 증강(Data Augmentation): data augmentation을 사용하여 학습 셋의 크기와 다양성을 인위적으로 증가시키면 모델이 정확한 이미지를 암기하기 어려워집니다.
- 교차 검증(Cross-Validation): k-fold cross-validation 같은 기법을 사용하면 모델이 다양한 데이터 서브셋에서 테스트되도록 보장하여 성능에 대한 더 신뢰할 수 있는 추정치를 제공합니다.
실제 사례#
과적합은 프로덕션 환경에 AI를 배포할 때 심각한 결과를 초래할 수 있습니다:
- 의료 진단: AI in healthcare 분야에서 피부암을 탐지하도록 학습된 모델은 학습 이미지에 있는 조명 조건이나 자(ruler) 표시에 과적합될 수 있습니다. 조명이나 장비가 다른 클리닉에 배포될 경우, 모델이 관련 없는 배경 단서에 의존했기 때문에 악성 병변을 올바르게 식별하지 못할 수 있습니다.
- 금융 예측: 주가 예측 모델은 특정하고 반복 불가능한 사건(예: 일회성 경제 위기)에 의해 주도된 과거 시장 트렌드에 과적합될 수 있습니다. 이러한 모델은 근본적인 시장 역학을 학습하기보다는 과거의 이상치를 암기했기 때문에 미래의 주가 변동을 정확하게 예측하지 못할 가능성이 높습니다.
코드 예제: Ultralytics YOLO26을 사용한 조기 종료(Early Stopping)#
Ultralytics Platform 또는 로컬 학습 스크립트를 사용하여 조기 종료 대기 시간(patience)을 설정함으로써 과적합을 방지할 수 있습니다. 이렇게 하면 설정된 에폭 수 동안 검증 피트니스(validation fitness)가 향상되지 않을 경우 학습이 중단됩니다.
from ultralytics import YOLO
# Load the YOLO26 model (latest generation)
model = YOLO("yolo26n.pt")
# Train with early stopping enabled (patience=50 epochs)
# If validation metrics don't improve for 50 epochs, training stops.
results = model.train(data="coco8.yaml", epochs=100, patience=50)관련 개념#
- 일반화(Generalization): 새로운, 이전에 본 적 없는 데이터에 적응하고 잘 작동하는 모델의 능력으로, 과적합과는 반대되는 개념입니다.
- 교차 검증: 통계 분석 결과가 독립된 데이터 셋에 generalize되는 정도를 평가하기 위한 기법입니다.
- 정규화(Regularization): 주어진 학습 세트에 함수를 적절히 맞추고 과적합을 피함으로써 오류를 줄이는 데 사용되는 방법입니다.






