5번 글에서 시뮬레이션 추정의 오차가 로 느리게 줄어든다고 했다. 표본을 무작정 늘리는 것 말고, 더 영리한 방법은 없을까? 두 가지 방향이 있다. 하나는 같은 표본 수로 분산 자체를 줄이는 variance reduction, 다른 하나는 여러 시나리오를 효율적으로 비교·탐색하는 실험 설계(DOE)다. 이 글은 검증된 시뮬레이터로 실험을 똑똑하게 하는 법을 다룬다.
분산 감소 기법
output analysis의 신뢰구간 너비는 표본표준편차 에 비례한다. 을 늘리지 않고 (분산)를 줄일 수 있다면, 공짜로 더 정밀한 추정을 얻는 셈이다. 핵심 아이디어는 난수를 무작정 쓰지 않고 영리하게 배치하는 것이다.
Common Random Numbers (CRN)
가장 널리 쓰이는 기법이다. 두 시나리오(예: 서버 2대 vs 3대)를 비교할 때, 양쪽에 똑같은 난수열을 쓴다. 그러면 “같은 손님들이 같은 순서로 도착하는” 동일 조건에서 두 설정만 달라지므로, 결과의 차이가 무작위 잡음이 아니라 설정 차이에서 왔다고 더 자신 있게 말할 수 있다.
수학적으로, 두 시나리오 결과 의 차이 의 분산은
이다. 같은 난수를 쓰면 과 가 함께 오르내려 양의 공분산이 생기고, 마지막 항이 분산을 깎아 준다. 3번 글에서 예고한 “공정한 비교를 위한 seed 고정”이 바로 이것의 토대다.
Antithetic Variates
한 시나리오의 추정 자체를 정밀하게 만드는 기법이다. 균일난수 로 한 번 돌리고, 그 짝으로 를 써서 한 번 더 돌린다. 가 크면 는 작으므로 두 실행 결과가 음의 상관을 갖게 되고, 둘의 평균을 취하면 분산이 줄어든다. 직관적으로, 한쪽이 “운 좋은” 실행이면 다른 쪽이 “운 나쁜” 실행이 되어 서로를 상쇄한다.
Control Variates
기대값을 이미 아는 보조 변수를 지렛대로 쓰는 기법이다. 추정하려는 양과 상관된 어떤 양의 참 기대값을 안다면, 그 양이 이번 실행에서 평균보다 높게/낮게 나온 만큼을 이용해 주 추정치를 보정한다. 상관이 강할수록 분산이 많이 줄어든다.
이 기법들은 공짜처럼 보이지만 주의가 필요하다. CRN은 비교하는 시나리오들이 난수에 비슷하게 반응할 때만 효과가 있고, antithetic은 출력이 입력 난수에 단조적으로 반응할 때 잘 듣는다. 잘못 적용하면 오히려 분산이 늘 수도 있다.
실험 설계 (DOE)
분산 감소가 “한 추정을 정밀하게”라면, 실험 설계(Design of Experiments, DOE)는 “여러 설정을 효율적으로 탐색”하는 문제다. 시뮬레이션은 입력 요인이 많고 각 실행이 비싸서, 무작정 모든 조합을 돌리면 금세 폭발한다.
용어부터 정리하면,
- 요인(factor): 우리가 바꿀 수 있는 입력 변수(서버 수, 버퍼 크기, 디스패칭 규칙 등).
- 수준(level): 각 요인이 가질 수 있는 값(서버 = 2, 3, 4).
- 반응(response): 우리가 보는 출력(평균 대기시간, 처리량).
요인이 개이고 각각 2수준이면 모든 조합은 개다 — 요인 10개면 벌써 1024가지다. DOE는 이를 다루는 체계적 방법을 제공한다.
- 완전요인설계(full factorial): 모든 조합을 본다. 요인이 적을 때만 현실적.
- 부분요인설계(fractional factorial): 조합의 일부만 골라, 적은 실행으로 주요 효과와 일부 상호작용을 추정한다.
- 분산분석(ANOVA): 어떤 요인이 반응에 유의하게 영향을 주는지 통계적으로 가려낸다. 중요한 요인과 무시해도 될 요인을 구분한다.
DOE의 가치는 “어떤 요인이 중요한가, 요인들이 어떻게 상호작용하는가”를 최소 실행으로 알아내는 데 있다. 중요한 요인을 추린 뒤에야 그 요인을 정밀하게 최적화하는 다음 단계로 넘어갈 수 있다.
정리
- 분산 감소는 표본 수를 늘리지 않고 추정의 분산을 줄인다.
- CRN: 시나리오 비교 시 같은 난수를 써서, 차이의 분산을 양의 공분산으로 깎는다(가장 널리 쓰임).
- Antithetic variates: 와 쌍의 음의 상관으로 단일 추정의 분산을 줄인다.
- Control variates: 기대값을 아는 보조 변수로 보정한다.
- DOE는 요인·수준·반응을 체계화해, 완전/부분 요인설계와 ANOVA로 어떤 요인이 중요한지를 최소 실행으로 가려낸다.
- 두 기법은 “검증된 시뮬레이터로 실험을 똑똑하게” 하는 도구다.
다음 글에서는 “어떤 요인이 중요한가”를 넘어 “최선의 설정은 무엇인가”를 찾는 시뮬레이션 최적화를 개관한다.