Ensemble & Experiment Toolkits & Tips
Ensemble
- Generalization 성능 향상을 위한 앙상블의 개념에 대해서 알아보고 지금까지 학습된 모델 Weight를 가지고 앙상블 블을 한번 시도해 보자
- 또한, 경진대회에서 자주 언급되는 K-fold cross validation과 Test Time Augmentation(TTA)에 대해 알아보자
- 마지막으로, Hyperparameter optimization에 대해서 간략하게 다룬다
- Hyperparameter Opt는 적절한 파라미터를 찾기 위해 경우에 따라서는 성능 향상에 비해 돈과 시간과 리소스가 많이 필요한 것이 사실이다
- 하지만 "내 모델의 성능을 최대한 올릴 수 있는 Hyperparameter를 자동으로 찾는다"는 관점에서는 상당히 큰 메리트가 있다
- 그런 의미에서 최근 급부상하고 있는 AutoML분야에서 이 Hyperparameter Opt는 상당히 중요한 요소 중 하나이다
- 아래 Further Reading에서 관련 내용을 한번 읽어보자
Further Readings
Overview
- 여러 실험을 하다 보면 여러가지 모델로 여러 결과를 만들었을 거다
Ensemble(앙상블)
- “싱글 모델보다 더 나은 성능을 위해 서로 다른 여러 학습 모델을 사용하는 것.”
Ensemble of Deep NN
- Low Bias, High Variance → Overfitting
Model Averaging (Voting)
- "The reason that model averaging works is that different models
will usually not make all the same errors on the testset.”
- Ian Goodfellow, Deep Learning, 2016, 249p
CrossValidation
- 훈련 셋과 검증 셋을 분리는 하되, 검증 셋을 학습에 활용할 수는 없을까?
Stratified K-Fold CrossValidation
- 가능한 경우를 모두 고려 + Split시에 Class분포 까지 고려
TTA(Test Time Augmentation)
- 테스트 할 때 Augmentation을 어떻게 한단 거야?
- 테스트 셋도 다른 환경에서는 다르게 관측이 될수도 있다
- 따라서 하나의 똑같은 테스트 셋을 여러개의 다른 상태(augmentations)를 모델에 넣었을때 똑같은 답을 낼 수 있는지 확인
- 테스트 이미지를 Augmentation후 모델 추론, 출력된 여러가지 결과를 앙상블
성능과 효율의 Trade-off
- 앙상블 효과는 확실히 있지만 그 만큼 학습, 추론 시간이 배로 소모됨
- 따라서 성능보다 효율이 중요한 현업에서는 일반적으로 사요되진 않음
Hyperparameter Optimization
- 앙상블 만큼이다 굉장히 많은 시간이 들기 때문에 많이 사용되진 않음
Hyperparameter?
- 시스템의 매커니즘에 영향을 주는 주요한 파라미터
파라미터를 변경할 때 마다 학습을 해야하니..
- 시간과 장비가 충분하다면.. 해볼 수 있겠으나..
Optuna
- 파라미터 범위를 주고 그 범위 안에서 trials만큼 시행
- 학습 과정을 로깅하는 방법과 툴 2가지를 소개해 한다
- 그리고, 머신러닝 학습을 위한 방법 가운데서 Jupyter notebook과 Python IDLE 프로젝트가 어떤 장단점이 있는지 살펴보도록 하자
- 마지막으로, 지금까지 머신러닝 공부를 하면서 느꼈던 여러가지 이야기를 전한다
Further Reading
Training Visualization
Tensorboard
- 학습 과정을 기록하고 트래킹 하는 것도 중요하다
- tensorboard 사용법
- logdir PATH : log가 저장된 경로
- hostADDR : 원격 서버에서 사용 시 0.0.0.0(default:localhost)
- portPORT : 포트 번호
Weight and Bias (wandb)
- 딥러닝 로그의 깃허브 같은 느낌
- wandb login
- wandb init, log 설정
- 페이지에서 로그 확인
Machine Learning Project
Jupyter Notebook
- 코드를 아주 빠르게 Cell단위로 실행해볼 수 있는 것이 장점
- 보통 EDA를 할 때 사용하면 매우 편리하다
- 학습 진행 도중 노트북 창이 꺼지면?못 돌아감
Python IDLE
- 구현은 한번만,사용은 언제든, 간편한 코드 재사용
- 사용할 줄 알면,어떤 코드도 무섭지 않게 된다는 “디버깅”
- 자유로운 실험 핸들링
Some Tips..
분석 코드 보다는 설명글을 유심히 보자
- 필자가 생각하고 있는 흐름을 읽을 수 있다
코드를 볼 때는 디테일한 부분까지
- 언제든 활용할 수 있을 정도로..
Paper with Codes
- 최신 논문과 그 코드까지