
이번 저널클럽에서 GAUCHE: A Library for Gaussian Processes in Chemistry라는 흥미로운 논문을 발표하게 되었다.
평소 GP를 공부해보고 싶었는데 마침 잘 된 것 같다 :)
그리고 함께 https://www.edwith.org/bayesiandeeplearning/joinLectures/14426 이 강의를 듣고 있는데 좀 어렵지만 매우 매우 재밌다 ^____^
정리한 내용에 대해 잘못된 부분이 있다면 언제든지 댓글 남겨주세요!
이 글은 구글링 + 이 논문 + GPT를 참고해 작성하였습니다.
1. Overview
위 그림은 가우시안 프로세스 회귀[Gaussian Process Regression, GPR]와 다른 회귀 모델들을 비교한 그림이다. GPR은 다른 모델들과 달리 선이 아닌 특정 '범위'로 나타난다. 이는 가우시안 프로세스가 '확률'을 기반으로 하기 때문이다. 이는 가우시안은 '확률'을 기반에 둔 모델이기 때문이다.
위키피디아에 Gaussian Process을 검색해 보면 다음과 같이 나온다.
In probability theory and statistics, a Gaussian process is a stochastic process [a collection of random variables indexed by time or space], such that every finite collection of those random variables has a multivariate normal distribution
뜻풀이처럼, GP는 확률론과 통계에서 사용되는 Stocastic Process이며, 시간 또는 공간에 의해 index 된 random variables들의 집합이라고 할 수 있다.
시간 또는 공간에 의해 'index된' random variables이란, 시간 또는 공간의 특정 지점에 '대응'되는 random variable을 말한다. 예를 들어, 시간에 따라 변하는 온도나 공간 상의 위치에 따라 측정된 데이터가 해당될 수 있다.
이를 통해 stocastic process는 시간이나 공간에 따라 어떻게 '변화'하는지를 모델링할 수 있다. GP는 이렇게 모델링하는 방법들 중에 하나다.
근데 그 random variable들은 multivariate normal distribution을 가지는 특성을 가지고 있다. 이건 무슨 말일까.
multivariate normal distribution [다변량 정규 분포]는 여러 개의 확률 변수가 '동시에 고려'되는 확률 분포를 의미한다.
따라서 GP에서는 어떤 시간 또는 공간의 지점에서 관찰되는 무한한 수의 확률 변수들 중에서, 임의로 선택된 확률 변수들이 '함께' multivariate normal distribution을 따른다.
multivariate normal distribution는 다른 말로 jointly conditional distribution이라고도 한다.
2. Notation
GP는 다음과 같이 표현한다.
$$ f(\mathbf{x}) \sim \mathcal{GP}( m(\mathbf{x} ), k(\mathbf{x}, \mathbf{x'})) $$
여기서 $\mathbf{X} \in \mathbb{R}^{n \times d}$ 는 $n$개의 training example $d$ dimension인 design matrix이고 각 행은 $f(\mathbf{x}_i)$를 포함하고 있다.
이 논문에서 x는 training modecule's representation을 의미합니다.
그리고 mean function은 $$m(\mathbf{x}) = \mathbb{E}[f(\mathbf{x})]$$ 으로 표현되고,
covariance function은 $$ k(\mathbf{x},\mathbf{x'}) = \mathbb{E}[(f(\mathbf{x}) - m(\mathbf{x}))(f(\mathbf{x'}) - m(\mathbf{x'}))] $$로 표현된다.
아참, $f(x)$는 뭐냐면 우리가 모델링하려는 함수를 나타낸다. GP는 이 함수에 대한 전체 분포를 모델링하는데 사용된다. 쉽게 말해 이 함수가 우리가 관심 있는 특정 현상이나 데이터의 '속성'을 나타낸다. 그러고 나서 GP는 새로운 입력 $x$에 대한 예측을 수행하는 것
그리고 $\mathbf{x}$ 와 $\mathbf{x'}$ 이 두 점이 입력으로 들어가는 이유는 두 점의 관계를 이용하여 GP가 함수 $f(x)$의 공분산을 모델링하기 때문이다. 공분산을 모델링하면 $f(x)$의 값이 어떻게 변하는지를 추정할 수 있다.
공분산[covariance]란? 두 확률 변수 간의 관계를 나타내는 통계적 측도로, 두 변수가 함께 변하는 정도를 나타냄
공분산이 0인 경우, 두 변수 사이에 선형적인 관계가 없다는 걸 의미.
그리고 kernel이라는 개념이 나온다. kernel 이 뭘까
커널은 일반적으로 두 데이터 포인트 간의 거리 또는 '유사성'을 측정하여 데이터 간의 '패턴'을 파악하는 데 사용된다.
예를 들어, 두 데이터 포인트가 유사할수록 커널 값이 더 커지고, 거리가 멀수록 작아진다.

이 그림은 kernel function을 보여준다. '데이터의 특성에 따라' 적당한 kernel function을 적용하여 두 데이터 포인트 간의 유사성을 계산한다!
이러한 커널을 통해 데이터 포인트 간의 '상관관계를 모델링'한다.
이제 수식을 보자!
$$[K]_{ij} = k(\mathbf{x}_i, \mathbf{x}_j)$$
이것이 kernel function이다. 여기서 $[K]_{ij}$는 커널 행렬 $K$의 $i$번째 행과 $j$번째 열의 원소를 의미한다. 즉, $[K]_{ij}$는 데이터 포인트 $\mathbf{x}_i$와 $\mathbf{x}_j$ 간의 유사성을 나타낸다.
아까 covariance function이랑 형태가 비슷하다. 왜일까?
이는 커널 함수가 사실 공분산 함수의 한 종류로 볼 수 있기 때문이다. 둘은 개념적으로 동일한 역할 [유사성을 측정하여 공분산을 계산]을 하고 있다. 커널 함수는 가우시안 프로세스에서 공분산 함수를 정의하는 데 사용되고, 이를 통해 입력 데이터 간의 상관관계를 모델링하고 함수의 분포를 추정할 수 있다.
이 커널 함수로 정의된 커널 matrix는 다음과 같다.
$$K_{\theta}(\mathbf{X}, \mathbf{X})$$
여기서 $\theta$는 커널의 하이퍼파라미터 집합이다.
3. Prediction
GP를 이용해서 새로운 입력 값에 대한 예측값과 예측의 불확실성을 계산한다.
1. Predictive mean [예측값]
$$ \bar{f}_{*} = K(\mathbf{X} , \mathbf{X})[K(\mathbf{X}_*, \mathbf{X}) + \sigma^2\mathbf{I}]^{-1}\mathbf{y} $$
여기서 $\bar{f}_*$ 는 주어진 훈련 데이터 $\mathbf{X}$와 예측을 수행할 테스트 위치 $\mathbf{X}^*$애 대한 예측값[평균]이다.
$K(X,X)$는 훈련 데이터 포인트 간의 커널 행렬이고, $\sigma^2\mathbf{I}$은 훈련 데이터의 공분산 행렬에 대한 추가적인 분산 [잡음]을 나타낸다. 이를 추가하는 이유는 모델의 '불확실성'을 반영하기 위함이다.
그리고 마지막에 나오는 $\mathbf{y}$은 훈련 데이터의 관측값 벡터이다.
2. predictive uncertainty [예측 불확실성]
$$ \text{cov}(f_*) = K (\mathbf{X}_*, \mathbf{X}_*) - K(\mathbf{X}_*, \mathbf{X})[K(\mathbf{X}, \mathbf{X}) + \sigma_y^2\mathbf{I}]^{-1}K(\mathbf{X}, \mathbf{X}_*)$$
이는 주어진 테스트 위치 $ \mathbf{X}_* $에 대한 예측 불확실성이다.
$ K (\mathbf{X}_*, \mathbf{X}_*) $은 테스트 위치 간의 커널 행렬이고,
여기서 시그마는 관측값 $y$의 노이즈에 대한 추가적인 분산을 나타낸다. 이 또한 모델의 불확실성을 반영하기 위함이다.
4. Kernel
이 챕터에선 커널 선택이 inductive bias라고 한다.
이게 무슨 말이냐고? inductive bias란 모델이 학습 데이터를 바탕으로 새로운 데이터를 예측할 때 가지는 bias의 방향을 의미한다.
간단히 말해서, 모델이 어떤 가정을 가지고 학습하고 예측하는지를 결정하는 것으로 학습 데이터를 설명하고 예측하는 방법에 영향을 미치는 중요한 요소임
GP에선 선택한 커널에 따라 inductive bias가 달라지는데 RBF 커널을 선택하면 모델은 부드러운 함수를 선호한다는 것이고, 선형 커널을 선택하면 모델은 선형 관계를 가정한다는 것이다.
continuous input domain에 대한 일반적인 선택은 RBF커널 [Radial Basis Funtion]이다. 수식을 보자
$$k_{\text{RBF}}(x,x') = \sigma_f^2 \exp\left(-\frac{||x - x'||^2}{2l^2}\right) $$
$k_{\text{RBF}}(x,x')$는 RBF 커널 함수를 나타내고, $||x - x'||^2$는 입력 데이터 포인트 $x$와 $x'$간의 유클리드 거리의 제곱으로 입력 데이터 간의 유사도를 측정하는 데 사용된다.
$\sigma_f^2$는 신호의 진폭을 나타내는 하이퍼파라미터[수직 길이 스케일]이고, $l$은 길이 스케일 하이퍼파라미터[수평 길이 스케일], $\theta$는 커널의 하이퍼파라미터 집합을 나타낸다.
이 논문에서 분자와 같은 복잡한 데이터에 대한 GP 모델을 구축할 때는, 특별한 커널 함수가 필요하다고 한다. 그래서 데이터의 특성과 구조를 고려하여 특별한 커널 함수를 정의해야 한다. 그래서 section3로 가면 분자 표현에 대해 각각 특별한 커널 함수를 정의한다.
5. GP Training
GP를 훈련시킬 때, 우리는 커널 하이퍼파라미터 $\theta$와 likelihood noise $\sigma_y^2$를 선택해야 한다.
이를 위해서는 NLML [Negative Log Marginal Likelihood]이라는 목적함수를 최소화한다. NLML을 최소화하여 GP모델에 적합한 하이퍼파라미터를 선택하고 모델을 조정하면서, 데이터에 가장 잘 맞는 모델을 선택할 수 있다!!!
수식은 다음과 같다.
$$\text{NLML} = \frac{1}{2} \mathbf{y}^\top (K_\theta(\mathbf{X},\mathbf{X}) + \sigma_y^2\mathbf{I})^{-1} \mathbf{y} + \frac{1}{2} \log |K_\theta(\mathbf{X},\mathbf{X}) + \sigma_y^2\mathbf{I}| + \frac{N}{2} \log(2\pi)
$$
추가적인 인사이트가 생기면 추가로 포스팅을 하도록 하겠습니다. 피드백은 언제든지 환영입니당 ^____^
'AI > bayesian optimization' 카테고리의 다른 글
| Knowledge Gradient (KG)에 대해서 (0) | 2024.09.18 |
|---|---|
| 최적화 스터디 | 1단원 bayesian optimization workflow 복습 (0) | 2024.09.18 |
| 최적화 스터디 | 9주차 : Knowledge Gradient (0) | 2024.08.20 |
| 최적화 스터디 | 1주차 : Bayesian Optimization Overview [1] (0) | 2024.06.06 |
| Bayesian Optimization 내맘대로 정리 (0) | 2024.05.15 |
댓글