실습 · 연습문제 2개
Expected improvement 구현하기 expected-improvement
베이지안 최적화의 대리모델은 점 에서 목적값을 정규분포 로 예측한다. 지금까지 관측한 최솟값이 일 때(최소화 문제), expected improvement(EI)는 개선량의 기댓값이다.
와 는 표준정규분포의 누적분포함수와 확률밀도함수이고, 은 탐색을 조금 더 하게 만드는 여유다. 이면 불확실성이 없으므로 이다.
함수 expected_improvement(mu, sd, best, xi=0.0)를 완성한다. mu, sd는 스칼라이거나 같은 shape의 배열이고, 같은 shape의 결과를 반환한다. scipy.stats.norm의 cdf와 pdf를 쓴다.
테스트는 다음을 확인한다.
- 몬테카를로로 추정한 와 일치한다
- 일 때의 값
- EI는 음수가 아니고, 평균이 낮을수록 크다(활용)
- 평균이 같으면 불확실성이 클수록 크다(탐색)
- 를 키우면 EI가 줄어든다
힌트: 인 성분에서 0으로 나누지 않도록 np.where로 나눠 처리한다.
2목적 hypervolume 계산하기 hypervolume-2d
다목적 최적화의 결과는 점 하나가 아니라 Pareto front라는 점들의 집합이다. 두 front를 비교하는 대표적인 지표가 hypervolume이다. 모든 목적을 최소화할 때, 기준점 (모든 목적에서 받아들일 수 있는 가장 나쁜 값)를 정하고, 집합의 점들이 지배하는 영역
의 넓이를 잰다. 넓이가 클수록 front가 기준점에서 멀리, 넓게 펼쳐져 있다.
함수 hypervolume_2d(F, ref)를 완성한다. F는 shape (m, 2)의 목적값, ref는 (2,)의 기준점이다.
테스트는 다음을 확인한다.
- 점 하나 , 기준점 이면 넓이 4
- 계단 모양으로 겹치는 두 점 , 이면 겹친 부분을 한 번만 세어 3
- 점의 순서와 지배당한 점은 결과를 바꾸지 않는다
- 기준점보다 나쁜 좌표가 있는 점은 기여하지 않는다
- 무작위 점 집합에서 격자로 센 넓이와 일치한다
힌트: 오름차순으로 정렬하고 지금까지의 최소 를 기억하며 직사각형 띠를 더한다.