- generalization을 높이기 위한 노력들에 대해 알아보자.
- testset에서의 성능을 낮추지 않으면서 training에서 학습을 방해하는 개념이다.
Early stopping
- validation loss가 커지는 지점 전에서 학습을 멈춘다.
Weight decay, Parameter Norm Penalty
- 네트워크의 parameter들의 크기가 작으면 작을수록 좋다.
- function space에서 뉴럴 네트워크가 만들어내는 함수가 부드러우면 generalization에 더 좋다는 가정이 깔려있다.
- 그래서 loss를 줄일때, 학습 파라미터들의 크기도 함께 줄이는 방법이다.
Data Augmentation
- 데이터가 아주아주아주 많으면 generalization에는 반드시 좋다.
- 이미 갖고 있는 데이터를 어떻게든 지지고 볶아서 늘리는 방법이다. 예를들면 강아지 사진을 자르고 회전하고 위치를 옮기는 방법으로 데이터를 늘리는 것이다.
Noise Robustness
- 데이터와 weight에 노이즈를 첨가하는 기법이다.
- 실험적으로 효과가 있다고 한다.
Label Smoothing
- Cutout, CutMix, Mixup 중에서 Mixup만 살펴보면 강아지와 고양이 사진을 섞고 label도 dog 0.5, cat 0.5로 만드는 방법이다.
- 데이터가 부족할때 활용해볼만한 기법인 듯 하다.
Dropout
- dropout raitio가 p라고 할때, 뉴럴네트워크의 전체 파라미터의 p만큼은 0으로 바꿔서 학습을 한다.
- 랜덤으로 선택된 어떤 weight가 0이 되면 그 weight와 연결된 노드는 forward시에 반영이 안된다. 즉 노드 하나를 꺼버리는 것이다.
- overfitting을 막기 위해 종종 사용된다.
Batch Normalization
- batch 학습을 할때는 매 순간 layer가 마주하는 Input 데이터의 분포가 달라진다. 이 차이를 줄여보자는 의도이다.
- input으로 들어오는 batch1 이 표준 정규분포를 따르도록 normalize한다.
- 학습과정에서 가장 최근 N개의 batch에 대한 평균 분산을 저장해 두고 inference할때는 이 값들을 normalize할 때 사용한다.
- 참고로 batch norm은 감마와 델타가 학습되는 layer다. 정규화한 값에 r를 곱하고 베타를 더해주는 작업이 이어진다.
- 증명에는 논란이 많지만 실험적으로 성능향상에 도움이 된다고 한다.
'boostcamp AI tech > boostcamp AI' 카테고리의 다른 글
Short History of Semantic Segmentation (1) | 2023.11.22 |
---|---|
AlexNet, VGGNet, GoogleLeNet, ResNet, DenseNet (2) | 2023.11.22 |
Optimization (2) | 2023.11.21 |
Multi gpu training, Hyper parameter Search, etc (0) | 2023.11.16 |
Monitoring tools (0) | 2023.11.15 |