들어가며
모델이 새로운 샘플에 얼마나 잘 일반화되는지 확인하려면
실제 서비스에 모델을 넣고 잘 작동하는 지 확인하면 된다
이 방법은 실전에 투입되는 것이기에 대비되지 않은 예외나 고객들의 불만이 생길 것이다
더 나은 방법으로는 훈련 데이터를 훈련 데이터와 테스트 데이터 세트로 나누는 것이다
말 그대로 훈련 세트에서 모델을 훈련시키고 테스트 세트를 통해 모델을 테스트한다
테스트 세트에서 모델을 테스트하면서 새로운 샘플에 대한 오차 비율 즉 일반화 오차를 얻을 수 있다
이 때 훈련 오차는 작았지만 일반화 오차가 컸다면 훈련 데이터에 과대적합 됐다는 것이다
그럼 규제를 적용시켜 이를 해결할 수 있을 것이다
규제를 통해 일반화 오차가 가장 낮은 모델을 만드는 최적의 하이퍼파라미터를 찾았다고 가정해보자
이 모델을 실제 서비스에 투입시켰더니 성능이 예상만큼 좋지는 않았다 이유가 무엇일까
이유는 최적의 하이퍼파라미터를 찾는 과정에서 일반화 오차를 테스트 세트에서 여러 번 측정했으므로
모델이 테스트 세트에 간접적으로라도 최적화되었기 때문이다
이 문제는 어떻게 해결할 수 있을까
홀드아웃 검증
위 문제를 바로 홀드아웃 검증으로 해결할 수 있다
홀드아웃 검증은 훈련 세트의 일부를 떼어 엄선해서 검증 세트를 만든다
이 후 줄어든 훈련세트에서 다양한 하이퍼파라미터를 가진 모델을 훈련하고 검증 세트에서 평가하여
최상의 성능을 내는 모델을 선택한다
이 검증 과정이 끝나면 훈련 세트와 검증 세트를 포함한 전체 훈련세트를 다시 훈련시킨 최종 모델을 만든다
마지막으로 이 최종 모델을 테스트 세트에서 평가한다

홀드아웃 검증의 문제
홀드아웃 검증은 일반적으로 잘 작동하지만
검증 세트가 너무 크거나 너무 작으면 문제가 발생한다
검증 세트가 너무 크다면 남은 훈련 세트가 부족해져 모델이 충분히 학습하지 못할 수 있다
반대로 검증 세트가 너무 작다면 모델 성능 평가가 대표성을 잃어 그 과정이 의미가 없어진다
이 문제를 해결할 방법은 교차 검증을 사용하는 것이다
교차 검증
교차 검증이란?
교차 검증은 전체 데이터 세트에서 작은 검증세트를 여러개 만들어 반복적인 검증을 수행하는 작업이다

위 그림에서 알 수 있듯이 검증세트를 k개의 같은 크기의 데이터로 설정하여 k번 동안 학습/검증을 반복한다
이 경우 모든 모델의 평가를 평균하여 훨씬 정확한 성능을 측정할 수 있게된다
하지만 훈련 시간이 검증 세트의 개수에 비례하여 늘어난다는 점도 인지해야 한다
데이터 불일치
홀드아웃 검증과 교차 검증은 데이터가 대표성을 띄고 품질이 좋다는 전제를 가져야 가능한 과정이다
그렇다면 데이터가 대표성이 떨어지고 품질이 낮은 경우 어떻게 될까
모델의 성능을 측정했는데 결과가 실망스럽다면
모델이 훈련 세트에 과대적합된건지 데이터가 불일치해서 생긴 문제인지부터 구분해야한다
한 가지 방법으로는 훈련 세트의 일부를 떼어내어 훈련 개발 세트를 만드는 것이다
모델이 훈련 세트에서 훈련한 후 훈련 개발 세트에서 평가했을 때 잘 작동하지 않는다면
이는 훈련 세트에 과대적합된 것이다
이유는 훈련 개발 세트는 훈련 세트와 같은 데이터 분포를 가지기 때문에 데이터 불일치일 수는 없기 때문이다
만약 훈련 개발 세트에서 평가 시 잘 작동한다면 검증 세트에서 평가되는데
이 때 성능이 나쁘다면 이는 데이터 불일치에서 오는 문제라고 볼 수 있다
검증 세트와 테스트 세트는 훈련 세트, 훈련 개발 세트와 달리 대표성을 가진 사진으로만 구성되어야 한다
검증 세트에서도 잘 작동한다면 마지막으로 테스트 세트에서 평가를 진행한다

마치며
이번 글에서는 모델이 새로운 샘플에 얼마나 잘 일반화됐는지 알아보는 과정에서
어떤 식으로 테스트와 검증 절차를 거쳐야 하는 지 알아보았다
홀드아웃 검증, 교차 검증, 훈련-개발 세트 과정이 데이터를 점점 더 세분화하고 평가를 확장하는 개념이라고 느껴졌다
처음에는 훈련 세트와 훈련 개발 세트는 데이터 분포가 같다는 걸 인지하지 못하고
왜 훈련 개발 세트에서 잘 작동하지 않는 것이 훈련 세트에 과대적합된건지 이해가 어려웠다
모델을 테스트하고 검증하는 과정도 생각보다 복잡하고 고려해야 할 것이 많아
테스트하고 검증하는 과정도 모델 개발 과정 못지않게 중요하다고 생각했다
'AI > Machine Learning' 카테고리의 다른 글
| [AI] 데이터 정제하기 (0) | 2026.02.04 |
|---|---|
| [AI] 테스트 세트 만들기 (0) | 2026.02.03 |
| [AI] 과대 적합(overfitting), 과소 적합(underfitting) (1) | 2026.01.21 |
| [AI] 사례 기반 학습(instance-based learning), 모델 기반 학습(model-based learning) (0) | 2026.01.20 |
| [AI] 오프라인 학습(offline learning), 온라인 학습(online learning) (0) | 2026.01.19 |
