2022-10-05 Naver boostcamp 일일노트
in Study
Optimization
중요한 용어들
- Generalization
- Under/overfitting
- cross validation
- Bias-variance tradeoff
- bias, variance, noise
- bias 와 variance 둘다 줄이기는 힘들다.
- Bootstrapping
- 랜덤 샘플링을 이용한 어떠한 테스트나 측정을 의미함.
- 전체적인 불확실도를 알고 싶을 때 씀.
- Bagging and boosting
- Bagging (Bootstrapping aggregating)
- Boosting
- 작은 여러개의 모델을 만들어 합칠 때, 이들을 sequential 하게 합쳐 강한 모델을 만든다.
Batch-size matters
- Batch size를 줄이게 되면 flat minimum으로 가는 경향이 있어 좀더 선호됨.
Gradient Descent - optimizers
- SGD
- 단점 : step size 를 적절히 정하기 힘들다. 이를 해결하기 위해 여러가지 최적화 테크닉이 나오게 됨.
- Momentum
- 이전 그래디언트 값을 활용하는 방법.
- Nesterov Accelerated Gradient (NAG)
- 한 스텝 뒤에서 Lookahead gradient를 계산해서 지역 극소에 빠지는 것을 방지.
- Adagrad - adaptive learning rate
- 그래디언트가 얼마나 변했는지 모니터링하고 많이 변한 파라미터는 적게. 적게 변한건 많이 업데이트하는 방식.
- 하지만 long-period 훈련에서는 학습이 점점 멈추는 현상이 생김.
- Adadelta
- Adagrad를 발전시킨 형태. 학습이 느려지는 것을 극복하고자 accumulation window 크기를 제한함.
- Adadelta의 가장 큰 특징은 lr이 없다는 것. 그래서 많이 활용되지는 않음.
- RMSprop
- Geoff Hinton이 그의 강의에서 제안함. 논문도 아닌..
- gradient squares의 EMA와 step size를 이용
- Adam (Adaptive Moment Estimation)
- adaptive learning (gradient squares) + momentum 합친 형태
Regularization - 정규화
- 학습을 의도적으로 방해하기 - 일반화 성능을 높이기 위해서
Early stopping
validation data를 이용하여 loss 가 높아지면 조기 종료시킴 추가적인 val data 가 필요
Parameter Norm Penalty
Data Augmentation
Noise Robustness
- 의도적으로 입력 데이터 혹은 뉴럴넷에 노이즈를 넣음
Label Smoothing 다른 라벨의 데이터를 서로 섞어(개와 고양이 이미지를 합치는 등) 성능을 올리는 법. 데이터의 라벨의 경계를 좀더 모호하게 만들어준다. 왜? 에 대해서는 여전히 논의중.
Dropout
Batch Normalization 이것도 논란이 있으나, 확실히 깊은 모델일 경우 성능 향상에 큰 도움이 된다고 함.
덜한 부분 추가 학습해서 기입할 것.