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 |