본문 바로가기

DeepLearning Specialization(Andrew Ng)/Improving Deep Neural Networks

[Week 3] 1. Hyperparameter tuning

728x90
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"

 

 

비판과 질문은 언제나 환영입니다. 많이 꾸짖어주세요.

728x90