딥러닝 모델의 hyperparameter search

1. hyperparameter

 

모델을 train할 때 사람이 골라주는 parameter

 

learning rate, batch size, optimizer, …. 등등

 

어떤 hyperparameter를 사용할지에 따라 모델이 무슨 결과를 낼지는 해보지 않고서는 도저히 예측 불가능

 

그래서 hyperparameter search를 할 때는 model을 돌려서 결과를 보고나서 마음에 안드면 다른 hyperparameter를 고르고 그래

 

그런데 model 하나가 돌아갈 때 드는 cost는 거의 대부분 엄청나게 많아

 

단순히 돌아가는 것 뿐만 아니라 hyperparameter 변화로 모델이 그냥 이상해질 수도 있어서 그에 따른 비용도 엄청 남

 

그래서 hyperparameter search에는 parameter search에 비해서 cost가 엄청나게 많이 든다는 것이 기본 전제다.

 

찾은 hyperparameter로 무슨 효과일지 모르니까 일단 모델을 돌려 결과를 확인하는 exploitation

 

(exploitation결과가 마음에 안들면) 찾아낸 hyperparameter중 어떤 hyperparameter를 사용할 지 탐색하는 exploration 과정의 반복 연산이다.

 

다양한 hyperparameter search 방법들

 

2. grid search vs. random search

 

grid search는 parameter의 가능한 조합 space에서 정확히 격자 배열에 존재하는 조합만 사용하겠다는 것

 

random search는 grid search보다는 조금 더 넓은 범위의 느낌인데 parameter space에서 random하게 조합을 선택하여 사용

 

 

A가 최적일 수 있지만 grid search는 사용하지 않고 격자에 위치한 9가지만

 

이런 의미에서는 random search가 좋을 수 있음

 

초록색이 objective function이어서 x축을 objective에 직접 영향을 미치는 parameter, y축을 덜 영향을 미쳐서 덜 중요한 parameter라고 구분지었는데 아무리 생각해도 딱히 의미 없는 말인듯

 

 

3. manual search

 

논문에서 지시한대로 써보거나 직관적, 경험적으로 좋은 parameter를 사용하는 방법

 

 

4. surrogate model

 

model의 hyperparameter를 찾기 위한 ML model을 만들어 search하는 방법

 

본 모델의 hyperparameter set를 input으로 받고

 

이 hyperparameter를 본 모델이 사용했을 때 나타나는 validation loss를 output으로 학습을 하는 model이 surrogate model

 

 

5. gaussian process

 

surrogate model의 대표적인 방법

 

surrogate model이 머신러닝 모델을 돌려서 찾는 방법이라고 바로 위에서 이야기했지만

 

gaussian process는 그런 느낌은 아니고 더욱 저비용으로 조금 더 많은 탐색, 조금 더 유의미한 결과를 도출할 수 있는 방법이다???

 

surrogate model의 도식

 

TAGS.

Comments