15장 — 비평형 통계역학과 야르진스키 등식

유효 표본 수: 가중치가 고르지 않으면

두 봉우리를 여섯 가지 사다리로 돌렸을 때 가중치를 단 오른쪽 비율은 모두 0.80이었다. 어느 사다리나 똑같이 정확하다면, 랑주뱅을 한 걸음도 돌리지 않고 가중치만 곱한 사다리(수준 10개 × 0걸음)로 충분하지 않을까? 걸음을 줄이면 계산이 그만큼 싸지므로 실제로 따져 볼 만한 물음이다.

가중치 몇 개가 합을 차지할 때

줄마다 다른 것은 정확도가 아니라 대가이고, 그 대가는 가중치가 얼마나 고르지 않은지에 나타난다. 사슬 네 개의 가중치가 1, 1, 1, 1이면 네 사슬이 똑같이 답을 정한다. 4, 0, 0, 0이면 사슬을 네 개 돌렸어도 답을 정한 것은 첫 사슬 하나뿐이다. 그 사이의 2, 1, 1, 0은 몇 개를 돌린 셈일까? 가중치의 합을 제곱해 가중치 제곱의 합으로 나누면 세 경우가 16/4 = 4, 16/16 = 1, 16/6 ≈ 2.67이 되어, 고르게 뽑은 샘플 몇 개의 몫을 하는지를 수 하나로 준다.

