본문 바로가기
AI 딥러닝/ML

[GP-4] 베이지안 최적화 (Bayesian Optimization)

by 세인트 워터멜론 2022. 7. 9.

어떤 미지의 함수의 최대값을 구하는 문제를 생각해 보자.

 

 

이 함수는 블랙박스 함수라서 그 수학적 표현을 알지 못할 뿐만 아니라 그 미분 또한 당연히 모른다. 다만 특정 포인트 \( \mathbf{x}\) 에서 함수값을 물어보면 답은 내줄 수 있다고 가정한다.

 

 

베이지안 최적화(BO, Bayesian optimization)는 이와 같은 조건하에서 함수의 최대값을 계산하기 위한 방법이다. 즉, 어떤 최적화 목적함수에 대한 수학적 표현식은 없지만 샘플링된 값을 얻을 수 있는 상황에 적용할 수 있는 최적화 방법인 것이다.

베이지안 최적화 방법에서는 샘플링된 학습 데이터를 사용하여 미지의 목적함수에 대한 가우시안 프로세스(GP) 모델을 구축하고, 목적함수의 불확실성을 최소화하거나 함수의 예측값을 최대화할 수 있을 것으로 기대되는 다음 포인트를 선정하여, 그 포인트에서 데이터를 샘플링하고, GP 모델을 업데이트하는 이터레이션(iteration) 작업을 통해서 목적함수의 최대값을 계산한다.

이터레이션 단계 \(t\) 에 이르기까지 수집한 데이터가 \(\mathcal{D}_t= \{(\mathbf{x}_i, y_i ), \ i=1, ... ,t \}\) 라고 하면 가우시안 프로세스 \(y=f(\mathbf{x})+ \epsilon \) 의 평균과 공분산은 다음과 같다.

 

\[ \begin{align} & \mu (\mathbf{x} \vert \mathcal{D}_t) = \mathbf{k}^T \left[ K+ \sigma_n^2 I \right]^{-1} \mathbf{y}_{1:t} \\ & \Sigma (\mathbf{x} \vert \mathcal{D}_t)= k(\mathbf{x}, \mathbf{x})- \mathbf{k}^T \left[ K+ \sigma_n^2 I \right] ^{-1} \mathbf{k} \end{align} \]

 

여기서 평균함수 \( \mu (\mathbf{x} \vert \mathcal{D}_t) \) 는 임의의 포인트 \( \mathbf{x}\) 에서 데이터셋 \(\mathcal{D}_t\) 를 조건으로 하여 추정한 가우시안 프로세스 측정값 \(y\) 의 평균을 의미한다. 공분산 \( \Sigma (\mathbf{x} \vert \mathcal{D}_t) \) 도 같은 의미의 공분산을 뜻한다. 그리고, \(\sigma_n^2\) 은 측정 노이즈의 공분산이며,

 

\[ \begin{align} & \mathbf{k} = \left[ k(\mathbf{x}_1, \mathbf{x}) \ ... \ k(\mathbf{x}_t, \mathbf{x}) \right]^T \\ \\ & K=\left[ K_{ij} \right] = \left[ k(\mathbf{x}_i, \mathbf{x}_j ) \right], \ \ i,j=1, ... , t \end{align} \]

 

이다.

이제 가우시안 프로세스 \(f(\mathbf{x})\) 로 모델링한 미지의 목적함수를 좀 더 잘 추정하거나 또는 그 최대값을 구하기 위해서, 그 다음 이터레이션에서 데이터를 샘플링하는데 필요한 포인트 \(\mathbf{x}_{t+1}\) 을 선정해보자. 데이터셋을 최소화하기 위해서는 어떤 샘플링 전략이 필요할 것이다. 두가지 극단적인 전략을 생각해 볼 수 있는데, 하나는 가우시안 프로세스의 불확실성을 최소화할 수 있는 포인트를 선정하는 것이고, 다른 하나는 함수의 최대값과 가까울 것으로 예측되는 포인트를 선정하는 것이다.

첫번째 샘플링 전략을 탐색(exploration) 전략 또는 적극적 학습 전략이라고 한다. 함수의 공분산이 크다는 것은 곧 불확실성이 크다는 의미이므로, 이 전략에서는 공분산 \( \Sigma (\mathbf{x} \vert \mathcal{D}_t) \) 이 최대인 지점을 다음 샘플링 포인트로 선정한다. 두번째 샘플링 전략은 활용(exploitation) 전략으로서 현재까지 취득한 데이터를 기반으로 함수의 최대값으로 예측되는 지점인 평균함수\( \mu (\mathbf{x} \vert \mathcal{D}_t) \) 를 최대화하는 점을 다음 샘플링 포인트로 선정한다. 이 전략은 단지 기존에 취득한 데이터에 기대어 최대값을 예측하는 것이기 때문에 탐욕적(greedy) 방법이라고도 한다.

