2 minute read

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이 필요하다.

Loss

  • 하드 보팅은 모델 결과를 예측했을 때 단순히 가장 많은 표를 얻은 결과를 선택하는 것
  • 소프트 보팅은 각 모델이 예측한 probability를 합산해서 가장 높은 모델을 선택한다.

Cross Validation(CV)

훈련 셋과 검증 셋을 분리는 하되, 검증셋을 학습에 이용하는 방법이 없을까?

cv

  • 위의 그림에서 Validation set을 훈련 셋에서 다른 부분에서 뗴어내 훈련하고 결과를 평균내어 본다.

Stratified K-Fold Cross Validation

cv

  • 위에서 업그레이드
  • 모든 데이터셋에서 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