

더 많은 data를 수집
모델의 복잡도를 낮춰 단순한 모델을 만든다.
Epoch(또는 step) 수를 줄인다.
과대적합을 방지하기 위한 규제 방식은 모두 모델을 간단하게 만드는 방법들이다.
모델의 layer나 unit 수가 많을 수록 복잡한 모델이 된다.
Overfitting일 경우 모델을 간단하게 만들고 Underfitting일 경우 모델을 크게 만든다.
큰 모델에서 시작하여 layer나 unit수를 줄여가며 validation loss의 감소 추세를 관찰한다. (또는 반대로)
Neural network의 Overfitting을 방지하기 위한 기법
Dropout Node
Dropout rate
Dropout을 적용하면 각 노드들은 학습이 적게 되기 때문에 dropout을 적용하지 않았을때 보다 학습하는데 더 많은 Epoch이 필요하다.
- Dropout은 **학습시에만 적용**하고 **검증, 테스트, 새로운 데이터 추론시에는 적용되지 않는다.**
- pytoch는 `model.train()` 호출시 dropout layer가 적용된다. `model.eval()` 호출시 dropout layer가 작동하지 않는다.

내부 공변량 변화란 학습 과정에서 각 층을 통과할 때 마다 입력 데이터 분포가 달라지는 현상이다.
입력 데이터의 분포가 정규분포를 따르더라도 레이어를 통과하면서 그 분포가 바뀌어 성능이 떨어지는 문제가 발생한다.
각 레이어를 통과할때 마다 분포를 정규분포로 정규화하여 성능을 올린다.
: scaling 파라미터, : shift 파라미터

