Bayesian Optimization
- 공유 링크 만들기
- X
- 이메일
- 기타 앱
안녕하세요
화공공대생입니다.
이전에 간단하게 가우시안 프로세스에 대하여 알아보았습니다. 해당 글은 여기를 참조해주세요. Bayesian Optimization 은 가우시안 프로세스를 응용해서 모르는 영역에 대하여 Regression하는 과정이라고 볼 수 있습니다.
Bayesian Formula
Bayesian Optimization에 알아 보기 전에, 용어 먼저 살펴보겠습니다. Prior : 사건 전 분포 (주어진 데이터), Posterior : 사건 후 분포 (주어진 데이터로 부터 새로운 데이터 예측), likelihood : 확률 밀도 함수(P.D.F.)에서 의 값. 수식까지는 정의이니 쉽게 이해하실 수 있으실 것입니다.
\begin{equation}\begin{aligned}& p(\theta|X) =\frac{P(X|\theta)P(\theta)}{P(X)} \\&P(X|\theta):likelihood\\&P(\theta) : prior \\& p(\theta|X) : Posterior\end{aligned}\end{equation}
여기에서 식은 특별한게 없어 보입니다. 하지만 P(X)를 다음과 같이 써준다면, 분모에 있는 값은 Normalization 시켜주는 역할을 하는 것을 알 수 있습니다. 위와 같이 정규화 작업을 시켜준 Parameter를 이용했을 때, 더 좋은 결과 값을 얻을 수 있습ㄴ니다.
\begin{equation}P(X)=\int P(X | \theta) P(\theta) d\theta\end{equation}
분모와 똑같이 되니 다음과 같은 형태와 비교해주면, 쉽게 Normalization 시켜주는 역할임을 알 수 있습니다.
\begin{equation}\hat{X_i} \rightarrow \frac{ X_i }{\sum_i X_i}\end{equation}
자, 그러면 일단 Posterior는 Normalization 된 분포가 됩니다. 여기서 그러면 평균이 0이고, 어떠한 분산을 가지는 형태를 나타낼 것입니다. 여기서 분산을 나타내는 함수가 바로 kernel이 되게 됩니다. 이 부분은 가우시안 분포에 의해 결정 됩니다.
Weight Factor Distribution (Prior)
가우시안 프로세스를 다시 한번 생각해보도록 하면 Weight factor W( \theta ) W ~ N(0, \Sigma ) 분포를 따릅니다. Weight factor들과 Basis function \phi 선형적인 관계를 가지고, error를 최소화 시켜야고 한다고 햇을때, 아래와 같이 수식화 해줄 수 있습니다.
\begin {align} P(W) & = exp(-1/2W^T\Sigma_p^{-1}W) \\Y &=\phi^T W \\P(Y |\phi,w) &= exp(\frac{-1}{\sigma_n^2}(y-\phi^T W)^T (y-\phi^T W)) \, \text{where y= experimental data} \\\end {align}
여기서 이제 Bayesian form을 사용하여 Posterior를 예측을 하게되면, 기존의 에러를 최소화 시키는 W의 분포를 P(W)라고 하며, Prior 라고 말해줍니다. 다음으로, 해당 데이터를 기반으로 다시 W의 분포를 추정하는 것이 Posterior 가 됩니다.
Weight Factor Distribution (Posterior)
Posterior는 Bayesian 공식을 이용해서 풀어주면 다음과 같겠습니다. (7)번식을 풀기 위해서는 (4)번식과 (6)번식을 곱해주기만 해서 어떠한 분포에 비례하는지 확인해 볼 수 있습니다.
\begin {align}P(W | \phi ,y) &=\frac{P(W)P(Y|\phi,w)}{\int P(W)P(Y|\phi,w) dW} \\P(W | \phi ,y) & \propto exp(-1/2W^T\Sigma_p^{-1}W) *exp(\frac{-1}{\sigma_n^2}(y-\phi^T W)^T (y-\phi^T W) \end{align}
(8)번식을 풀어 주고, 정규화 작업을 해주게되면 다음의 분포를 따르게 됩니다.
\begin{align}P(W | \phi ,y ) & \sim (\frac{1}{\sigma_n^2}A^{-1}\phi y,A^{-1}) \, where A=1/\sigma_n^2(\phi\phi^T+\Sigma_p^{-1}) \\K&=\phi^T\Sigma_p\phi\end{align}
여기서 10번 식에서 K로 치환을 해주게 됩니다. 여기서 K는 Covariance가 되어 결국은 Kernel Matrix로 표현이 됩니다. 여기까지 Posterior에 대한 분포를 구해보았습니다. 다음으로는 Prediction을 해주면 됩니다.
Prediction (Kernel Trick)
그러면 가우시안 프로세스에서는 Moving Average을 사용한다고 했습니다. 여기서도 당연히 똑같이 나타나게 됩니다. 일단 평균에 정의부터 보고 다음 단계로 넘어가겠습니다.
E(X)=P(X)^TX
여기서 E(X)를 구할때, 평균을 구해주면되죠?? 다만, 새로운 x* data가 들어왔을 경우 P(X)에 대한 Matrix를 어떻게 짜줘야 하는지가 조금 애매해지게 됩니다. 이는 간단하게 다음과 같은 Matrix로 표현이 됩니다. 기존의 알고 있는 상태의 Matrix를 K로 두겠습니다. 다음으로 모르는 상태의 matrix에 대하여 k*으로 두게 되면 전체 Matrix 형태는 다음과 같은 Matrix를 가지게 됩니다.
f^* : x^* \text{ 에 대한 Prediction 값, } \Phi^*= \phi(x^*) \\\begin{align}P(f^* |x^*,\phi |y) &=\int P(f^*|x^*,w)P(w | \phi,y)dW \sim N(1/\sigma_n^2\Phi^{*T}A^{-1}\phi y,\Phi^{*T}A^{-1}\Phi^{*T} )\end{align}
뭔가 복잡한 듯이 식이 쓰여있습니다. 간단히 생각해보자면, Weight factor를 새로운 Point에 곱한 결과 값임을 알 수 있습니다. 위 식을의 분산은 Kernel matrix형태로 표현을 해주게 되면 아래와 같습니다. 이때의 평균 값은 다음과 같이 정의 됩니다.
\left[ \begin{matrix} K & k^* \\k^{*T} &k ^{**} \end{matrix} \right ] \\f^*=k^{*T}K^{-1}y
Bayesian Optimization
Acquisition function
Active Learning할 때, Sampling point는 Acquisition function을 이용하게 됩니다. 이에 대한 기본 아이디어는 새로운 x 포인트를 골랐을 때, 증가할 확률(Probability of improvement)이 제일 높은 곳을 골라주면 됩니다.
\begin{align}PI(x) &= P( f(x^+)\leq f(x)), \, where \, x^+=arg\max_{x_i \in D_t} f(x_i) \\&= \Phi(\frac{\mu(x)-f(x^+)}{\sigma(x)})\end{align}
x^+ 는 이미 알려진 데이터서부터 최고치인 Output을 나타냅니다. 위는 정해진 Route로만 가니, 한정적인 느낌이 납니다. 이를 보완 하기 위하여 강화학습에 대한 Idea를 가져오게 됩니다. PI에 불확실성을 추가하여 평가를 수행해주는 것을 Expected Improvement라고 합니다. 이에 대한 성능차이는 아래 그림에서 확인해볼 수 있습니다.
참고문헌 C. E. Rasmussen & C. K. I. Williams, Gaussian Processes for Machine Learning, the MIT Press, 2006,
- 공유 링크 만들기
- X
- 이메일
- 기타 앱
댓글
댓글 쓰기