Untitled

[머신 러닝] 과적합 (Overfitting)과 Validation Dataset의 개념 본문

지능형시스템/머신 러닝

[머신 러닝] 과적합 (Overfitting)과 Validation Dataset의 개념

CHML 2019. 12. 25. 10:49
1. 과소적합 (underfitting)과 과적합 (overfitting)

머신 러닝의 궁극적인 목표는 training dataset을 이용하여 학습한 모델을 가지고 test dataset를 예측하는 것이다. 이 때 test dataset은 학습 과정에서 참조할 수 없다고 가정하기 때문에 머신 러닝 모델은 training dataset만을 가지고 test dataset을 잘 예측하도록 학습되어야 한다.

기본적으로 머신 러닝 모델은 training loss가 작아지도록 학습을 진행하기 때문에 그림 1과 같이 학습이 계속 될수록 모델의 decision boundary는 점점 training dataset에 fitting된다. 이러한 학습 결과는 모델이 dataset에 내재된 어떠한 구조나 패턴을 일반화 (generalization)한 것이 아니라, training dataset을 그대로 외운 것과 같이 때문에 이것이 올바른 학습 결과인지는 생각해볼 필요가 있다.

 

그림 1. 학습의 진행과 decision boundary의 형태 변화. 각 점은 training dataset에 포함된 data를 의미하며, 점의 색은 class를 의미함.

만약 training dataset과 test dataset이 정확히 일치한다면, training dataset에 fitting될 수록 모델의 예측 정확도는 증가할 것이다. 그러나 대부분의 문제에서 training dataset과 test dataset은 조금씩 다른 경향을 보인다 (실제 application에서는 매우 다른 경우도 많다). 이러한 경우에는 그림 2와 같이 training dataset에 조금은 덜 fitting된 모델이 test dataset에 대해 더 높은 정확도를 보일 수가 있다.

 

그림 2. Training dataset에 덜 fitting된 모델 (좌)과 과하게 fitting된 모델 (우). 각 점은 test dataset에 포함된 data를 의미함.

실제로 그림 2처럼 training dataset에 과하게 fitting된 모델이 test dataset에 대해 더 낮은 정확도를 보여주는 문제는 거의 대부분의 머신 러닝 응용에서 나타난다.

 

그림 3. Loss의 관점에서 보는 underfitting과 overfitting.

그림 3은 loss의 관점에서 위의 예제를 보여준다. 위의 그래프는 아래와 같은 두 개의 구간으로 나눌 수 있다.

  • Training loss와 test loss가 같이 감소하는 구간 (underfitting).
  • Training loss는 감소하지만, test loss는 증가하는 구간 (overfitting).

머신 러닝에서는 전자의 구간에 있는 모델을 underfitting되었다고 하고, 후자에 있는 모델은 overfitting되었다고 한다. 따라서, 우리의 목적은 학습을 통해 머신 러닝 모델의 underfitting된 부분을 제거해나가면서 overfitting이 발생하기 직전에 학습을 멈추는 것이다. 이를 위해 머신 러닝에서는 validation set을 이용한다.

 

2. Validation Dataset

Validation dataset은 overfitting을 해결하기 위해 별도로 만들어진 dataset이 아니라, training dataset에서 추출된 가상의 dataset이다.

 

그림 4. Validation dataset을 이용한 학습 과정.

그림 4는 이러한 validation dataset을 이용한 머신 러닝 모델의 학습 과정을 보여준다.

  • Step (1): 주어진 dataset을 training, validation, test dataset들로 나눈다. 일반적으로 각 dataset의 비율은 60:20:20으로 설정한다.
  • Step (2): Training dataset을 이용하여 모델을 학습시킨다.
  • Step (3): Validation dataset을 이용하여 모델의 정확도 및 validation dataset에 대한 loss를 계산한다.
  • Step (4): 만약 validation loss가 증가했다면 학습을 종료한다. 그렇지 않을 경우에는 (2)로 돌아가서 학습을 계속 진행한다.
  • Step (5): Test dataset을 이용하여 모델의 최종 정확도를 평가한다.

그림 4의 학습 과정과 기존 training dataset 및 test dataset만을 이용한 학습의 가장 큰 차이점은 step (3)과 (4)가 추가되었다는 점이다. 이러한 두 과정을 통해 현재의 모델이 학습 과정에서 참조하지 않았던 data를 얼마나 정확하게 예측하는지를 평가하고, 이를 학습의 종료 조건으로 이용함으로써 overfitting을 간접적으로 방지한다.

 

그림 5. Validation loss를 이용한 overfitting 방지. 

그림 5는 validation loss를 이용하여 overfitting을 방지하는 방법을 보여준다. 위의 그래프에서 볼 수 있듯이 validation loss가 증가하는 시점부터 overfitting이 발생했다고 판단하고, 이에 따라 학습을 중단한다. 그러나 validation dataset 또한 test dataset을 완벽히 표현하지는 못 하기 때문에 validation loss가 최소가 되는 시점이 test loss가 최소가 되는 시점과 정확히 일치하지는 않을 수도 있다.

 

3. Validation Dataset과 Test Dataset의 용도

처음 머신 러닝을 접하면 validation dataset의 개념을 정확히 이해하지 못 하거나, validation과 test dataset들의 개념을 혼동할 수도 있다. 아래의 표 1은 혼동하기 쉬운 training, validation, test dataset들의 용도를 요약한 것이다.

 

표 1. Traning, validation, test dataset들의 용도.

Validation dataset과 test dataset의 개념 중 혼동하기 쉬운 몇 가지를 요약하면 아래와 같다.

  • Validation dataset은 학습 과정에서 참조할 수 있지만, test dataset은 그렇지 않다.
  • Training dataset은 모델의 인자값 (인공신경망에서는 가중치)을 결정하는데 이용되지만, validation dataset은 이용되지 않는다. Validation dataset은 오직 언제 학습을 멈출지를 판단하기 위해 이용된다.
  • Validation dataset과 test dataset은 모두 모델의 성능 평가에 이용된다. 그러나 validation dataset에 대한 성능은 학습을 중단하는 시점을 결정하기 위해 이용되고, test dataset에 대한 성능은 모델의 최종 정확도를 평가하기 위해 이용된다.

 

 

7 Comments
댓글쓰기 폼