Ensemble
Generalization 성능 향상을 위한 앙상블의 개념에 대해서 알아보고 앙상블을 한번 파보자
Ensemble
하나의 모델보다 더 나은 성능을 위해 서로 다른 여러 학습 모델을 사용하는 것.
Model Averaging(Voting)
` The reason That model averaging works is that different models will usually not make all the same errors on the test set. ` 서로 다른 모델은 테스트 셋에서 같은 에러를 만들지 않기 때문에 Model averaging이 필요하다.
- 하드 보팅은 모델 결과를 예측했을 때 단순히 가장 많은 표를 얻은 결과를 선택하는 것
- 소프트 보팅은 각 모델이 예측한 probability를 합산해서 가장 높은 모델을 선택한다.
Cross Validation(CV)
훈련 셋과 검증 셋을 분리는 하되, 검증셋을 학습에 이용하는 방법이 없을까?
- 위의 그림에서 Validation set을 훈련 셋에서 다른 부분에서 뗴어내 훈련하고 결과를 평균내어 본다.
Stratified K-Fold Cross Validation
- 위에서 업그레이드
- 모든 데이터셋에서 validation셋을 적용해 모델을 만든다.
- K숫자가 5개면 20퍼센트의 validation을 사용하고 5개의 모델이 만들어진다.
- Stratified -> 데이터셋에 Class 분포를 일정하게 하자.(분포가 일정하지 않다면?)
TTA (Test Time Augmentation)
- Test 할때 Augmentation한다 ?
- 실생활에서 Augmentation한 정도의 데이터가 들어올 때 어떻게 해야할까?의 질문에서 시작.
- 테스트 셋에 Augmentation을 하여 모델 추론 출력된 여러가지 결과를 앙상블.
성능과 효율의 Trade-off
- 앙상블 효과는 확실히 있지만 그 만큼 학습, 추론 시간이 배로 소모된다. -> 학습 N배, 추론 N배 (적절하게 사용하자)
Hyperparameter Optimization
Hyperparameter
- 시스템의 매커니즘에 영향을 주는 주요한 파라미터
- ex) Learning rate, Batch size, Optimizer, Loss, k-fold, Dropout, Regularization, Hidden Layer 개수등등
- 위의 것들을 수정하여 결과를 개선하자.
- 파라미터를 변경할 떄 마다 학습을 해야한다 -> 시간과 장비가 충분하다면 모든 경우를 시도해볼 수 있지만 사실상 모든 경우의 수는 불가능 -> 최적화를 하자.
- 베이지안이 성능이 젤좋다.
Optuna
- 파라미터 범위를 주고 그 범위 안에서 trials 만큼 시행
- import optuna
- optuna Github
Comments