Hyperparameter tuning |
1. Tuning process |
2. Using a appropriate scale to pick parameter |
3. Hyperparameter tuningin practice : Panda vs. Cavier |
1. Tuning process
정갈하게 바둑판 모양으로 hyperparameter를 선택해서 하는 것보다 산발적으로 random하게 뽑는 것이 더 좋다.
이유는 여러개의 hyperparameter 중에 뭐가 중요한지 모르며, random으로 할 경우 더 많은 값을 시도해볼 수 있기 때문이다.
random하게 선택하고 성능을 체크하면 특정 부분에서 성능이 좋아짐을 확인할 수 있는데, 그 부분의 hyperparameter 조합을 더 밀도있게 적용시켜보는 'Coarse to fine' 작업도 필요하다.
2. Using an appropriate scale to pick hyperparameter
앞서 언급했듯이 특정 범위에서 hyper parameter를 랜덤으로 추출해야하는데, 그 범위 설정이 문제다.
만약 layer의 개수나 unit의 수와 같이 정수값의 경우 그냥 특정 범위를 설정해놓고 랜덤으로 추출해도 문제가 없으나, learning rate나 beta값의 경우 0.00001 ~ 1 의 범위(예를 들어)에서 hyper parameter를 뽑아야한다. 단순히 저 범위에서 random으로 sampling을 하게 되면 0.00001 과 0.0001 사이의 수들은 선택되기 어려워지고 90프로 이상은 0.1~1의 범위에서 뽑혀진다.
그런데 learning rate나 beta의 경우, 0.00001과 0.00011의 차이와 0.5001 과 0.05001의 차이는 같지만 그 효과는 다르다. 작은 값에 대해서 실질적인 random sampling이 이루어지기 위해서 hyper parameter의 범위를 수정할 필요가 있다.
그 방법이 바로 log 변환이며 위와 같이 r 값을 random 으로 뽑는 것이다.
3. Hyperparameters tuning in practice : Panda vs. Caviar
Hyperparameter를 튜닝할 때, 산출자원(CPU/GPU)이 부족하여 한가지 모델을 돌릴 수 밖에 없는 경우 그 한가지 모델을 돌리며 Hyperparameter를 중간중간 조절하며 Cost 값을 떨어뜨리는 방식을 "Panda approach"
여러 모델을 병렬적으로 돌리고 제일 성능이 좋은 모델을 취하는게 "Caviar approach"
비판과 질문은 언제나 환영입니다. 많이 꾸짖어주세요.
'DeepLearning Specialization(Andrew Ng) > Improving Deep Neural Networks' 카테고리의 다른 글
[Week 3] 3. Multi-class classification (0) | 2020.10.25 |
---|---|
[Week 3] 2. Batch Normalization (0) | 2020.10.24 |
[Week 2] Programming Assignments (0) | 2020.10.24 |
[Week 2] 1. Optimization Algorithms (0) | 2020.10.23 |
[Week 1] Programming Assignments (0) | 2020.10.23 |