우선 궁극적인 이유를 살펴보기 전에 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 |
---|