맺음: 경우의 수에서 여기까지
마지막 수업이 끝나 갈 무렵, 선생님이 칠판을 지우고 두 학생에게 처음으로 돌아가 보자고 했다.

첫 시간에 무엇을 셌는지 기억나요?

동전 100개를 던져 앞면이 50개인 경우의 수요. 그때는 이게 ML이랑 무슨 상관인가 했는데, 고차원 정규분포의 샘플이 원점이 아니라 반지름 √d인 얇은 껍질에 있다는 게 같은 셈이었죠.

그 경우의 수에 로그를 씌운 게 엔트로피였고, 에너지를 조금 늘릴 때 그 로그가 얼마나 느는지가 온도였어. 온도를 그렇게 정의하니까 softmax 식에서 로짓을 나누는 자리에 temperature가 왜 있는지 보였고.

중간에 구조요원, 공장 비용 곡선, 그네로 역학을 할 때는 좀 당황했어요. 그런데 연속인 상태의 경우의 수를 세려면 위상공간(위치와 운동량이 이루는 공간. 수학의 위상공간과는 이름만 같다)의 부피가 필요했던 거더라고요.

작은 계를 큰 열원에 붙였더니 볼츠만 분포가 나왔고, 버리던 정규화 상수(합이 1이 되게 나누는 수) Z에서 자유에너지가, 한 번 더 미분하면 요동과 Fisher 정보가 나왔지. 평균만 알 때 가장 덜 가정하는 분포도 같은 모양이었고.

스핀끼리 묶으니까 상전이가 생기고, 다 못 세니까 평균장으로 어림하고, 샘플을 움직이니까 열 방정식과 랑주뱅이 나오고, 서두르면 일을 기록해 가중치로 갚고…. 그리고 오늘은 결합까지 무작위로 뽑았네요.

결국 처음부터 끝까지 경우의 수를 센 거네. 오늘의 가드너 부피도 가중치의 경우의 수였고. 세는 대상이 점점 셀 수 없게 되니까 로그를 씌우고, 미분하고, 평균을 내고, 복제본까지 만들었을 뿐이야.

그래요. 이 수업의 도구는 거의 모두 너무 많아서 셀 수 없는 것을 어떻게 셀까에 대한 답이었어요. 이어서 읽을 방향을 몇 가지만 적어 둘게요.
- 분포들이 이루는 공간의 기하: 이 시리즈의 『정보기하학』에서 Fisher 정보가 분포 사이의 거리가 되고, 지수족의 두 좌표가 르장드르 변환으로 이어지는 모습을 본다.
- 위상공간의 구조: 『미분기하학의 언어들』의 심플렉틱 형식에서 해밀턴 흐름이 부피를 지키는 이유를 좌표 없이 본다.
- KL로 묶인 정책과 엔트로피: 『생성모델의 강화학습』에서 기준 모델에 보상의 볼츠만 인자를 곱한 정책이 DPO(direct preference optimization, 직접 선호 최적화)로 이어지는 과정을 따라간다.
- 학습과 추론의 통계역학: 엥겔과 반덴브루크의 『Statistical Mechanics of Learning』(2001), 메자르와 몬타나리의 『Information, Physics, and Computation』(2009), 즈데보로바와 크르자칼라의 리뷰 「Statistical physics of inference: thresholds and algorithms」(2016)가 이 장의 퍼셉트론과 교사–학생 설정, 근사 메시지 전달을 이어서 다룬다.
- 양자 통계: 구별할 수 없는 입자를 세면 경우의 수가 달라진다. 1924년 보스가 강의에서 빛 알갱이를 세다가 저지른 실수가 오히려 실험과 맞았다고 전해지고, 그가 아인슈타인에게 보낸 원고는 아인슈타인이 직접 독일어로 옮겨 실렸다. 첫 시간의 셈을 한 번 더 뒤집는 곳이다.

어느 쪽으로 가든 처음 할 것은 같아요. 작은 문제를 하나 골라 손으로 세어 보는 것.

동전 두 개부터요.

동전 두 개면 코드로 돌리는 게 더 빠른데요.

너는 동전 두 개도 numpy부터 켜지.

둘 다 좋아요. 손으로 센 값과 코드가 낸 값이 같으면, 그다음은 N을 키울 차례예요.