ML || DL/이론

[Coursera] DLS_C2W3: Hyperparameter Tuning

junmukbap98 2023. 9. 17. 21:52

1. Hyperparameter Tuning

: 최적의 하이퍼파라미터 세팅을 찾는 방법

 

(1) Tuning process

우리는 learning rate $\alpha$, $\beta$ (momentum), $\beta_{1}$, $\beta_{2}$, $\epsilon$ (Adam), # layers, # hidden units, learning rate decay, mini-batch size 등등 선택해야할 하이퍼파라미터가 매우 많다. 

Ng 교수님은 빨->주->파 순서로 중요하다고 생각하신다고 한다. 

 

  • Grid search
    Grid search는 왼쪽에 있는 그림처럼 hyperparameter를 찾는다. ML 초기에는 이런 방법을 많이 사용했다. 여러 개의 point 중에서 가장 잘 작동하는 point를 고르는 방식이다. 찾아야하는 Hyperparameter1이 $\alpha$이고, 2가 epsilon일 때, 상대적으로 $\alpha$가 더 많은 영향을 미치기때문에 grid search는 매우 비효율적이다.

  • Random search
    말 그대로 랜덤하게 point들을 골라서 잘 나온 성능을 뽑는다. 이때 상대적으로 덜 중요한 hyperparameter2의 구간을 줄이고, 1의 구간을 좀 더 넓힌다면, 1보다는 좀 더 효율적으로 찾을 수 있다. 

  • Coarse to fine search
    먼저 coarse하게 points를 찾고, 성능이 잘 나오는 영역만을 대상으로 fine하게 points를 찾는다.

 

(2) Hyperparametert 선택을 위한 적절한 scale 사용하기

  • Picking hyperparameters at random
    : # hidden units이나 # layer와 같이 정수 형태로 hyperparameter를 고르는 것은 randomly search해도 된다.
    예를 들어 # hidden units ($n^{[l]}$)을 50에서 100 사이에서 가장 적절한 것을 찾고싶다하면, 50~100 사이에서 랜덤하게 uniform sampling을 하면 된다.

  • Appropriate scale for hyperparameters
    : 하지만, learning rate를 0.0001에서 1사이에서 찾는다고 하면 (uniform하게 sampling하면), 0.0001~0.1 사이의 값들은 10%, 0.1~1.0 사이의 값들은 90%를 차지할 것이다. 따라서 적절하지 않다. 그래서 우리는 log scale을 활용해서 sampling을 한다. 
    r = -4 * np.random.rand() --> r은 [-4, 0] 에서 uniform하게 random sampling되고, 우리는 10^r 을 learning rate로써 활용한다.