25.4 자율 실험과 closed-loop 연구

실습 · 연습문제 2개

UCB와 EI 획득함수 acquisition-functions

closed-loop의 "실험 선택" 단계는 대리모델의 예측 평균 μ(x)\mu(\mathbf{x})와 표준편차 σ(x)\sigma(\mathbf{x})로 후보마다 점수를 매긴다. 최대화 문제(수율을 높이기)의 두 획득함수를 구현한다.

UCB (upper confidence bound)

UCB(x)=μ(x)+β σ(x)\mathrm{UCB}(\mathbf{x}) = \mu(\mathbf{x}) + \beta\,\sigma(\mathbf{x})

EI (expected improvement). 지금까지의 최고 측정값이 f+f^{+}일 때

EI(x)=E[max⁡(Y−f+,0)]=(μ−f+) Φ(z)+σ φ(z),z=μ−f+σ\mathrm{EI}(\mathbf{x}) = \mathbb{E}\big[\max(Y - f^{+}, 0)\big] = (\mu - f^{+})\,\Phi(z) + \sigma\,\varphi(z), \qquad z = \frac{\mu - f^{+}}{\sigma}

이다. Y∼N(μ,σ2)Y \sim \mathcal{N}(\mu, \sigma^2), Φ\Phi와 φ\varphi는 표준정규분포의 누적분포함수와 밀도다(scipy.stats.norm.cdf, norm.pdf). σ=0\sigma = 0인 점에서는 개선이 확정적이므로 EI=max⁡(μ−f+,0)\mathrm{EI} = \max(\mu - f^{+}, 0)으로 정의한다.

함수 두 개를 완성한다.

  • ucb(mu, sd, beta): 배열 mu, sd (shape (C,))에 대해 UCB 배열을 반환한다.
  • expected_improvement(mu, sd, best): 위 식의 EI 배열을 반환한다. sd == 0인 원소도 처리한다. 결과는 0 이상이어야 한다.

테스트는 손으로 계산한 값, 몬테카를로 추정과의 일치, σ=0\sigma = 0 처리, 그리고 "평균이 같으면 불확실성이 큰 쪽의 EI가 더 크다"는 성질을 확인한다.

측정된 점들의 Pareto front pareto-front

자율 실험이 수율과 순도처럼 여러 목적을 함께 측정했다. 측정값 F (shape (N, k))의 각 행은 실험 하나, 각 열은 목적 하나이고, 모든 목적은 클수록 좋다.

실험 aa가 실험 bb를 지배(dominate)한다는 것은 aa가 모든 목적에서 bb보다 같거나 크고, 적어도 하나의 목적에서 엄격하게 크다는 뜻이다. 어떤 실험에도 지배되지 않는 실험들이 Pareto front다.

함수 pareto_mask(F)를 완성해 길이 NN의 불리언 배열을 반환한다. True는 그 실험이 Pareto front에 있다는 뜻이다.

테스트는 다음을 확인한다.

  • 손으로 정답을 알 수 있는 작은 예
  • 완전히 같은 측정값이 두 개 있으면 둘 다 front에 남는지(서로를 지배하지 않는다)
  • 목적이 하나뿐이면 최댓값만 남는지
  • front의 어떤 점도 다른 점에 지배되지 않고, front 밖의 모든 점은 front의 어떤 점에 지배되는지

힌트: NN이 수백 이하이면 모든 쌍을 비교하는 O(N2k)O(N^2 k) 방법으로 충분하다. 브로드캐스팅으로 (N, N, k) 비교 배열을 만들 수 있다.