자주 하는 실수와 요약
자주 하는 실수
| 실수 | 나온 문제 | 바로잡는 법 |
|---|---|---|
| 위치 하나만 보고 다음 위치를 정함(속도를 0으로 둠) | 1 | 한 순간의 상태는 위치와 운동량의 짝이다 |
| 위치 그래프에서 만나면 위상공간에서도 같은 점이라고 봄 | 2 | 운동량까지 견준다. 위상공간의 궤적은 서로 만나지 않는다 |
| 매개변수가 바닥 근처이면 모멘텀 버퍼는 없어도 된다고 봄 | 3 | 버퍼는 운동량이다. 체크포인트에 옵티마이저 상태도 저장한다 |
| 속도로 적은 에너지를 그대로 해밀턴 방정식에 넣음 | 4 | 해밀토니안은 위치와 운동량의 함수로 적는다. 에너지가 보존돼도 틀릴 수 있다 |
| ṗ = +∂ℋ/∂q로 부호를 틀림 | 5 | 풀고 나서 ℋ가 보존되는지 검산한다. 다만 ℋ가 시간에 직접 의존하면 보존되지 않는다 |
| 넓이를 지키려고 늘린 배율만큼 빼서 줄임 | 6 | 배율로 나눈다. 가로와 세로 배율의 곱이 1이어야 한다 |
| 한 방향으로 늘어나는 것만 보고 넓이가 늘었다고 봄 | 7 | 모든 방향의 배율을 곱한다. 해밀턴 흐름에서는 그 곱(행렬식)이 1이다 |
| 리우빌 방정식을 「한 자리에서 잰 밀도가 변하지 않는다」로 읽음 | 8 | 변하지 않는 것은 흐름을 따라가며 잰 밀도다. 한 자리의 밀도는 에너지만의 함수일 때만 그대로다 |
| 연속 흐름에 이산 flow의 log|det| 공식을 속도장 행렬에 그대로 씀 | 9 | 연속 흐름은 −tr(∂f/∂x)를 시간으로 적분한다 |
| 위치 공간의 부피만 세고 운동량 축을 빠뜨림 | 10 | 에너지는 운동량 쪽에 있다. 위상공간 전체의 부피를 센다 |
| 운동량 대신 속도로 부피를 잼 | 11 | 속도로 잰 부피는 좌표에 따라 늘고 준다. 리우빌 정리는 (q, p)에서 성립한다 |
| 오일러 방법의 에너지 증가를 걸음 크기만 줄여 해결하려 함 | 12 | 걸음을 줄이면 늦춰질 뿐이다. 넓이를 보존하는 적분법(leapfrog)을 쓴다 |
| 넓이 보존과 에너지 보존을 같은 것으로 봄 | 12 | 심플렉틱 적분법은 넓이를 정확히, 에너지는 근사로 지킨다 |
| HMC 수락 확률을 π(q′)/π(q)로 계산함 | 13 | 결합 분포 e^(−ℋ)의 비, 곧 e^(−Δℋ)를 쓴다 |
| 한 방향의 배율만 보고 넓이의 배율이라고 봄 | 14 | 넓이는 위치 방향과 운동량 방향 배율의 곱이다 |
| 모멘텀 버퍼를 0.9배 하니 위치 방향도 0.9배라고 봄 | 15 | 갱신 한 번의 야코비 행렬식을 계산한다. 차원당 넓이 배율은 μ다 |
요약
이 장에서 한 일을 정리해 보자. 그네의 상태를 위치와 운동량의 평면에 점으로 찍으면 한 번의 왕복이 원 한 바퀴가 되고, 그 점이 움직이는 방향은 에너지의 기울기를 90도 돌린 방향이라 상태는 에너지의 등고선을 따라 흐른다. 위치와 운동량의 함수로 적은 에너지, 곧 라그랑지안의 르장드르 변환을 해밀토니안 ℋ(q, p)라 하고, 운동은 q̇ = ∂ℋ/∂p, ṗ = −∂ℋ/∂q라는, 한 번 미분한 양만 든 방정식 두 개로 적힌다. 에너지 보존은 이 식의 모양에서 저절로 나온다. 이 흐름의 속도장은 발산이 0이므로 위상공간의 부피를 바꾸지 않고(리우빌 정리), 흐름을 따라가면 확률밀도도 변하지 않으며, 에너지만의 함수인 밀도는 시간이 지나도 그대로다. 부피가 시간에 따라 변하지 않으므로 연속 상태의 경우의 수는 위상공간의 부피로 세고, 이렇게 세면 이상기체의 엔트로피와 E = (3/2)NkT가 나온다(칸 하나의 넓이는 플랑크 상수로 정해진다). 수치 적분에서는 넓이를 정확히 지키는 leapfrog가 오일러 방법과 달리 에너지를 오래 지킨다. ML에서는 모멘텀 SGD의 상태가 매개변수와 모멘텀 버퍼의 짝이라는 것부터 위상공간의 눈으로 읽히고, HMC가 에너지 보존으로 높은 수락률을, 부피 보존으로 야코비 행렬식 없는 수락 공식을 얻고, 연속 normalizing flow의 로그밀도 식은 리우빌 방정식과 같은 논리이며, Hamiltonian Neural Networks는 ℋ를 배워 보존 법칙을 구조로 보장하고, 모멘텀 최적화는 마찰로 위상공간의 부피를 줄여 한 점에 수렴한다.
막힌 곳
이제 우리는 위상공간에서 상태가 어떻게 흐르는지 알고, 연속 상태의 경우의 수도 셀 수 있다. 그런데 한 가지가 어색하게 남아 있다. 바깥과 에너지를 주고받지 않는 계는 해밀턴 흐름을 따라 영원히 같은 에너지의 등고선 위에 머물고, 등확률 가정대로라면 그 등고선 위에 고르게 퍼져 있어야 한다. 그런데 HMC가 표본을 뽑은 분포 e^(−ℋ)는 어느 한 등고선이 아니라 모든 에너지에 걸쳐 퍼져 있고, 에너지가 높을수록 지수적으로 드물어진다. HMC는 매번 운동량을 새로 뽑아 이 에너지 저 에너지로 옮겨 다니는데, 이것은 마치 바깥의 무언가가 계에 에너지를 넣었다 뺐다 하는 것과 같다. 에너지가 고정된 계의 「등고선 위의 균등 분포」와 에너지를 주고받는 계의 「e^(−에너지)」는 어떤 관계일까? 그리고 지수함수는 도대체 어디서 나온 것일까?