1장 — 미시상태와 거시상태
이 장의 물음
디퓨전 모델은 순수 노이즈에서 이미지를 만들기 시작한다. 디퓨전 모델을 널리 알린 2020년 논문(Ho 외)이 실험에 쓴 CIFAR-10 데이터셋은 가로세로 32픽셀짜리 컬러 이미지인데, 픽셀마다 빨강·초록·파랑 세 값이 있으므로 이미지 하나는 32 × 32 × 3 = 3072개의 숫자, 곧 3072차원 공간의 점 하나다. 출발점인 노이즈도 같은 3072차원에서 뽑는다. 이 노이즈는 표준정규분포에서 뽑으므로 확률밀도가 가장 높은 곳은 원점인데, 실제로 뽑힌 노이즈의 크기(노름)를 재 보면 거의 언제나 약 55.4이고 원점 근처에는 하나도 오지 않는다. 가장 그럴듯한 점이 정작 샘플로는 나오지 않는 것이다. 게다가 노름 55.4라는 숫자 하나 뒤에는 좌표 3072개의 값이 숨어 있는데, 좌표값을 하나하나 보지 않고도 노름은 미리 말할 수 있다. 온도나 압력처럼 우리가 재는 값도 숫자 하나가 수많은 값을 요약한다는 점에서 같아서, 온도계에 찍힌 숫자 하나 뒤에는 눈에 보이지 않는 수많은 입자가 저마다 어디에 어떻게 놓여 있는지가 숨어 있다. 그렇다면 하나하나를 볼 수 없는데도 무엇이 관찰될지 어떻게 말할 수 있을까?
이 장은 다음 물음에 차례로 답한다.
- 동전 몇 개를 던져 "앞면이 몇 개"라고만 말할 때, 그 말 뒤에는 서로 다른 결과가 몇 가지나 숨어 있을까?
- 동전 수를 크게 늘리면 왜 앞면 비율이 거의 절반으로만 나올까?
- 그런 결과의 수가 감당하기 어려울 만큼 커지면 어떻게 다룰까?
- 확률밀도가 가장 높은 곳과 샘플이 가장 많이 나오는 곳은 왜 다를까?
- 생김새가 전혀 다른 값을 많이 더해도 그 합의 분포는 왜 늘 같은 종 모양이 될까?
경우의 수: 한마디 뒤에 숨은 배치들
픽셀 3072개나 기체 분자는 손으로 하나하나 셀 수 없다. 그래서 상태가 앞과 뒤 둘뿐이고 가능한 경우를 모두 적어 볼 수 있는 가장 작은 대상인 동전으로 시작하자. 동전 4개를 던져서 "앞면이 2개 나왔다"고 말할 때, 이 말에 들어맞는 결과는 몇 가지일까? 첫째와 둘째가 앞면일 수도 있고 첫째와 넷째가 앞면일 수도 있으므로, 한 가지가 아니라는 것은 금방 알 수 있다. 우리가 말한 것은 요약 한마디인데, 그 뒤에는 서로 다른 배치가 여럿 숨어 있다.
여기서 배치는 ML에서 데이터를 묶어 한 번에 넣는 미니배치(batch)가 아니라, 물리에서 말하는 배치(configuration)다. 따로 떼어 놓고 살피는 대상을 물리에서는 계(system)라 하는데, 그 계를 이루는 것 하나하나가 어디에, 어떤 상태로 놓였는지를 빠짐없이 적은 목록이 배치 하나다. 이를테면 책상 위에 놓인 컵 하나의 배치는 위치를 정하는 좌표 3개(가로, 세로, 높이)와, 컵이 어느 쪽으로 얼마나 기울고 돌아갔는지를 정하는 각도 3개(오일러 각)로, 모두 숫자 6개로 적힌다. 동전 4개의 배치는 「앞, 뒤, 뒤, 앞」처럼 동전마다 한 칸씩, 칸 4개로 적힌다. 그래서 가능한 배치를 모두 모아 놓은 공간을 생각하면 배치 하나는 그 공간의 점 하나다. 컵이라면 6차원 공간의 한 점이고, 동전 4개라면 점 16개 가운데 하나다.
역사: 원자 논쟁과 볼츠만
1870년대에는 원자가 실제로 존재하는지가 논쟁거리였다. 온도나 압력 같은 성질은 실험으로 잘 측정되었지만, 그 밑에 무엇이 있는지는 아무도 볼 수 없었기 때문이다.

이런 상황에서 오스트리아의 물리학자 볼츠만은 기체가 수많은 입자이고 온도나 압력은 그 입자들의 평균적 성질이라고 주장했다. 측정되는 값을 보이지 않는 입자들의 평균으로 설명하려 한 것이다. 그러나 마흐, 오스트발트 같은 당대의 영향력 있는 학자들은 눈으로 볼 수 없는 원자를 전제하는 이론을 과학으로 받아들이지 않고 반대했다.
논쟁을 매듭지은 것은 브라운 운동이었다. 1905년 아인슈타인은 물에 뜬 꽃가루에서 나온 작은 알갱이가 불규칙하게 움직이는 브라운 운동을 물 분자의 충돌로 설명하는 이론을 냈고, 1908년 페랭이 이를 실험으로 확인했다. 볼츠만은 그 사이인 1906년에 세상을 떠났으므로 이 확인을 보지 못했지만, 그 뒤 원자의 존재는 받아들여졌고 볼츠만의 방법은 통계역학의 기초가 되었다.


