데이터사이언스 이론 공부

하이퍼 파라미터 튜닝에 관하여

soopy 2022. 9. 13. 06:37
728x90

하이퍼 파라미터는 머신러닝 과정에서 직접 선택해줘야 하는 값을 의미한다.

여기서 그냥 파라미터와 헷깔릴 여지가 있기 때문에 미리 짚고 넘어가자.

머신러닝에서의 파라미터는 목적함수 $h_{\theta}(x)$의 해($\theta$)를 의미하며,

하이퍼 파라미터는 모델링에서 우리가 직접 선택해야 하는 옵션값들을 의미한다.

어떤 모델을 선택하느냐에 차이가 발생하지만

LGBM 모델의 경우 max_depth, num_leaves, n_estimators 등이 해당하고,

SVM의 경우 cost, gamma가 해당하며,

DNN의 경우 epoch, batch_size, dropout 등이 해당할 것이다.

각 모델을 깊게 살펴본다면 우리가 손수 설정해야할 하이퍼 파라미터값들이 생각보다

훨씬 많다는 것을 알 수 있을 것이다.

** 참고로 hyper-parameter optimization이라고 표현하는 것이 좀 더 정확한 표현이라고 한다.

 

하이퍼 파라미터의 최적값을 찾는다는 것은?

예측 모델이라면 일반적으로 실제값과 예측값 사이의 에러값을 최소화하는 모델을 찾는 것이 되겠고,

분류 모델이라면 accuracy, precision, recall, f1-score값을 최대화 하는 모델을 찾는 것이다.

예측과 분류 모두 동일한 점은 주어진 샘플을 기반으로 앞으로 모여질 샘플까지 포함할 수 있는

가장 이상적인 분포를 찾는 것이다.

이 과정에서 우리가 선택해야하는 값인 하이퍼 파라미터를 어떻게 설정하느냐에 따라

모델의 성능에 미치는 영향이 생각보다 크기 때문에 모델링 프로젝트의 끝단에서

반드시 수행해야할 과정이다.

 

하이퍼 파라미터 최적화를 위한 방법

  • Grid Search
  • Random Search
  • Bayesian Optimization

Grid Search는 가장 단순하고 손쉬운 방법으로 광범위하게 사용되는 방법이다.

여러 하이퍼 파라미터값을 후보로 지정해 주면 후보의 모든 조합 만큼 동일한 조건으로 학습시켜

가장 높은 성능을 도출한 값을 알려주는 방식이다.

인간이 수동으로 해야할 일을 자동으로 해주는 정도의 효과라고 생각한다.

후보 등록을 최대한 많이 설정하면 최적값을 찾을 확률이 높겠지만

그만큼 학습 횟수가 증가함을 의미하므로 많은 시간과 자원을 필요로 하게 된다.

그렇기 때문에 마치 스무고개를 하듯 처음에는 범위를 넓게 설정하고, 결과에 따라

점진적으로 폭을 좁혀가는 방식으로 접근하는 것이 효율적이다.

 

Random Search는 그리드 서치와 크게 다르지 않으나 지정한 범위 내에서 랜덤한 조합을 뽑아

학습시켜 최적값을 찾는 방식이다.

말 그대로 랜덤이기 때문에 그리드 서치보다 더 좋은 성능값을 찾을 수도, 찾지 못할 수도 있다.

그럼에도 사용하는 이유는 그리드 서치보다 상대적으로 탐색 속도가 빠르기 때문이다.

 

Bayesian Optimization은 위 두가지 방법과 달리 매번 학습 과정에서 발견한 정보를

다음 학습 과정에서 충분히 활용한다는 장점이 있다. 먼저 미지의 목적 함수 $f(x)$를 정해두고,

미지의 목적 함수가 최대값이 되게 하는 튜닝값을 확률적인 추정에 근거하여 추천해주는 방식이다.

최적화 라는 단어가 가장 어울리는 알고리즘이고, 최적화 과정에 대한 설명력을 획득할 수 있다.

하지만 우리가 학습하는 데이터의 분포는 단순 Convex 함수가 아니므로 국소적인 최적해를 겨냥할

가능성이 있으며 이러한 관점에서 봤을 때 랜덤 서치가 global minimum을 찾을 가능성이 더 높아 보이기도 한다.

 

최적화를 위해서는 위 세가지 방법을 의도에 따라 적절하게 활용하는 것이 중요한데

가령 Grid Search를 통해 거시적 관점으로 하이퍼 파라미터 후보를 넓게 설정하여 최적값을 탐색한 후

Random Search를 통해 미시적 관점으로 후보군의 범위를 좁게 설정하고, 그렇게 찾는 최적값을 기준으로

Bayesian Optimization에 적용하면 어떨까 하는 생각이 든다.

728x90
728x90