1. 개념
요약
- Training Data: 모델 학습에 사용되는 데이터. 모델의 가중치와 편향을 조정함.
- Validation Data: 모델의 성능을 평가하며, 하이퍼파라미터를 조정하고 과적합을 방지하기 위해 사용.
- Test Data: 최종 모델의 성능을 확인하기 위한 독립적인 데이터로, 모델 배포 전 최종 평가에 사용.
이러한 데이터셋의 구분은 모델의 일반화 성능을 극대화하고, 과적합을 방지하며, 공정한 평가를 위한 필수적인 절차입니다.
2. Validation Data (검증 데이터)
- 목적: 학습 도중 모델의 일반화 성능을 평가하고, 하이퍼파라미터를 조정하기 위한 데이터셋.
- 역할:
- 모델의 성능을 중간중간 점검하여 과적합(overfitting) 여부를 감지
- 학습 중 최적의 하이퍼파라미터(예: 학습률, 배치 크기, 드롭아웃 비율 등)를 찾는 데 사용
- Early Stopping과 같은 기법으로 학습을 조기에 종료하는 기준이 됩니다.
- 왜 필요한가?
- 훈련 데이터에서만 성능이 좋은 것이 아니라 보지 않은 데이터에서도 좋은 성능을 내는 모델을 만들기 위해 필요합니다.
- 훈련 데이터로만 평가하면 과적합된 모델이 검출되지 않습니다.
3. Test Data (테스트 데이터)
2. roboflow
컴퓨터 비전에서의 과적합이란?
컴퓨터 비전 모델을 훈련할 때, 모델에 예제 이미지를 보여주어 학습하게 만듭니다. 모델이 수렴(convergence)에 도달하도록 하기 위해 손실 함수(loss function)를 사용합니다. 손실 함수는 모델이 올바른 예측에서 얼마나 멀리 있는지를 측정하는 지표입니다. 손실 함수의 값이 작을수록 더 나은 모델입니다.
모델은 손실 함수를 기반으로 예측 함수를 형성하며, 이미지의 픽셀을 출력 값과 연결합니다.
모델링 과정 예시 (PP-YOLO)
훈련 과정에서 주의해야 할 점은 모델이 훈련 데이터에만 과적합될 수 있다는 점입니다. 즉, 모델이 훈련 데이터에서만 잘 작동하는 지나치게 구체적인 규칙을 학습하여, 처음 보는 이미지에는 잘 일반화되지 못합니다.
2차원 예시
아래 그림에서는 모델이 훈련 데이터에 맞춰 지나치게 타이트하게 함수를 학습한 예시를 볼 수 있습니다.
과적합 문제 시각화
훈련 데이터에서 손실(loss)은 계속해서 감소하지만, 검증 데이터에서는 손실이 오히려 증가하는 상황을 나타내는 그래프입니다.
- 문제점: 이 경우 모델이 제대로 학습된 것이 아니라, 훈련 데이터를 암기한 것입니다. 이런 모델은 새로운 이미지에 대해 좋은 성능을 내지 못합니다.
따라서 과적합을 방지하기 위해 훈련, 검증, 테스트 세트로 데이터를 분할하는 것이 중요합니다.
훈련 데이터(Training Data)란 무엇인가?
훈련 데이터는 모델 학습에 사용되는 데이터셋의 가장 큰 부분입니다.
- 훈련 후에는 모델이 이 데이터를 이미 학습했으므로, 이 데이터에 대한 예측 성능은 제한적으로 해석해야 합니다.
권장 비율: 데이터의 약 70%를 훈련 데이터로 사용하는 것을 추천합니다. (고급 사용자는 Roboflow에서 이 기본 설정을 자유롭게 조정할 수 있습니다.)
검증 데이터(Validation Data)란?
검증 데이터는 훈련 중에 사용되지 않는 이미지로, 모델의 일반화 성능을 평가하기 위해 사용됩니다.
- 매 훈련 에포크(epoch)마다 검증 손실(validation loss)이나 mAP(mean Average Precision)과 같은 검증 지표를 확인합니다.
- 모델이 최적의 성능에 도달했다고 판단되면 훈련을 중단할 수 있습니다. 이를 Early Stopping이라고 합니다.
- 모델을 개발하는 동안 데이터셋, 이미지 증강, 모델 디자인 등을 반복적으로 개선하여 검증 데이터에서의 성능을 향상시킬 수 있습니다.
- 권장 비율: 데이터의 약 20%를 검증 데이터로 사용하는 것이 좋습니다.
테스트 데이터(Test Data)란?
모든 훈련과 실험이 끝난 후, 테스트 데이터를 사용해 모델의 최종 성능을 독립적으로 평가합니다.
- 중요한 점은, 검증 데이터에서의 지표가 모델 개발 과정에서 영향을 미쳤을 수 있다는 것입니다. 따라서 모델을 공정하게 평가하려면 완전히 독립적인 테스트 데이터가 필요합니다.
- 테스트 데이터는 모델이 실제 환경에서 얼마나 잘 동작할지를 예측할 수 있도록 도와줍니다.
권장 비율: 데이터의 약 10%를 테스트 데이터로 유지합니다.
전처리와 증강이 데이터 분할에 미치는 영향
전처리(Preprocessing)는 데이터의 일관성을 유지하기 위해 모든 데이터셋(훈련, 검증, 테스트)에 동일하게 적용됩니다. 예를 들어, 이미지의 크기를 고정하거나 그레이스케일로 변환하는 작업이 포함됩니다.
증강(Augmentation)은 훈련 데이터에만 적용됩니다. 이는 훈련 데이터의 양을 늘리기 위해 사용되며, 기존 이미지에 노이즈, 회전, 밝기 변화와 같은 변화를 추가합니다. 반면, 검증 및 테스트 데이터에서는 원본 이미지를 사용해야 합니다.
데이터 분할 시 발생할 수 있는 일반적인 문제들
1. Train/Test Bleed (데이터 누수)
- 동일한 이미지가 실수로 훈련, 검증, 테스트 데이터에 중복될 경우 문제가 발생합니다. 이는 평가 지표에 편향을 초래할 수 있습니다. Roboflow는 업로드 과정에서 중복된 이미지를 자동으로 제거합니다.
2. 훈련 데이터에만 집중하는 경우
- 더 많은 데이터가 더 나은 모델을 만든다는 생각에 따라, 훈련 데이터에 너무 많은 비율을 할당할 수 있습니다. 그러나 검증 및 테스트 데이터가 부족하면, 평가 지표가 신뢰할 수 없는 작은 표본에 의해 왜곡될 수 있습니다.
3. 검증 및 테스트 지표에 과도한 집중
- 검증 및 테스트 데이터는 모델의 성능을 가늠하는 데 중요하지만, 실제 성능을 완전히 대표하지 않을 수 있습니다. 이러한 지표는 단순한 가이드라인으로 사용하고, 모델의 성능과 강인함을 지속적으로 개선해 나가는 것이 중요합니다.