그 방법의 가장 첫 단계가 바로 앞의 동전 물음, 곧 "요약값 뒤에 배치가 몇 가지 있는지 세는 것"이다. 입자 하나하나의 움직임은 볼 수 없어도, 입자들이 놓일 수 있는 배치가 몇 가지인지는 셀 수 있다.

원자가 있느냐 없느냐로 수십 년을 싸웠다는 게 신기해요. 지금은 원자 하나하나를 찍은 사진도 있잖아요.

원자를 하나씩 비춰 보는 주사 터널링 현미경은 1981년에야 나왔어요. 볼츠만 시대의 현미경은 빛으로 보는 것이라, 빛의 파장보다 작은 것은 가려내지 못했고요. 원자보다 천 배 넘게 큰 것까지가 한계였죠. 그러면 볼츠만은 마흐와 오스트발트에게 무엇을 증거로 내밀 수 있었을까요?

음, 온도나 압력을 입자들의 평균으로 계산한 값이 실험값과 맞는다는 것… 정도요?

그 정도였어요. 그런데 반대하는 쪽에서 보면 보이지 않는 것을 가정해서 맞춘 계산일 뿐이었죠. 페랭은 물에 뜬 알갱이의 위치를 현미경으로 일정한 시간마다 적어서, 그 움직임이 아인슈타인의 이론이 내놓은 숫자와 맞는지 확인했어요.

원자는 끝까지 안 보였는데, 원자가 부딪혀서 흔들리는 알갱이로 확인한 거네요.

그런데 볼츠만은 그런 확인도 없이, 입자 하나하나가 어디 있는지 모르는 기체를 다뤘잖아요. 볼 수도 없는데 무엇을 셀 수 있었어요?
동전 4개로 세어 보기
배치를 세기 전에, 이름부터 두 개 정하자. "앞면 2개"라는 말과 "어느 동전이 앞면인가"라는 말은 같은 동전을 두고 하는 말이지만 자세한 정도가 다르다.
- 미시상태 (하나하나 다 적은 상태, microstate): 모든 입자 각각의 상태를 전부 지정한 것. 동전 4개라면 "첫째 앞, 둘째 뒤, 셋째 뒤, 넷째 앞"처럼 하나하나를 다 적은 것. 동전에서는 앞에서 말한 배치 하나가 곧 미시상태 하나다.
- 거시상태 (측정하는 요약값, macrostate): 우리가 실제로 측정하는 요약값. 동전 4개라면 “앞면이 모두 몇 개인가”.
이제 실제로 세어 보자. 동전 4개에서 앞면이 2개인 거시상태에 속하는 미시상태는 HHTT, HTHT, HTTH, THHT, THTH, TTHH의 여섯 개다. 다시 말해 4개 가운데 앞면이 될 2개를 고르는 방법의 수이므로 C(4, 2) = 6이다. 이처럼 하나의 거시상태에 속한 미시상태의 개수를 경우의 수 W (거시상태에 속한 미시상태의 개수, multiplicity)라 한다. 다른 거시상태도 같은 방식으로 세면 다음 표를 얻는다.
| 앞면 개수 | 0 | 1 | 2 | 3 | 4 |
|---|---|---|---|---|---|
| W | 1 | 4 | 6 | 4 | 1 |

전체 미시상태는 2⁴ = 16개인데 거시상태는 5개뿐이고, 거시상태마다 그 뒤에 숨은 미시상태의 수가 1개에서 6개까지 서로 다르다.
ML에서: 같은 정확도, 다른 모델
ML에서 가장 자주 보는 거시상태는 평가 지표다. 테스트 예제 10개에서 정확도가 80%라는 말은 "10개 중 8개를 맞혔다"는 요약값일 뿐이고, 어느 8개를 맞혔는지까지 적은 미시상태는 C(10, 8) = 45가지나 된다. 그래서 정확도가 똑같은 두 모델이 서로 다른 예제에서 틀릴 수 있다. 정확도만 보고 두 모델이 같은 예제를 맞혔다고 말하는 것은, 앞면 개수만 듣고 어느 동전이 앞면인지까지 안다고 말하는 것과 같다.
문제 1. 힌트를 들은 뒤에 남은 비밀번호
친구가 휴대폰 잠금 비밀번호를 0과 1만 써서 6자리로 정했다. (가) 힌트 없이 하나씩 눌러 본다면 후보는 몇 개인가? (나) "1이 두 개 들어 있다"는 힌트를 들으면 후보는 몇 개로 줄어드는가? (다) "1이 몇 개 들어 있다"는 꼴의 힌트 가운데 후보를 가장 조금 줄여 주는 것은 무엇인가?


