Tuning process

- learning rate $\alpha$ <-- 제일 중요한 하이퍼파라미터

- momentum term $\beta$

- Adam parameter $\beta_{1}$, $\beta_{2}$ : 거의 디폴트 $0.9$, $0.999$, $10^{-8}$ 사용하지만 튜닝 가능하긴 함

- 레이어 개수

- hidden unit 개수

- learning rate decay 파라미터

- 미니배치 사이즈

...

(>> 순으로 중요도)

 

그리드 모양으로 펼쳐진 점들을 따라 하이퍼파라미터를 찾곤 했음

하이퍼파라미터 개수가 상대적으로 적을 때는 괜찮음

그러나 만약 하이퍼파라미터1이 중요한 learning rate 이고 하이퍼파라미터2가 상대적으로 덜 중요한 $\epsilon$이라고 해보자 하이퍼파라미터2는 굳이 해보지 않아도 뻔한데, 그리드 형식을 따라간다면 동일한 하이퍼파라미터2에 여러번 테스트를 시행하게 됨

 

따라서 그 대신에 random 포인트를 따라가보기로 함

어떤 하이퍼파라미터가 제일 좋을지 알 수 없기 때문에

 

"Coarse to fine" sampling

 

좌측 하단쪽의 포인트들이 괜찮은 결과를 나온다면 그 부근을 확대하여 그 지역에서 밀도있게 샘플링함

 

 

Using an Appropriate Scale to pick Hyperparameters

sampling at random ≠ sampling uniformly at random

 

--> uniformly at random 하게 샘플링하는 것이 괜찮은 사례들

$l$번째 레이어의 hidden unit 개수 $n^{[l]} = 50,\ \ldots,\ 100$  

50에서 100 사이 숫자들로부터 하이퍼파라미터를 찾는 것은 visible한 방식이다

 

또 예를 들어 레이어의 개수 $L = 2,\ \ldots,\ 4$ 

여기서 2, 3, 4 중에서 uniformly at random 으로 샘플링하는 것도 resonable 하다 - 심지어는 grid search 도

 

--> 하지만 모든 하이퍼파라미터가 이와 같은 것은 아님

learning rate $\alpha = 0.0001,\ \ldots,\ 1$

위 범위를 그림으로 나타낸다면

uniform 하게 샘플링하는 것이 바른 방법이 아님

대신에 log scale 로 하이퍼파라미터를 찾는 것이 더 맞음 (logarithmic scale)

r = -4 * np.random.rand()
alpha = np.power(10, r)

이렇게 했을 때 $r \in [-4, 0]$ 이므로 $\alpha$는 $10^{-4}$와 $ 10^{0}$ 사이

 

좀더 일반화해서 $10^{a}$와 $10^{b}$ 사이를 log scale 에서 샘플링한다고 했을 때,

$a = \log_{10}0.0001$(low value), $b =\log_{10}1$(high value) 로 구할 수 있고, $r$을 $[a, b]$에서 uniformly at random 으로 샘플링, 하이퍼파라미터 $\alpha$를 $10^{r}$로 세팅한다

 

--> 하이퍼파라미터 $\beta$ for exponentially weighted averages 를 샘플링하기

$\beta = 0.9,\ \ldots,\ 0.999$ 사이에서 최적의 하이퍼파라미터를 찾아보려 함

0.9 라면 지난 10개의 값, 0.999라면 지난 1000개의 값에 대해서 평균을 구하게 됨

이 또한 마찬가지로 linear scale 에서 샘플링하는 것은 적절치 않음

$1-\beta = 0.1,\ \ldots,\ 0.001$ 라고 보고 이전에 구했던 방식으로 ...

$r \in [-3, -1]$ 에서 uniform 하게 랜덤 샘플링하고, $1-\beta = 10^{r}$, 즉 $\beta = 1-10^{r}$

이러한 방식으로, 0.9~0.99 사이를 살펴보는 resource만큼을 0.99~0.999에 쏟을 수 있음

 

--> linear 한 스케일에서 샘플링하는 것이 왜 적절하지 않은가?에 대한 수학적 설명

$\beta$가 1에 가까울수록, $\beta$에 따라 결과물이 변화하는 sensivity가 바뀐다

예를 들어, $\beta$가 0.9 에서 0.9005 로 변화한다면 큰 변화가 없을 것이다

하지만 $\beta$가 0.999 에서 0.9995 로 변화한다면 커다란 영향을 받게 됨 (전자는 지난 1000개의 값에 대해 평균을 구할 때, 후자는 2000개의 값에 대해 평균을 구함)

 $\beta$가 1에 가까운 지역에서는 더 밀도있게 샘플링하게 됨

 

 

Hyperparameters Tuning in Practice: Pandas vs. Caviar

"how to organzize hyperparameter search process"

 

(판다)babysitting one model : 훈련 도중에도 계속 지켜보기 (여러 모델을 동시에 테스트하기 어려운 환경일 때)

(캐비어)training many models in parallel : 병렬적으로 여러 모델 테스트하기

 

환경만 갖춰져 있으면 캐비어 전략을 취할 것

데이터가 너무 많거나 모델이 너무 커서 여러 모델 테스트하기 어려울 때는 판다 전략

 

'인공지능 > DLS' 카테고리의 다른 글

[2.3.] Multi-class Classification  (0) 2022.07.13
[2.3.] Batch Normalization  (0) 2022.07.12
[2.2.] Optimization Algorithms(2)  (0) 2022.07.12
[2.2.] Optimization Algorithms(1)  (0) 2022.07.11
[2.1.] Setting Up your Optimization Problem(2)  (0) 2022.07.06
복사했습니다!