딥러닝/Hyperparameter Optimization

[BoTorch] Bayesian Optimization을 딥러닝에 적용 (1) - BO 알고리즘

녕집사 2023. 8. 3. 16:28
반응형

데이터를 최적화 하고자 할 때 많이 쓰이는 알고리즘 중 하나를 얘기하라고 한다면 BO(Bayesian Optimization)을 빼놓을 수 없습니다. 

머신 러닝 알고리즘을 구현했지만 알고리즘에 적용되는 hyperparameter를 일일이 조정하기는 쉽지 않을 수 있습니다. 

물론 운이 좋아 적절한 파라메타를 찾았다면 좋겠지만요.

하이퍼 파라메타를 사람이 직접 수정하지 않고 알고리즘에 맡겨 찾고자 하는 과정을 BO 알고리즘이 대신해준다고 볼 수 있습니다. 

 

BO 알고리즘 내부에는 하이퍼 파라메타를 찾기 위한 탐색 방법(grid search, random search, 등등)이 여러가지 있으며 최적의 관측값을 찾기 위한 함수인 acauisition function도 있습니다. 

 

BO알고리즘을 다음과 같은 수식으로 간략하게 표현할 수 있습니다.

 

surrogate model이란 찾고자 하는 데이터를 모델의 형태로 보여주기 위한 모델이라고 보시면 됩니다. 알고리즘의 예로는 gaussian process를 통한 surrogate model을 주로 사용합니다.

 

새로운 관측값(new data)이 들어올 때마다 surrogate model은 점점 더 구체화 하며 데이터를 표현하기 시작합니다.

 

이때, 새로운 관측값이 아무 것이나 들어오면 안되겠죠?

 

그래서 이때 사용하는 함수가 acquisition function을 사용하게 됩니다. acquisition function에도 여러가지의 함수(POI, EI, GP-UCB, TS 등등)가 존재합니다. 각 상황에 맞게 적절한 함수를 사용하면 됩니다. 주로 사용하는 함수는 GP-UCB, TS가 있습니다.

 

실제로 BO 알고리즘이 최적의 point를 찾아가는 실험 과정을 보여드리겠습니다. Ackley Function을 최적화하는 과정입니다.

 

Ackley Function은 최적화 문제에서 많이 다루는 함수의 형태이며 수식은 다음과 같습니다. 

 

코드 및 함수의 그래프는 다음과 같습니다.

 

 

 

 

딱 봐도 복잡하게 생겼고 local minima에 빠지기 쉽게 생겼습니다.

이제 이 함수를 BO 알고리즘으로 최적화 하는 과정을 그래프로 나타내보겠습니다.

 

 

https://github.com/bayesian-optimization/BayesianOptimization

시간이 지남에 따라 적절하게 수렴되는 모습을 볼 수 있습니다. 

 

2D로도 표현하도록 해봅시다.

global optima에 수렴되는 것을 볼 수 있습니다.

 

지금까지 간략하게 BO 알고리즘이 동작되는 것을 시각적인 결과들과 함께 살펴봤습니다. 

최적화 하고자 하는 함수 혹은 알고리즘이 있다면 BO 알고리즘을 통해서 해당 데이터 혹은 알고리즘 함수들을 최대한 global optima에 수렴하도록 할 수 있게됩니다. 다양한 acquisition function 을 적용해서 최적의 함수를 찾는 다면 적용하고자 하는 문제에 대해 많은 것을 해결할 수 있을 겁니다.

 

다음 게시물에서는 BO를 딥러닝에 적용하는 과정을 살펴보겠습니다.

 

반응형