비싼 시뮬레이터를 이미 x_tr에서 실행했다. 다음 실행점은 GP 사후분산이 가장 큰 후보로 고른다. 커널은 RBF
k(x,x′)=σf2exp(−2ℓ2(x−x′)2)
이고, 관측 잡음 분산은 σn2이다. 후보 x∗의 잠재함수 사후분산은
σpost2(x∗)=k(x∗,x∗)−k∗⊤(K+σn2I)−1k∗
이다. K는 학습 입력끼리의 커널 행렬, (k∗)i=k(xi,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는 인자에 없다. 하이퍼파라미터를 고정하면 사후분산은 y와 무관하기 때문이다(13.7장).
힌트: 역행렬 대신 np.linalg.cholesky와 np.linalg.solve를 쓴다. Lv=k∗를 풀면 k∗⊤(K+σn2I)−1k∗=∥v∥2이다.