(가)는 자리마다 두 가지니까 2⁶ = 64개요. (나)는 첫 번째 1이 들어갈 자리가 6가지, 두 번째 1이 남은 5가지니까 6 × 5 = 30개예요.

첫째 자리에 먼저 1을 놓고 셋째 자리에 1을 놓은 것과, 셋째 자리에 먼저 놓고 첫째 자리에 놓은 것은 다른 비밀번호예요?

둘 다 101000이네요. 같은 비밀번호를 순서만 바꿔 두 번씩 셌어요. 30을 2로 나눠 15개예요.

민준아, 여섯 자리 가운데 1이 들어갈 두 자리를 고르는 거니까 C(6, 2) = 15로 바로 나와. (다)도 같은 식으로 세면 돼. 1이 0개거나 6개면 후보가 하나뿐이고, 1이 세 개일 때 C(6, 3) = 20개로 가장 많이 남아.

그 힌트가 거시상태, 실제 비밀번호가 미시상태예요. 경우의 수 W가 바로 "힌트를 들은 뒤에도 남은 후보 수"입니다. 힌트마다 1, 6, 15, 20, 15, 6, 1로 다르고, 모두 더하면 64예요.

조합 수업에서 C(6, 2)와 C(6, 4)가 같았던 게 이거네요. 1 두 개의 자리를 고르나 0 네 개의 자리를 고르나 같은 비밀번호들이니까요.
문제 2. 경우의 수는 어느 거시상태의 것인가
동전 5개에서 "앞면이 2개"인 거시상태의 경우의 수 W를 구하고, 미시상태를 모두 나열하라.


코드로 돌려 봤어요. itertools.product로 32개 만들고 앞면 2개인 걸 세니까 10개예요. HHTTT, HTHTT, HTTHT, HTTTH, THHTT, THTHT, THTTH, TTHHT, TTHTH, TTTHH.

민준아, 나는 W가 32라고 생각했는데. 동전 5개로 나올 수 있는 경우 전부잖아.

W가 32라면, "앞면이 0개"인 거시상태의 W도 32예요?

앞면 0개는 전부 뒷면인 TTTTT 하나뿐이니까 1이에요. 그럼 거시상태마다 W가 다르겠네요. 앞면 0개면 1, 1개면 5…

네. 1, 5, 10, 10, 5, 1이고 합하면 32예요. 32는 전체 미시상태 수이고, W는 “어떤 거시상태에 속한” 미시상태의 수라서 어느 거시상태를 말하는지 정해야 값이 나옵니다.

문제 1(힌트를 들은 비밀번호)이랑 같네요. 0과 1 대신 뒤와 앞이고, "1이 몇 개"가 "앞면이 몇 개"예요.
문제 3. 정확도가 같은 두 모델은 같은 예제를 틀렸을까
테스트 예제 10개에서 모델 A와 모델 B가 둘 다 정확도 80%, 곧 2개씩 틀렸다. B가 틀린 2개가 10개 가운데 아무 2개나 같은 확률로 골라진다고 하자. B가 A와 정확히 같은 2개를 틀렸을 확률은 얼마인가? 둘이 틀린 예제가 하나도 겹치지 않을 확률은?


정확도가 똑같이 80%니까 같은 걸 틀렸겠죠. 같은 테스트셋이잖아요.

동전 문제랑 같은데? 정확도 80%는 거시상태고, 어느 2개를 틀렸는지가 미시상태야. 틀린 2개를 고르는 미시상태가 C(10, 2) = 45개니까, A와 똑같은 걸 틀렸을 확률은 1/45, 약 2%야.

맞아요. 하나도 겹치지 않으려면 B가 A가 틀리지 않은 8개 중에서 2개를 골라야 하니까 C(8, 2)/45 = 28/45, 약 62%예요. 정확도가 같다는 말만으로는 오히려 틀린 예제가 서로 다를 가능성이 더 커요.

시험 점수가 같은 두 친구도 틀린 문제는 서로 다를 수 있죠. 정확도가 점수, 틀린 예제가 틀린 문제고요. 그래서 모델 둘을 앙상블하면 서로 틀린 걸 메워 줄 수 있는 거고요.

그런데 문제에서 B가 틀린 2개가 아무 2개나 같은 확률로 골라진다고 했잖아요. 실제로는 어려운 예제를 두 모델이 같이 틀릴 것 같은데요.

그 가정을 빼 볼까요. 10개 가운데 어느 모델이든 틀리는 어려운 예제가 딱 2개 있다면요?

그러면 둘 다 그 2개를 틀리니까 겹칠 확률이 1/45가 아니라 거의 1이겠네요.

네. 1/45는 두 모델이 틀리는 자리가 서로 상관없다고 두었을 때의 값이에요. 실제로 겹치는 비율이 1/45보다 훨씬 크면 두 모델이 같은 예제를 어려워한다는 증거이고, 그만큼 앙상블이 바로잡을 수 있는 예제 수도 줄어들어요.

계산은 가정에서 출발하니까, 가정이 깨지면 확률도 달라지는 거네요. 앙상블 효과를 기대하기 전에 두 모델이 틀린 예제가 실제로 얼마나 겹치는지부터 세어 봐야겠어요.