Hyperparameters Tuning

Hyperparameter Tuning

심층 신경망(Deep neural network) 모델을 구성하는데에 있어 가장 힘든 점 중 하나는 바로 신경써야 할 Hyperparameter의 개수가 너무 많다는 것이다.

Machine Learning의 초기에는 Hyper parameter의 개수가 별로 없었기 때문에 아래 그림의 왼쪽과 같은 방법을 사용했다.

hyper1

만약 Tuning해야하는 Hyperparameter가 2개가 있다고 하면, x,y축으로 놓은 후 격자를 생성해 일정 범위마다의 조합을 테스트한다.

하지만 이 방법에는 치명적인 문제점이 있다. 만약 Hyperparameter1이 Learning rate라고 해보자. Learning rate는 딥러닝에 있어서 가장 중요하다고 말해도 과언이 아닌 파라미터다.

그럼에도 불구하고 왼쪽처럼 테스트를 할 경우, 25가지의 조합 중 Learning rate의 종류는 5개밖에 없다.

따라서 우리는 오른쪽처럼 조합을 Random하게 sampling하여 사용하여야 한다.

더 나아가, 어떠한 포인트에서 모델이 잘 작동하면 그 조합의 주위를 zoom-in하여 더 밀도있는 범위를 탐색하는 coarse to fine 기법을 활용할 수도 있다.

coarse


Random sampling

Hyperparameter는 전체적인 범위에서 uniform하게 random으로 산출할 경우 제대로 sampling이 되지 않을 수 있다.

예를 들어 Learning rate를 random sampling하는데 0.0001 ~ 1 사이의 값을 뽑고싶다고 생각해보자.

확률상 0.0001~0.1 사이의 값은 0.1~1의 값보다 10배 적은 비중을 차지하게 될것이다.

이 문제점을 해결해 줄 수 있는것이 바로 Log scale sampling이다.

앞의 예처럼 0.0001~1의 범위를 log scale하고싶으면 각 범위의 최소, 최댓값에 log를 취해준다.

a = -4, b=0이 될것이고, [-4,0] 사이에서 random한 숫자 r을 뽑아 원하는 임의의 샘플 10^r을 공평하게 뽑을 수 있다.

다른 예로 Exponentially weighted average (지수 가중평균 이동)에 필요한 Hyperparameter인 B를 sampling한다고 생각해보자.

B의 범위를 0.9~0.999를 염두해두고있다고 가정하면 10개의 평균을 취하게되는 0.9와 1000개의 평균을 취하게되는 0.999 또한 linear scale에서 뽑는것은 올바르지 않다.

비슷하게 1-B를 log scale에서 뽑는것으로 해결할 수 있다. 1-B의 범위인 0.1~0.001을 앞과 같은 방법으로 뽑아주고 B=1 - 10^r 로 만들어주면 된다.


Hyperparameters Tuning in Practice

Hyperparameter들을 언제, 얼마나 자주 튜닝하냐는 현재 주어진 데이터의 특성과 컴퓨팅 환경(CPU,GPU)에 따라 달리 접근할 수 있다.

만약 데이터가 Computer vision과 같이 매우 큰 범위이거나, 컴퓨팅 자원이 한정되어 있는 상황이라면 하나의 모델을 가지고 학습시켜나가며 세부적으로 Hyperparameter들을 tuning하는 방법을 생각할 수 있다.

이러한 방법은 판다가 소수의 새끼를 낳고 성체가 될 때까지 곁에서 돌봐주는 것과 비슷하게 생각할 수 있으며, Babysitting one model 이라고 부른다.

반대로 물고기가 수많은 알을 낳고 신경을 쓰지 않으며 최대한 많은 새끼가 생존하길 기대하는 것처럼 여러가지 조합의 Hyperparameter 로 구성한 모델들을 동시에 학습시켜 결과를 보는 방법도 있다.

모델을 동시에 학습시키므로 컴퓨팅 자원이 충분해야한다는 조건이 있으며 이는 Training many models in parallel이라고 부른다.

hptuning


연관글

Improving Deep Neural Networks: Hyperparameter Tuning, Regularization and Optimization

Practical Aspects of Deep Learning(1)

Practical Aspects of Deep Learning(2)

Optimizing Algorithms

Hyperparameter Tuning

Batch Normalization

Softmax Regression