IT Repository

(6) Overfitting 본문

Basic fundamentals

(6) Overfitting

IT찬니 2020. 1. 13. 17:49

 

 

 

 

Overfitting

Binary Classification에서 Decision boundary에 걸쳐있는 샘플들 있다고 가정합니다.
(사실 대부분 Real world에서는 Decision boundary 근처에 수많은 샘플들이 있겠죠.)

만약 Model Capacity를 높인다면 학습이 진행됨에 따라 경계에 걸쳐있는 샘플들도 분류할 수 있는 더 복잡한 Decision boundary가 만들어질 것입니다.

True Risk vs Empirical Risk
쉽게 설명하면 True Risk와 Empirical Risk는 통계에서의 모수와 표본의 관계입니다.

- True Risk : 모든 데이터에 대해서 계산한 오차값
- Empirical Risk : 표본을 통해 계산한 오차값

우리는 현실세계의 어떠한 문제를 해결하기 위해 데이터를 사용하지만 모든 데이터는 사용할 수 없습니다.
그렇기 때문에 모수에서 샘플링한 표본이 모수를 잘 대표한다고 가정하고, 그를 통해서 문제를 해결하고자 합니다.
마찬가지로 True Risk 역시 확인할 수 없기에, Empirical Risk를 통해서 True Risk를 추정하게 됩니다.

이렇게 복잡한 Decision boundary를 형성하면 훈련 샘플에 대해서 거의 대부분 분류할 수 있고 손실함수의 값, 즉 Emprical Risk 역시 아주 작을 것입니다.
하지만 Decision boundary가 복잡하기 때문에 훈련 샘플에서 아주 조금만 벗어나도 분류를 할 수 없게 됩니다.
다시 말해서 일반화 성능이 감소하게 됩니다. (Empirical Risk $\Downarrow$, True Risk $\Uparrow$)

하지만 True Risk를 줄이기 위해 Empirical Risk를 사용하는 것이지 Empirical Risk를 줄이는 게 우리의 목표는 아니었습니다.

결국, Overfitting이란 Empirical Risk가 True Risk를 대표하지 못하는 상황을 말합니다.

 

To Avoid Overfitting

Overfitting을 막기 위한 기본적인 방법은 아래와 같습니다.

1. 적절하게 학습을 중단하는 것
결국 훈련은 트레이닝 셋으로 하게 됩니다.
모델이 계속해서 최적화하기 위해 오차를 비교하는 데이터는 트레이닝 셋입니다.

이러한 트레이닝 셋의 Global Minimum에 도달해서 Loss가 거의 0에 가까워진다면 이전에 설명했던 복잡한 Decision boundary가 생성된 것과 같을 것입니다.
따라서 훈련시에는 트레이닝 셋 외에 따로 밸리데이션 셋을 두어서 Overfitting이 발생하는지 확인해야 합니다.
이 밸리데이션 셋은 훈련에는 전혀 사용하지 않으며, 그저 학습하지 않은 데이터에 대해서 어느 정도 성능을 내는지를 확인하기 위함 입니다.

(1)
트레이닝 셋의 정확도가 계속 상승하고 있고 이를 밸리데이션 셋을 통해 확인해보니 역시 상승하고 있다면
이는 아직 Overfitting이 아니고 어느 정도 적절히 잘 훈련되고 있다고 해석할 수 있습니다.

(2)
반대로 트레이닝 셋의 정확도는 상승하는데, 밸리데이션 셋의 정확도는 하강하고 있다면
이전에 설명한 Empirical Risk는 줄어드는데 True Risk는 증가하는 상황이겠네요.
우리는 이것을 Overfitting이 발생했다고 해석할 수 있습니다.

즉, 우리는 트레이닝 셋에 대한 Global Minimum에 도달하기 전에 트레이닝 셋과 밸리데이션 셋에도 어느 정도 잘 맞는 지점에서 학습을 중단할 수 있도록 해야 합니다.
(적절하게 학습을 중단하기 위해서 눈으로 보면서 중단할 수도 있겠지만, 일반적으로는 EarlyStopping이라는 테크닉을 구현하여 사용합니다.)

2. 모델의 적절한 Capacity를 찾아내는 것
해결하고자 하는 문제에 비해 모델이 너무 크다면 Overfitting이 발생합니다.
이를 해결하기 위해 1차적으로 생각할 수 있는 것은 "그러면 모델을 줄이면 되잖아?" 일 것입니다.

그러면 문제가 얼마나 복잡한지 혹은 단순한지는 어떻게 알 수 있을까요?

아쉽게도 우리는 문제에 대한 분포를 알 수 없고 부합하는 함수를 알 수도 없습니다.
(만약 알고 있다면 분포와 함수를 통해 해결하면 될 일입니다.)
따라서 적절한 모델의 크기를 우리가 직접 찾아야 합니다.

이렇게 층의 깊이와 너비같이,
사람이 직접 지정하는 파라미터들을 하이퍼 파라미터라고 하고, 하이퍼 파라미터의 적절한 값을 찾는 것을 하이퍼 파라미터 튜닝이라고 합니다.
(딥러닝 아키텍처를 만드는 프로젝트에서 가장 많은 시간을 할애하기 되는 작업입니다.)

 

위의 두 기본적인 방법은 모델 밖에서 Overfitting을 막기 위해서 조정하는 방법이었습니다.
그러나 동일한 구조를 가지고도 모델 내에서 Overfitting을 막기 위한 몇가지 테크닉들이 있습니다.

다음으로는 그 중 Regularization에 대해서 배워보겠습니다.

'Basic fundamentals' 카테고리의 다른 글

(8) Gradient Vanishing  (0) 2020.01.13
(7) Regularization  (0) 2020.01.13
(5) Model Capacity  (0) 2020.01.13
(4) What is Backpropagation?  (0) 2020.01.06
(3) What is Neural Network?  (0) 2020.01.06
Comments