우선 궁극적인 이유를 살펴보기 전에 Loss란 무엇인지에 대해서 알아보자.

 

기본적 수준에서 Loss function은 데이터 세트의 입력 데이터 포인트를 분류할 때 주어진 예측이 얼마나 좋은지 나쁜지를 수량화한다.

 

Loss가 작을수록 classifier은 입력 데이터와 출력 대상 간 관계를 모델링하는 데 더 나은 작업을 수행한다.

 

Loss function에는 다음과 같은 것들이 있다.

 

  • Binary cross entropy
  • Categorical cross entropy
  • Sparse categrical cross entropy
  • Mean Squared Error (MSE)
  • Mean Absolute Error (MAE)
  • Standard Hinge
  • Squared Hinge

Loss에 대해서는 다음과 같은 정도를 알아두도록 하자.

  • Loss는 모델이 얼마나 좋은지에 대한 정도를 측정하는 것이다.
  • loss가 작을수록 더 좋다.
  • 그러나 과적합에 대해 조심할 필요가 있다.

이제 왜 검증 데이터에서의 loss가 훈련 데이터에서의 loss보다 낮은지에 대한 이유를 알아보자.

 

첫 번째 이유 : 훈련 중에는 Regularization이 적용되었으나, 검증 / 테스트 중에는 적용되지 않았다.

 

우리는 모델을 학습시킬 때 정규화를 활용한다. 정규화를 활용하면 다음과 같은 효과를 얻을 수 있다.

  • 더 높은 검증 / 테스트 정확도를 확보할 수 있다.
  • 검증 및 테스트 세트 외부 데이터로 더 잘 일반화할 수 있다.

정규화 방법은 종종 검증 / 테스트 정확도 개선을 위해 훈련 정확도를 희생한다. 어떤 경우엔 검증 손실이 훈련 손실보다 낮아질 수 있다.

그리고, dropout과 같은 정규화 방법은 검증 / 테스트 시 적용되지 않는다는 점에 유의하라.


두 번째 이유 : 각 Epoch 동안 Training Loss를 측정하고, 각 Epoch 후에 Validation Loss를 측정한다.

 

훈련 손실은 전체 epoch동안 지속적으로 보고되나, 검증 metric은 현재 훈련 에포크가 완료된 후에만 검증 세트에 대해 계산된다.


세 번째 이유 : 검증 세트가 훈련 세트보다 쉬울 수 있거나 누출이 있을 수 있다.

 

  • 검증 세트가 훈련 세트와 동일한 분포에서 샘플링 되었음을 보장할 수 있는가?
  • 검증 예제가 훈련 이미지만큼 어렵다 확신하는가?
  • 훈련 샘플이 실수로 검증 / 테스트 샘플과 혼합되지 않았다 확신할 수 있는가?
  • 코드가 훈련, 검증 및 테스트 분할을 올바르게 생성했다 확신하는가?

보너스 : 당신은 진짜 열심히 훈련하고 있는가?

 

우리는 과적합을 방지하기 위해 다음과 같은 테크닉을 사용하곤 한다.

  • Dropout
  • L2 weight decay
  • 모델 용량 감소 (더 얕은 모델로 작성)

모두 훌륭하고 좋으나 때때로 모델을 과도하게 정규화하게 된다.

위의 세 가지 테크닉을 모두 사용하고 있다면 모델이 과도하게 정규화됐을수 있다. 

다음을 통해 정규화 제약을 완화해보도록 하자.

  • L2 weight decay 강도를 줄인다.
  • Dropout 양을 줄인다.
  • 모델 용량을 늘린다. (모델을 더 깊게 만든다.)

위와 같이 완화시키게 된다면 더 큰 학습률로 훈련을 시도하는 등의 파라미터 변화가 필요할 것이다.


참고

 

https://pyimagesearch.com/2019/10/14/why-is-my-validation-loss-lower-than-my-training-loss/

'AI > AI 기초' 카테고리의 다른 글

Few-shot Learning  (0) 2022.06.14

+ Recent posts