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년대에는 원자가 실제로 존재하는지가 논쟁거리였다. 온도나 압력 같은 성질은 실험으로 잘 측정되었지만, 그 밑에 무엇이 있는지는 아무도 볼 수 없었기 때문이다.

루트비히 볼츠만(1844–1906), 1902년 무렵. 출처: Wikimedia Commons, 퍼블릭 도메인
루트비히 볼츠만(1844–1906), 1902년 무렵. 출처: Wikimedia Commons, 퍼블릭 도메인

이런 상황에서 오스트리아의 물리학자 볼츠만은 기체가 수많은 입자이고 온도나 압력은 그 입자들의 평균적 성질이라고 주장했다. 측정되는 값을 보이지 않는 입자들의 평균으로 설명하려 한 것이다. 그러나 마흐, 오스트발트 같은 당대의 영향력 있는 학자들은 눈으로 볼 수 없는 원자를 전제하는 이론을 과학으로 받아들이지 않고 반대했다.

논쟁을 매듭지은 것은 브라운 운동이었다. 1905년 아인슈타인은 물에 뜬 꽃가루에서 나온 작은 알갱이가 불규칙하게 움직이는 브라운 운동을 물 분자의 충돌로 설명하는 이론을 냈고, 1908년 페랭이 이를 실험으로 확인했다. 볼츠만은 그 사이인 1906년에 세상을 떠났으므로 이 확인을 보지 못했다. 그 뒤 원자의 존재는 받아들여졌고, 볼츠만의 방법은 통계역학의 기초가 되었다.

알베르트 아인슈타인(1879–1955), 1947년 오렌 잭 터너 촬영. 출처: Wikimedia Commons, 퍼블릭 도메인
알베르트 아인슈타인(1879–1955), 1947년 오렌 잭 터너 촬영. 출처: Wikimedia Commons, 퍼블릭 도메인
장 페랭(1870–1942), 1926년 Agence Meurisse 촬영. 출처: Wikimedia Commons, 퍼블릭 도메인
장 페랭(1870–1942), 1926년 Agence Meurisse 촬영. 출처: Wikimedia Commons, 퍼블릭 도메인

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

동전 4개로 세어 보기

배치를 세기 전에, 이름부터 두 개 정하자. "앞면 2개"라는 말과 "어느 동전이 앞면인가"라는 말은 같은 동전을 두고 하는 말이지만 자세한 정도가 다르다.

이제 실제로 세어 보자. 동전 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
동전 4개의 미시상태 16개를 앞면 개수(거시상태)로 묶은 그림. 칸마다 들어 있는 줄의 수가 경우의 수 W다.
동전 4개의 미시상태 16개를 앞면 개수(거시상태)로 묶은 그림. 칸마다 들어 있는 줄의 수가 경우의 수 W다.

전체 미시상태는 2⁴ = 16개인데, 거시상태는 5개뿐이다. 그리고 거시상태마다 그 뒤에 숨은 미시상태의 수가 1개에서 6개까지 서로 다르다.

ML에서: 같은 정확도, 다른 모델

ML에서 가장 자주 보는 거시상태는 평가 지표다. 테스트 예제 10개에서 정확도가 80%라는 말은 "10개 중 8개를 맞혔다"는 요약값일 뿐이고, 어느 8개를 맞혔는지까지 적은 미시상태는 C(10, 8) = 45가지나 된다. 그래서 정확도가 똑같은 두 모델이 서로 다른 예제에서 틀릴 수 있다. 정확도만 보고 두 모델이 같은 예제를 맞혔다고 말하는 것은, 앞면 개수만 듣고 어느 동전이 앞면인지까지 안다고 말하는 것과 같다.

문제 1. 힌트를 들은 뒤에 남은 비밀번호

친구가 휴대폰 잠금 비밀번호를 0과 1만 써서 6자리로 정했다. (가) 힌트 없이 하나씩 눌러 본다면 후보는 몇 개인가? (나) "1이 두 개 들어 있다"는 힌트를 들으면 후보는 몇 개로 줄어드는가? (다) "1이 몇 개 들어 있다"는 꼴의 힌트 가운데 후보를 가장 조금 줄여 주는 것은 무엇인가?

김민준 M01
김민준

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

선생님 T01
선생님

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

김민준 M04
김민준

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

이서연 S01
이서연

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

선생님 T14
선생님

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

이서연 S09
이서연

조합 수업에서 C(6, 2)와 C(6, 4)가 같았던 게 이거네요. 1 두 개의 자리를 고르나 0 네 개의 자리를 고르나 같은 비밀번호들이니까요.

문제 2. 경우의 수는 어느 거시상태의 것인가

동전 5개에서 "앞면이 2개"인 거시상태의 경우의 수 W를 구하고, 미시상태를 모두 나열하라.

김민준 M11
김민준

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

이서연 S03
이서연

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

선생님 T01
선생님

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

이서연 S07
이서연

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

선생님 T02
선생님

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

김민준 M07
김민준

아까 비밀번호 문제랑 같네요. 0과 1 대신 뒤와 앞이고, "1이 몇 개"가 "앞면이 몇 개"예요.

문제 3. 정확도가 같은 두 모델은 같은 예제를 틀렸을까

테스트 예제 10개에서 모델 A와 모델 B가 둘 다 정확도 80%, 곧 2개씩 틀렸다. B가 틀린 2개가 10개 가운데 아무 2개나 같은 확률로 골라진다고 하자. B가 A와 정확히 같은 2개를 틀렸을 확률은 얼마인가? 둘이 틀린 예제가 하나도 겹치지 않을 확률은?

김민준 M11
김민준

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

이서연 S11
이서연

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

선생님 T14
선생님

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

김민준 M04
김민준

시험 점수가 같은 두 친구가 같은 문제를 틀렸다고 할 수 없는 거랑 같네요. 그래서 모델 둘을 앙상블하면 서로 틀린 걸 메워 줄 수 있는 거고요.

이서연 S03
이서연

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

선생님 T01
선생님

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

김민준 M01
김민준

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

선생님 T01
선생님

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

이서연 S09
이서연

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