사슬 네 개의 가중치 세 가지. 모두 같으면 유효 표본 수가 사슬 수 4와 같고, 한 사슬에 몰리면 1이 된다. 그 사이는 2.67이다.
사슬 네 개의 가중치 세 가지. 모두 같으면 유효 표본 수가 사슬 수 4와 같고, 한 사슬에 몰리면 1이 된다. 그 사이는 2.67이다.
neff=(∑i=1ne−Wi)2∑i=1ne−2Wi,1≤neff≤n\textcolor{#1f77b4}{n_{\mathrm{eff}}} = \frac{\Big(\sum_{i=1}^{\textcolor{#1f77b4}{n}} e^{-\textcolor{#ff7f0e}{\mathcal{W}}_i}\Big)^2}{\sum_{i=1}^{\textcolor{#1f77b4}{n}} e^{-2\textcolor{#ff7f0e}{\mathcal{W}}_i}}, \qquad 1 \le \textcolor{#1f77b4}{n_{\mathrm{eff}}} \le \textcolor{#1f77b4}{n}
neff유효 표본 수 (가중치를 단 사슬들이 고르게 뽑은 샘플 몇 개의 몫을 하는지)n사슬의 수e−Wi사슬 i의 가중치\begin{array}{ll} \textcolor{#1f77b4}{n_{\mathrm{eff}}} & \text{유효 표본 수 (가중치를 단 사슬들이 고르게 뽑은 샘플 몇 개의 몫을 하는지)} \\ \textcolor{#1f77b4}{n} & \text{사슬의 수} \\ e^{-\textcolor{#ff7f0e}{\mathcal{W}}_i} & \text{사슬 i의 가중치} \end{array}

이 수를 유효 표본 수 (가중치를 단 샘플들이 고르게 뽑은 샘플 몇 개만큼의 정보를 갖는지 나타내는 수, effective sample size)라 한다. n_eff는 곱셈이 아니라 한 덩어리 이름이고, 아래첨자 eff는 effective(유효)의 앞 글자다. 가중치가 모두 같으면 사슬 수 n과 같고, 한 사슬에 몰리면 1이 되는 두 끝을 위의 네 사슬에서 확인할 수 있다. 첫머리의 두 봉우리를 돌린 여섯 경우에서 일의 평균과 유효 표본 수를 사슬 수에 대한 비율로 적으면 다음과 같다. 잡음 수준들이 모두 정규화되어 있어 ΔF = 0이므로 일의 평균이 곧 소산된 일의 평균이다.

수준 × 수준마다 걸음 ⟨𝒲⟩ 유효 표본 비율
10 × 100 0.733 0.46
10 × 10 0.826 0.43
10 × 1 7.691 0.27
10 × 0 23.477 0.19
100 × 10 0.086 0.83
1000 × 1 0.061 0.88

수준마다 한 걸음도 움직이지 않는 넷째 줄은 츠반치히식의 한순간 바꾸기, 곧 출발 분포에서 목표 분포로 곧장 건너는 보통의 중요도 샘플링이고, 소산된 일이 23.5에 이르러 유효 표본이 사슬의 19%로 줄어든다. 걸음을 늘리면 샘플이 분포를 따라가 소산된 일이 줄고 가중치가 고르게 된다.

같은 1000걸음을 쓰더라도 나누는 방법에 따라 결과가 크게 다르다. 수준 10개에 100걸음씩 쓰면 소산된 일이 0.733인데, 수준 1000개에 1걸음씩 쓰면 0.061로 10배 넘게 줄고 유효 표본은 0.46에서 0.88로 는다. 한 수준에서 오래 머물러도 다음 수준으로 크게 건너뛰는 순간의 일은 줄지 않으므로, 소산을 줄이는 것은 한 수준에 머무는 시간보다 매개변수를 바꾸는 빠르기다.

직접 움직여 보기사다리 나누기와 유효 표본새 창에서 열기 ↗

차원이 높으면

차원이 높으면 이 차이가 결정적이다. 좌표마다 소산된 일이 더해지므로 가중치의 퍼짐은 차원에 따라 지수적으로 커진다. 같은 두 봉우리를 좌표마다 독립으로 10개 붙인 10차원 목표에서 사슬 1만 개를 돌리면, 유효 표본이 곧장 건너는 중요도 샘플링에서는 1개, 수준 10개 × 100걸음에서는 54개, 수준 1000개 × 1걸음에서는 3009개다. 이미지처럼 수천 차원인 목표에서 곧장 건너는 중요도 샘플링이 쓸모없고 AIS가 긴 사다리를 쓰는 까닭이 이것이다.

문제 10. 여론조사의 가중치

어느 시의 인구는 동부 50%, 서부 30%, 북부 20%다. 여론조사 응답자 100명은 동부 85명, 서부 15명, 북부 0명이었다(아래 그림). 실제 지지율은 동부 40%, 서부 60%, 북부 70%라고 하자(조사하는 쪽은 모른다). (가) 응답을 그대로 센 지지율은? (나) 지역마다 가중치를 인구 비율 ÷ 응답자 비율로 달아 다시 세면? (다) 가중치의 평균은 얼마여야 하고, 실제로는 얼마인가? (라) 이 100명은 고르게 뽑은 몇 명의 몫을 하는가?

여론조사 문제의 자료. 지역마다 인구 비율과 응답자 수(모두 100명)를 나란히 그렸다. 북부에는 응답자가 없다.
여론조사 문제의 자료. 지역마다 인구 비율과 응답자 수(모두 100명)를 나란히 그렸다. 북부에는 응답자가 없다.
김민준 M11
김민준

그대로 세면 (85 × 0.4 + 15 × 0.6)/100 = 43%예요. 가중치는 동부 0.5/0.85 = 0.588, 서부 0.3/0.15 = 2라서 다시 세면 47.5%고요. 보정 끝이요.

이서연 S06
이서연

가중치의 평균부터 봐야지. 인구 비율 ÷ 응답자 비율을 응답자 전체로 평균하면 인구 비율을 다 더한 값이라 1이어야 하는데, (85 × 0.588 + 15 × 2)/100 = 0.8이야.

선생님 T14
선생님

1이어야 할 평균이 0.8이면, 나머지 0.2는 어디로 갔을까요?

김민준 M05
김민준

아… 인구의 20%인 북부에 응답자가 한 명도 없어요. 가중치는 있는 응답을 키우거나 줄일 뿐이라, 47.5%는 동부와 서부만의 지지율이네요.

이서연 S07
이서연

북부까지 넣은 실제 지지율은 0.5 × 0.4 + 0.3 × 0.6 + 0.2 × 0.7 = 52%야. 가중치로는 닿지 못하는 몫이 북부에 있었어.

김민준 M04
김민준

출석을 앞줄만 부르고 반 전체 출석률이라고 적은 거네요.

이서연 S09
이서연

가중치 평균이 1인지만 봐도 빠진 곳이 있는지 알 수 있겠다.

선생님 T14
선생님

그럼 동부와 서부 안에서는 보정이 공짜일까요? 100명에게 물었는데 몇 명에게 물은 셈인지 재 보세요.

김민준 M07
김민준

(85 × 0.588 + 15 × 2)²/(85 × 0.588² + 15 × 2²) = 80²/(29.4 + 60) = 71.6이에요. 서부 15명이 두 배씩 세어지니까, 100명에게 묻고도 72명쯤에게 물은 만큼만 믿을 수 있네요.

선생님 T13
선생님

그래요. 가중치의 평균은 빠진 곳이 있는지를, 유효 표본 수는 남은 응답이 얼마나 고르게 쓰였는지를 알려 줘요.

문제 11. 뒤처진 두 봉우리를 가중치로 되살리기

목표는 −2에 비중 0.2, +2에 비중 0.8, 표준편차 0.5인 두 봉우리다. 잡음의 표준편차를 5에서 0.1까지 10단계로 줄이는 담금질 랑주뱅을 단계마다 1걸음씩 돌리면 오른쪽 비율이 참값 0.8에서 크게 뒤처진다. (가) 가중치를 달아 0.8을 되찾아라. 가중치의 평균도 확인하라. (나) 랑주뱅을 한 걸음도 돌리지 않고 가중치만 달아도 되는가? 같은 두 봉우리를 좌표마다 독립으로 셋 붙인 3차원에서는 어떤가? (다) 모두 200걸음을 쓸 수 있다면 사다리를 어떻게 나누겠는가? (위젯 2의 두 슬라이더로 수준 수와 걸음 수를 맞춰 볼 수 있다.)

김민준 M11
김민준

사슬을 −6에서 6 사이에서 고르게 출발시킨 담금질 랑주뱅에서 한 단계에 1걸음이면 0.588이었던 그 문제네요. 이번엔 가중치를 달아 볼게요. 출발은 그때처럼 −6에서 6 사이 균등분포로 두고, 균등분포의 밀도 1/12에서 첫 수준으로 바꿀 때부터 분포를 바꿀 때마다 로그밀도 차이를 더했어요. 새로 돌리니 가중치를 달기 전엔 0.592, 달면… 0.799! 됐다!

이서연 S03
이서연

가중치의 평균도 봐야지. 잡음 수준들은 다 정규화돼 있으니까 1이 나와야 해.

김민준 M05
김민준

0.868이에요. 걸음을 10으로 늘리면 비율은 0.798인데 평균이 0.736이고요. 비율은 맞는데 Z가 틀려요.

이서연 S07
이서연

여론조사에서 가중치 평균이 0.8로 나왔던 거랑 같은 모양이야. 어딘가 샘플이 없는 곳이 있다는 거지.

선생님 T14
선생님

첫 수준의 분포를 보세요. 잡음 표준편차 5를 섞으면 분포가 어디까지 퍼져 있죠?

이서연 S07
이서연

표준편차가 5쯤 되니까… −6과 6 바깥에도 확률이 있어요. 계산하면 −6에서 6 사이에 0.731이고, 27%는 바깥이에요.

김민준 M08
김민준

아, 제 출발 분포는 그 바깥에 샘플을 한 개도 안 만들어요. 가중치는 있는 샘플을 부풀리거나 줄일 수만 있지, 없는 곳에 샘플을 만들 수는 없네요.

선생님 T14
선생님

그래요. 10걸음에서 가중치의 평균이 그 0.731 근처에 온 것도 그 때문이에요. 출발 분포는 목표가 있는 곳을 모두 덮어야 해요.

김민준 M09
김민준

여론조사에서 응답자가 한 명도 없던 북부랑 같네요. 출발을 표준편차 5인 정규분포로 바꿨어요. 가중치를 달기 전 0.579, 달면 0.801, 가중치의 평균 1.006이에요!

이서연 S06
이서연

이제 (나). 한 걸음도 안 걸으면 출발 분포에서 목표로 곧장 건너는 보통의 중요도 샘플링인데, 이것도 0.800이 나와. 그럼 랑주뱅은 왜 돌려?

선생님 T14
선생님

유효 표본을 보세요. 1차원에서는 사슬의 19%가 남지만, 좌표를 셋 붙이면 어떨까요?

이서연 S07
이서연

사슬 1만 개로 돌려 보니 좌표 둘이면 374개, 셋이면 69개예요. 좌표를 하나 붙일 때마다 5분의 1쯤으로 줄어요. 곧장 건너면 1차원에서 이미 소산된 일이 23.5인데, 그게 좌표마다 더해지니까요.

김민준 M11
김민준

그럼 (다)는 수준을 촘촘히 놓는 게 답이니까, 걸음은 아예 0으로 하고 수준만 200개 놓을게요. 어… 소산된 일이 23.1, 유효 표본이 0.19예요. 곧장 건넌 것과 똑같아요.

이서연 S12
이서연

나는 수준 200개에 1걸음씩 줬어. 소산된 일 0.205, 유효 표본 0.73이야. 수준 20개 × 10걸음은 0.368과 0.59, 10개 × 20걸음은 0.742와 0.45고.

김민준 M06
김민준

수준이 200개인 건 똑같은데 왜 걸음이 0이면 안 되죠? 촘촘하면 건너뛰는 폭이 작잖아요.

선생님 T14
선생님

걸음이 0이면 사슬은 출발한 자리에 그대로 있어요. 그 자리에서 수준마다 곱한 밀도 비를 모두 곱하면 무엇이 남죠?

이서연 S09
이서연

가운데 것이 차례로 지워지고 목표 밀도 ÷ 출발 밀도만 남아요. 수준을 몇 개 놓든 곧장 건너는 가중치와 같네요. 촘촘한 사다리는 샘플이 그 사다리를 따라 움직일 때만 쓸모가 있어요. 수준 200개 × 1걸음이면 건너뛰는 폭이 작아서 일이 정규분포에 가까워지니까 ⟨𝒲⟩ ≈ Var(𝒲)/2도 얼추 맞겠네요. 0.205 대 0.232예요. 10 × 20은 0.742 대 1.19로 안 맞고요.

김민준 M10
김민준

결국 0.588은 샘플이 뒤처져서 생긴 거였고, 뒤처진 만큼은 가중치가 갚아 주는 거네요. 너무 서두르면 갚을 몫이 사슬 몇 개에 몰리고요.

선생님 T13
선생님

정리하면, 출발 분포가 목표를 덮고 각 수준의 움직임이 그 분포를 지키는 것은 정확성의 조건이고, 사다리를 촘촘히 놓고 그 사이를 샘플이 걸어서 따라가게 하는 것은 효율의 조건이에요.