[BoostCamp AI Tech / Day 14, PytTorch] (09강) Hyperparameter Tuning

newbie·2021년 8월 22일
0

강의 소개

PyTorch 기반으로 여러 config들을 통해 학습할 때에 사용되는 parameter들을 실험자가 손 쉽게 지역 최적해를 구할 수 있도록 도와주는 Ray Tune 프레임워크로 최적화하는 방법을 학습합니다.

이를 통해 Grid & Random, 그리고 Bayesian 같은 기본적인 Parameter Search 방법론들과 Ray Tune 모듈을 사용하여 PyTorch 딥러닝 프로젝트 코드 구성을 하는 방법을 익히게 됩니다.


성능 개선 방법
1. 모델 변경(성능이 좋은 모델로...)
2. 데이터 변경(추가, 오류 확인, 증량)
3. 하이퍼 파라미터 튜닝

1번이 가장 개선이 많이 되지만, 사실 1번의 경우 task에 따라 모델이 구분되어 있으므로, 그 안에서 성능을 높일 방향은 데이터를 변경하는 것이다. 하지만 그 마저도 불가할 경우 하이퍼 파라미터 튜닝을 통해 성능을 개선한다. 단 생각보다 크게 성능이 개선되지는 않는다.

Hyperparameter Tuning

  • 모델 스스로 학습하지 않는 값으로 사람이 지정
    • learning rate, 모델의 크기, optimizer 등
    • 단, 요즘 이 하이퍼파라미터도 NAS(nueral architecture search)나 AutoML 등을 활용하여 선택 가능..
  • 하이퍼 파라미터에 의해서 값이 크게 좌우 될 때도 있음(요즘은 그닥 없음)
  • 마지막 0.01을 쥐어짜야 할 때 도전

grid search

  • 가장 기본적인 방법 - grid vs random
    • grid search : 특정 파라미터에 대해 몇 가지 탐색할 값들을 정해놓고 차례대로 확인
    • random search : 특정 범위 내에서 랜덤하게 파라미터 값 선택
    • 큰 범위에서 random search을 통해 성능이 잘 나오는 구간을 파악 후 grid search 진행
  • 최근에는 베이지안 기반 기법들이 주도
    • BOHB(bayesian optimization hyperband, 2018)

Ray

  • Multi-node multi processing 지원 모듈
  • ML/DL의 병렬 처리를 위해 개발된 모듈
  • 기본적으로 현재의 분산벙렬 ML/DL 모듈의 표준
  • Hyperparameter Search를 위해 다양한 모듈 제공

config : 학습 공간을 지정
ASHA(Async Successive Halving Algorithm) Scheduler : early stopping 조건 지정, 알고리즘이 실행되며 중간중간 의미 없는 metric들을 잘라냄

tune.run() : 실행
partial : 데이터 나눔,
resources_per_trial : 1번 실행 시 사용할 수 있는 자원(CPU,GPU 개수)
config : search space
즉 train_cifar 데이터를 각 cpu에 할당하여 학습을 진행하는데, 이 때 metric 기준 성능이 떨어지는 변수 조건은 제외시키고 나머지를 학습하며 최적의 하이퍼파라미터를 지정함

profile
DL, NLP Engineer to be....

0개의 댓글