예를 들어서 다음 그림에서 빨간색 실선은 미지의 목적함수, 파란색 점선은 가우시안 프로세스의 평균함수, 하늘색 영역은 \(3 \sigma\) 표준편차, 검정색 X 는 샘플링 포인트이다. 표준편차가 클수록 함수의 불확실성이 큰 영역이다.

 

 

적극적 학습 전략을 사용한다면 다음 샘플링 포인트는 표준편차가 가장 큰 \(x=2\) 가 될 것이다. 아래 그림은 \(x=2\) 점에서 샘플링 했을 때의 그림이다. \(x=2\) 부근에서 불확실성이 확실히 감소했다는 것을 알 수 있다.

 

 

반면에 활용 전략을 사용한다면 다음 샘플링 포인트는 \(x=-0.5\) 가 되어야 할 것이다. 아래 그림은 \(x=-0.5\) 점에서 샘플링 했을 때의 그림이다. 빨간색인 미지의 목적함수의 최대값 부근에서 가우시안 프로세스의 평균함수가 한층 더 정교해진 것을 볼 수 있다.

 

 

 

 

그렇다고 활용 전략이 항상 유용한 전략은 아니다. 강화학습(reinforcement learning)에서와 마찬가지로 베이지안 최적화에서도 탐색과 활용의 적절한 균형을 잡는 것이 중요하다.

강화학습에서는 일반적으로 학습 초기에는 적극적인 탐색을 우선시하다가 점차로 활용에 비중을 더 주는 전략을 사용하곤 하는데, 베이지안 최적화 방법에서는 탐색과 활용의 특성을 적절히 섞어 만든 획득함수(acquisition function)라는 것을 이용한다. 일반적으로 획득함수는 불확실성과 예측값의 적절한 조합으로 설계되며, 이 획득값을 최대화하는 포인트를 다음 샘플링 포인트로 선정한다.

문헌에 의하면 획득함수로 몇가지 함수가 제안되었는데 가장 많이 사용되는 것으로는 PI(probability of improvement), EI(expected improvement)와 UCB(upper confidence bound) 가 있다. 어떤 논문에 의하면 한가지 획득함수를 사용하는 것보다 몇가지 획득함수를 동시에 활용하는 것이 좋은 성능을 발휘했다고도 한다.

가우시안 프로세스를 이용한 베이지안 최적화 알고리즘을 정리하면 다음과 같다.

    \(t=1,2,3, ... \) 에 대해서 다음을 반복한다.

        1. 데이터셋 \(\mathcal{D}_{1:t}\) 을 이용하여 커널함수의 하이퍼파라미터를 최적화 한다.

 

\[ \Theta^* = \arg \max_{\mathbf{x}} \log p(\mathbf{y}_{1:t} \vert \mathbf{x}_{1:t} , \Theta ) \]

 

        2. GP 모델을 업데이트 한다.

 

\[ \begin{align} & \mu (\mathbf{x} \vert \mathcal{D}_t) = \mathbf{k}^T \left[ K+ \sigma_n^2 I \right]^{-1} \mathbf{y}_{1:t} \\ & \Sigma (\mathbf{x} \vert \mathcal{D}_t)= k(\mathbf{x}, \mathbf{x})- \mathbf{k}^T \left[ K+ \sigma_n^2 I \right] ^{-1} \mathbf{k} \end{align} \]

 

        3. 획득함수(acquisition function) \(u\) 를 이용하여 다음 샘플링 포인트 \(\mathbf{x}_{t+1}\) 를 찾는다.

 

\[ \mathbf{x}_{t+1} = \arg \max_{\mathbf{x}} u(\mathbf{x} \vert \mathcal{D}_{1:t} ) \]

 

        4. 목적함수에서 측정값을 샘플링한다.

 

\[ y_t=f(\mathbf{x}_t )+ \epsilon_t \]

 

        5. 데이터셋에 측정값을 편입한다.

 

\[ \mathcal{D}_{1:t+1} = \{ \mathcal{D}_{1:t}, \ (\mathbf{x}_{t+1}, y_{t+1} ) \} \]

 

 

 

'AI 딥러닝 > ML' 카테고리의 다른 글

[GP-3] GP 커널 학습  (0) 2022.07.05
[GP-2] GP 회귀 (GP Regression)  (0) 2022.06.30
[GP-1] 가우시안 프로세스 (Gaussian Process)의 개념  (0) 2022.06.26

댓글