지금까지 우리는 테스트셋을 만들지 않고 학습해 왔습니다. 그런데도 매번 정확도(accuracy)를 계산할 수 있었지요. 어째서 가능했을까요? 지금까지 학습 데이터를 이용해 정확도를 측정한 것은 데이터에 들어 있는 모든 샘플을 그대로 테스트에 활용한 결과입니다. 이를 통해 학습이 진행되는 상황을 파악할 수는 있지만, 새로운 데이터에 적용했을 때 어느 정도의 성능이 나올지는 알 수 없습니다. 머신 러닝의 최종 목적은 과거의 데이터를 토대로 새로운 데이터를 예측하는 것입니다. 즉, 새로운 데이터에 사용할 모델을 만드는 것이 최종 목적이므로 테스트셋을 만들어 정확한 평가를 병행하는 것이 매우 중요합니다.
학습셋만 가지고 평가할 때, 층을 더하거나 에포크(epoch) 값을 높여 실행 횟수를 늘리면 정확도가 계속해서 올라갈 수 있습니다. 하지만 학습 데이터셋만으로 평가한 예측 성공률이 테스트셋에서도 그대로 나타나지는 않습니다. 즉, 학습이 깊어져 학습셋 내부에서 성공률은 높아져도 테스트셋에서는 효과가 없다면 과적합이 일어나고 있는 것이지요. 이를 그래프로 표현하면 그림 13-4와 같습니다.
그림 13-4 | 학습이 계속되면 학습셋에서의 에러는 계속해서 작아지지만, 테스트셋에서는 과적합이 발생!