24.5 하이브리드 모델과 대리모델

실습 · 연습문제 1개

사후분산으로 다음 실행점 고르기 max-variance-design

비싼 시뮬레이터를 이미 x_tr에서 실행했다. 다음 실행점은 GP 사후분산이 가장 큰 후보로 고른다. 커널은 RBF

k(x,x′)=σf2exp⁡ ⁣(−(x−x′)22ℓ2)k(x, x') = \sigma_f^2 \exp\!\left(-\frac{(x - x')^2}{2\ell^2}\right)

이고, 관측 잡음 분산은 σn2\sigma_n^2이다. 후보 x∗x_*의 잠재함수 사후분산은

σpost2(x∗)=k(x∗,x∗)−k∗⊤(K+σn2I)−1k∗\sigma^2_{\text{post}}(x_*) = k(x_*, x_*) - \mathbf{k}_*^\top (\mathbf{K} + \sigma_n^2 \mathbf{I})^{-1} \mathbf{k}_*

이다. K\mathbf{K}는 학습 입력끼리의 커널 행렬, (k∗)i=k(xi,x∗)(\mathbf{k}_*)_i = k(x_i, x_*)다.

함수 next_point(x_tr, x_cand, ell, sf=1.0, sn=1e-3)를 완성해 (x_next, var)를 반환한다.

인자·반환 shape 뜻
x_tr (N,) 이미 실행한 입력
x_cand (M,) 후보 입력
var (M,) 후보마다의 사후분산
x_next 스칼라 var가 가장 큰 후보

관측값 y\mathbf{y}는 인자에 없다. 하이퍼파라미터를 고정하면 사후분산은 y\mathbf{y}와 무관하기 때문이다(13.7장).

힌트: 역행렬 대신 np.linalg.cholesky와 np.linalg.solve를 쓴다. Lv=k∗\mathbf{L}\mathbf{v} = \mathbf{k}_*를 풀면 k∗⊤(K+σn2I)−1k∗=∥v∥2\mathbf{k}_*^\top(\mathbf{K} + \sigma_n^2\mathbf{I})^{-1}\mathbf{k}_* = \lVert \mathbf{v} \rVert^2이다.