Hyperparameter tuning

Sort of hyperparameter

  • \alpha : learning rate, very important
  • \beta
  • \beta1, \beta2, epsilon
  • #hidden units
  • #mini-batch size
  • #layers
  • learning rate decay
  • 등등.. 중요도에는 차이가 있음

How to choice

  • Try random values : Don't use a grid
  • 어떤 hyperparameter가 중요한지 알 수 없는 단계에서는, 격자에서 순서대로 선정하기 보다는, 아예 랜덤으로 선택하는 것이 낫다.
  • Coarse to fine : 먼저 무작위로 선택하다가 성능이 잘 나오는 곳 찾으면 그 근처에서 샘플링을  진행

Picking hyperparameters at random

  • Appropriate scale for hyperparameters
    • layer 갯수 같은 경우 2,3,4 식으로 선택하겠지만
    •  예를들어 \alpha 의 범위가 0.0001 ~ 1 일경우 이대로 쓰는게 아니라 log scale을 취한다.
    • r = -4 * np.random.rand() 라 정의하면 즉 r은 [-4,0] 사이의 값
    • \alpha = 10^r, 즉 [10^{-4}, 10^0] 사이

Hyperparameters tuning in practice

  • 한 어플리케이션의 하이퍼파라미터 튜닝이 다른 어플에 적용되지 않을 수 있음
  • 하물며 같은 어플리케이션의 데이터구성이 달라지면 (지속적인 데이터 업데이터 등 이유) 최적 하이퍼파라미터가 달라질 수 있어서 몇개월 마다 다시 테스트하기를 권함
  • 모델을 테스트 하는 두가지 방법 : Babysitting one model (Panda approach) vs Traning many models in parallel (Caviar(fish eggs) approach) 후자 방법의 경우 GPU등 자원이 넉넉한 경우, 전자는 학습 자원이 부족한 경우 중간중간 확인해가며 lr등을 조정하는 방법.