brunch

You can make anything
by writing

C.S.Lewis

by Tristan Oct 19. 2020

Bayesian Optimization

Hyperparameter tuning

 Optimization

 Optimization은 어떤 임의의 함수 f(x)의 값을 가장 크게(또는 작게)하는 해를 구하는 것이다. 이 f(x)는 머신러닝에서 어떤 임의의 모델이다. 예를 들어 f(x)를 딥러닝 모델이라고 하자. 이 모델은 여러가지 값을 가질 수 있다. layer의 수, dropout 비율 등 수많은 변수들이 있다. 이 변수들이 x이다. 그리고 이 변수들을 조정하여 주어진 데이터 셋에 대해서 가장 좋은 결과를 내어놓는 x를 찾는 것이 것이 hyperparameter tuning이라고 할 수 있다.


Hyperparameter tuning

가장 간단하게 생각해볼 수 있는 Hyperparameter tuning법은 GridSearch와 같은 방식이다. 어떤 범위안에서 일정한 간격으로 숫자를 바꿔서 최적의 모델을 찾는 것이다.

하지만 기존의 결과들을 이용하여 parameter를 설정하는 방법이 있지 않을까?

그래서 나는 Bayesiam Optimization을 써보기로 결정했다.


Baysian Optimization

Baysian Optization은 surrogate model과 Acquisition function으로 나뉜다.


Surrogate model은 지금까지 추론한 결과들을 바탕으로 f(x)의 대략적인 값을 추정하는 것이다. 이 대략적인을 어떻게 할 것인가가 surrogate model의 핵심이다. 보통 surrogate model로 gaussian process을 가장 많이 사용한다. 수학적으로 엄밀하게 증명하는 것은 복잡하지만 직관적으로 이해해보면 간단하다.

 아래의 그림에서 빨간색 점들이 이미 검사한 x 값들이고 실선이 gaussian process의 평균값(f(x)의 값으로 예측되는 값)이며 빨간색 점선이 실제 f(x)값이다. 빨간점들은 이미 검증한 곳들이고 빨간점에서 멀어질수록 불확실성이 커지는 형태를 보여주고 있다.

    당연히 검사한 지점은 확실하기 때문에 불확실성이 0이고, 검사한 지점으로부터 먼 곳은 점점 알 수 없어지는 것이므로 gaussian process를 surrogate model로 쓰는 것은 이해가 된다.

Aqusition Function

아래와 같이 Aqusition Function이란 surrogate model의 확률분포를 이용해서 나온 확률분포를 이용해서 지금까지 나온 값들보다 더 큰 값이 나올 가능성이 제일 높은 점을 알려주는 함수이다.

출처 : http://dmqm.korea.ac.kr/activity/seminar/285

가장 큰 점을 찾기 위해서는 2가지 전략이 있다. exploration과 expectation이다. exploration은 불확실성이 가장 높은 곳에서 지금까지 나온 값들보다 더 좋은 것이 있을 것이라는 전략이다. expectation은 지금까지 나온 것들 중에서 높은 값들 근처에서 더 좋은 것이 있을 것이라는 전략이다. 이 둘을 적절하게 균형을 잡을 수 있도록 aqusition function을 만든다. 이 함수를 Expected Improvement 함수라고한다. 


참고

https://research.sualab.com/introduction/practice/2019/02/19/bayesian-optimization-overview-1.html

http://dmqm.korea.ac.kr/activity/seminar/285


브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari