과적합 (Overfitting)
머신 러닝에서 과적합을 식별, 예방 및 해결하는 방법을 알아보세요. 모델 일반화 및 실제 성능을 개선하기 위한 기술을 알아보세요.
과적합은 모델이 새로운 미지의 데이터에 대한 성능에 부정적인 영향을 미칠 정도로 학습 데이터의 세부 사항과 노이즈를 학습할 때 발생하는 머신 러닝(ML)의 기본 개념입니다. 본질적으로 모델은 기본 패턴을 학습하는 대신 학습 세트를 암기합니다. 이로 인해 학습된 데이터에 대해 높은 정확도를 달성하지만 실제 데이터로 일반화하지 못하여 실제 응용 프로그램에 신뢰할 수 없게 됩니다. 좋은 일반화를 달성하는 것은 AI 개발의 주요 목표입니다.
과적합 식별 방법
과적합은 일반적으로 학습 과정에서 학습 데이터 세트와 별도의 검증 데이터 세트 모두에 대한 모델의 성능을 모니터링하여 식별됩니다. 과적합의 일반적인 징후는 학습 세트에 대한 손실 함수 값이 계속 감소하는 반면 검증 세트에 대한 손실은 증가하기 시작하는 경우입니다. 마찬가지로 학습 정확도는 계속 향상되지만 검증 정확도가 후속 에포크에 걸쳐 정체되거나 악화되면 모델이 과적합될 가능성이 높습니다. TensorBoard와 같은 도구는 이러한 메트릭을 시각화하고 이러한 문제를 조기에 진단하는 데 탁월합니다. Ultralytics HUB와 같은 플랫폼은 실험을 추적하고 모델을 평가하여 과적합을 감지하는 데 도움이 될 수도 있습니다.
과적합 vs. 과소적합
과적합과 과소적합은 머신 러닝에서 모델의 일반화 실패를 나타내는 두 가지 일반적인 문제입니다. 이는 본질적으로 반대되는 문제입니다.
- 과적합: 모델이 데이터에 비해 너무 복잡합니다(높은 분산). 학습 데이터에서 노이즈와 임의의 변동을 캡처하여 학습 중에는 뛰어난 성능을 보이지만 테스트 데이터에서는 성능이 저하됩니다.
- Underfitting: 모델이 너무 단순하여 데이터의 기본 구조를 캡처할 수 없습니다(편향이 높음). 관련 패턴을 학습할 수 없기 때문에 학습 및 테스트 데이터 모두에서 성능이 저하됩니다.
딥 러닝의 과제는 올바른 균형을 찾는 것이며, 이는 종종 편향-분산 트레이드오프로 설명되는 개념입니다.
과적합의 실제 예시
- 자율 주행 차량 객체 감지: 맑고 화창한 날씨 조건의 이미지만 포함된 데이터 세트를 사용하여 자율 주행 차량용 Ultralytics YOLOv8 모델을 학습한다고 상상해 보세요. 이 모델은 밝은 빛에서 보행자와 자동차를 감지하는 데 매우 특화될 수 있지만 밤이나 비가 오거나 안개가 낀 날씨에는 크게 실패할 수 있습니다. 학습 데이터의 특정 조명 및 날씨 조건에 과적합되었습니다. Argoverse와 같은 다양한 데이터 세트를 사용하면 이를 방지하는 데 도움이 될 수 있습니다.
- 의료 영상 분석: 단일 병원에서 제공된 MRI 스캔에서 종양을 탐지하도록 CNN 모델이 학습됩니다. 이 모델은 해당 병원의 특정 MRI 장비에서 특정 아티팩트 또는 노이즈 패턴을 종양의 존재와 무심코 연결하도록 학습할 수 있습니다. 다른 장비가 있는 다른 병원의 스캔에서 테스트할 때 종양의 실제 생물학적 마커가 아닌 원래 학습 세트의 노이즈에 과적합되었기 때문에 성능이 크게 저하될 수 있습니다. 이는 헬스케어 분야의 AI와 같은 분야에서 중요한 문제입니다.
과적합 방지 방법
과적합을 방지하고 더욱 강력한 모델을 구축하기 위해 여러 기술을 사용할 수 있습니다.
- 데이터 더 확보: 학습 데이터 세트의 크기와 다양성을 늘리는 것은 과적합을 방지하는 가장 효과적인 방법 중 하나입니다. 더 많은 데이터는 모델이 노이즈가 아닌 실제 기본 패턴을 학습하는 데 도움이 됩니다. Ultralytics 데이터 세트를 다양하게 활용하여 프로젝트를 개선할 수 있습니다.
- 데이터 증강(Data Augmentation): 기존 데이터의 수정된 복사본을 생성하여 학습 데이터 세트를 인위적으로 확장하는 것을 포함합니다. 랜덤 회전, 스케일링, 자르기 및 색상 이동과 같은 기술이 적용됩니다. Ultralytics YOLO 데이터 증강 기술은 모델의 견고성을 향상시키기 위해 기본적으로 제공됩니다.
- 모델 아키텍처 간소화: 주어진 데이터 세트에 비해 모델이 너무 복잡한 경우가 있습니다. 파라미터 수가 적은 더 간단한 아키텍처를 사용하면 데이터 암기를 방지할 수 있습니다. 예를 들어 YOLOv8n과 YOLOv8x처럼 더 작은 모델 버전을 선택하는 것이 작은 데이터 세트에 더 유리할 수 있습니다.
- 정규화(Regularization): 이 기술은 큰 모델 가중치를 억제하여 모델의 복잡성을 기반으로 손실 함수에 페널티를 추가합니다. 일반적인 방법은 L1 및 L2 정규화이며, 여기에서 자세히 알아볼 수 있습니다.
- 드롭아웃(Dropout): 각 학습 단계에서 임의의 뉴런 비율을 무시하는 특정 형태의 정규화입니다. 이는 네트워크가 중복된 표현을 학습하도록 강제하고 단일 뉴런이 너무 영향력을 갖지 않도록 방지합니다. 드롭아웃 개념에 대한 자세한 설명은 여기에서 확인할 수 있습니다.
- 조기 중단: 이는 검증 세트에서 모델의 성능을 모니터링하고 훈련 성능이 계속 향상되더라도 검증 성능이 저하되기 시작하는 즉시 훈련 프로세스를 중단하는 것을 포함합니다. 자세한 내용은 Keras에서 조기 중단에 대한 설명을 참조하십시오.
- 교차 검증: K-Fold 교차 검증과 같은 기술을 사용하여 데이터를 여러 폴드로 분할하고 모델을 다양한 하위 집합에서 학습하고 검증합니다. 이는 모델의 일반화 능력에 대한 보다 강력한 추정치를 제공합니다.
- 모델 가지치기: 이는 성능에 거의 영향을 미치지 않는 훈련된 네트워크에서 파라미터 또는 연결을 제거하여 복잡성을 줄이는 것을 포함합니다. Neural Magic과 같은 회사는 효율적인 배포를 위해 모델 가지치기를 전문으로 하는 도구를 제공합니다.