Overfitting
머신러닝에서 과적합(Overfitting)의 원인과 증상을 탐구해 보십시오. Ultralytics YOLO26을 사용하여 높은 분산을 방지하고 일반화 성능을 개선하는 방법을 배우십시오.
과적합(Overfitting)은 머신러닝에서 모델이 학습 데이터를 너무 과하게 학습하여, 데이터의 근본적인 분포보다는 노이즈나 무작위 변동까지 학습하는 현상을 의미합니다. 과적합된 모델은 새롭고 보지 못한 데이터에 적용되는 일반적인 패턴을 학습하는 대신, 학습 세트에 포함된 특정 예시들을 효과적으로 암기하게 됩니다. 이로 인해 학습 데이터에서는 뛰어난 성능을 보이지만, 실제 환경에서는 일반화 능력이 떨어지게 됩니다. 이는 종종 "높은 분산(high variance)"이라고 표현되는데, 이는 모델의 예측 결과가 학습에 사용된 특정 데이터셋에 따라 크게 달라짐을 의미합니다.
Link to this section과적합이 발생하는 이유#
과적합의 주요 원인은 가용한 데이터 양에 비해 모델의 복잡도가 지나치게 높기 때문입니다. 신경망의 규모가 너무 크면, 즉 레이어나 파라미터가 너무 많으면 학습 예시를 쉽게 암기할 수 있게 됩니다. 그 외의 기여 요인은 다음과 같습니다:
- 불충분한 학습 데이터: 작은 데이터셋은 전체 모집단에는 존재하지 않는 허위 상관관계를 포함할 수 있습니다. 제한된 데이터로 학습된 모델은 이러한 우연한 패턴을 학습하기 쉽습니다.
- 데이터 노이즈 및 이상치: 학습 데이터에 포함된 높은 수준의 노이즈나 대표성이 없는 이상치는 모델을 오도하여, 진정한 신호가 아닌 이상치에 맞추도록 내부 파라미터를 조정하게 만들 수 있습니다.
- 학습 기간 연장: 너무 많은 에포크(epochs) 동안 학습하면 모델이 학습 세트의 노이즈에 맞추어 가중치를 계속 조정하게 됩니다. 이는 종종 검증 데이터를 사용하여 모니터링됩니다.
Link to this section과적합 vs. 과소적합#
과적합을 과소적합(underfitting)과 구분하는 것이 중요합니다. 과적합은 (노이즈를 포함한) 너무 많은 세부 사항을 학습하는 것이라면, 과소적합은 모델이 너무 단순하여 데이터의 근본적인 구조를 전혀 파악하지 못할 때 발생합니다. 과소적합된 모델은 학습 데이터와 새로운 데이터 모두에서 성능이 떨어지며, 흔히 높은 편향(high bias)을 보입니다. 이 두 극단 사이의 균형을 맞추는 것을 편향-분산 트레이드오프(bias-variance tradeoff)라고 합니다.
Link to this section과적합 방지#
엔지니어들은 과적합을 완화하고 모델의 견고성을 개선하기 위해 여러 기법을 사용합니다:
- 정규화(Regularization): L1/L2 정규화나 드롭아웃 레이어 추가와 같은 기법은 학습 중 페널티나 무작위성을 도입하여, 모델이 특정 특성에 지나치게 의존하는 것을 방지합니다.
- 조기 종료(Early Stopping): 검증 세트에서 손실 함수(loss function)를 모니터링하면, 학습 정확도가 계속 상승하더라도 새로운 데이터에 대한 성능이 더 이상 개선되지 않을 때 학습을 중단할 수 있습니다.
- 데이터 증강(Data Augmentation): 데이터 증강을 사용하여 학습 세트의 크기와 다양성을 인위적으로 증가시키면 모델이 정확한 이미지를 암기하기가 더 어려워집니다.
- 교차 검증(Cross-Validation): k-fold 교차 검증과 같은 기법을 사용하면 모델이 서로 다른 데이터 부분집합에서 테스트되도록 보장하여, 성능에 대한 더 신뢰할 수 있는 추정치를 제공합니다.
Link to this section실제 사례#
과적합은 프로덕션 환경에 AI를 배포할 때 심각한 결과를 초래할 수 있습니다:
- 의료 진단: 헬스케어 분야의 AI에서 피부암을 탐지하기 위해 학습된 모델은 학습 이미지에 포함된 조명 조건이나 자 표시(ruler markings)에 과적합될 수 있습니다. 조명이나 장비가 다른 병원에 배포되었을 때, 모델은 관련 없는 배경 단서에 의존했기 때문에 악성 병변을 제대로 식별하지 못할 수 있습니다.
- 금융 예측: 주가 예측 모델은 특정하고 반복 불가능한 사건(예: 일회성 경제 위기)에 의해 주도된 과거 시장 트렌드에 과적합될 수 있습니다. 이러한 모델은 근본적인 시장 역학을 학습하기보다는 과거의 이상치를 암기했기 때문에 미래의 주가 변동을 정확하게 예측하지 못할 가능성이 높습니다.
Link to this section코드 예제: YOLO26을 이용한 조기 종료#
Ultralytics Platform 또는 로컬 학습 스크립트를 사용하여 조기 종료 대기 시간(patience)을 설정함으로써 과적합을 방지할 수 있습니다. 이는 검증 피트니스가 설정된 에포크 횟수 동안 개선되지 않으면 학습을 중단시킵니다.
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)Link to this section관련 개념#
- 일반화(Generalization): 새로운, 이전에 본 적 없는 데이터에 적응하고 잘 작동하는 모델의 능력으로, 과적합과는 반대되는 개념입니다.
- 교차 검증(Cross-Validation): 통계적 분석 결과가 독립적인 데이터 세트에 어떻게 일반화될지 평가하기 위한 기법입니다.
- 정규화(Regularization): 주어진 학습 세트에 함수를 적절히 맞추고 과적합을 피함으로써 오류를 줄이는 데 사용되는 방법입니다.






