딥러닝기반의 학습을 이행하다보면, Overfitting (과적합)의 문제를 흔히 마주할 수 있다.
이는 너무 훈련된 데이터에만 최적화되어, 새롭게 마주하는 데이터에 예측성능이 저하됨을 뜻하며,
여러가지 Regularization(정규화) 기법들을 통해 어느 정도 보완이 가능함을 알아두자.
본 포스팅에서는 대표적인 정규화 기법인 Drop-out과 Batch Normalization에 대해서 집중 조명해보고자 한다.
먼저 학습 네트워크의 깊이를 약간 깊게 만들어주고 활성화함수로 ReLU를 사용함.
미니배치 형식으로 학습하되, 여러 정규화 기법 적용 전후를 비교해서 그것이 과연 실효적인 기법인지를 보고자한다.
먼저 Drop-out기법을 적용하고 학습을 다시 진행해 보았다.
학습의 결과는 기법의 전보다 Overfitting이 덜 발생하여 Training과 Validation의 손실곡선이 잘 수렴함을 확인할 수 있었다.
이번에는 Drop-out없이 Batch_Normalization만을 적용하여 학습을 이행해보았다.
조금더 학습이 빠르고 안정적으로 이루짐을 느낄 수 있었으나, 여전히 Overfitting문제가 잔존해 있음이 확인된다.
그렇다면 Drop-out과 Batch Normalization을 함께 적용해보면 어떨까?
백문이 불여일견이라고 하였다. 직접 이행해본다.
학습의 결과가 나쁘지않았다. 어느정도 Overfitting을 최소화하면서 학습 속도도 적절하게 나타났다.
다만 Loss의 절대적 크기를 최소화하는데 한계가 있는것으로 보인다.
더나아가 문득, Drop-out과 Batch Normalization 적용 순서를 바꾸면 어떨까에 대한 궁금증이 생겼다.
그래서 또 학습을 이행해보았다. 아무리 학습을 반복해도 앞선 방법보다 비슷하거나 더 나은 결과를 볼 수 없었다.
Batch Normalization을 먼저하고 Drop-out을 나중에 적용하는것이 원하는 학습을 도와줄 것으로 생각된다.
이번 포스팅은 여기서 마치겠습니다.^^
'Deep Learning > PyTorch' 카테고리의 다른 글
Fashion MNIST를 이용한 CNN기반 Classification 따라해보기! (0) | 2020.07.16 |
---|---|
나만의 신경망 모듈 만들어보기! (0) | 2020.07.14 |
TensorDataset과 Dataloader에 대해 알아보자 (0) | 2020.07.14 |
Multi Layer Perceptron (다층 퍼셉트론?) 만들어보기 (0) | 2020.07.14 |
다중 분류를 위한 Logistic Regression Model 만들기 (0) | 2020.07.14 |