15장 — 브라운 운동, 랑주뱅, 포커–플랑크

자주 하는 실수와 요약

자주 하는 실수

실수 나온 문제 바로잡는 법
거리를 두 배로 가려면 스텝도 두 배면 된다고 봄 1 스텝 수에 비례하는 것은 거리의 제곱이다. 두 배 멀리 가려면 네 배 걷는다
평균 스텝 길이를 제곱해 거리 제곱이 쌓이는 양으로 씀 2 스텝마다 더해지는 것은 스텝 길이 제곱의 평균이다
스텝이 서로 닮아도 거리 제곱의 평균이 스텝 수와 같다고 봄 2 평균 이동 0과 독립, 두 조건이 다 있어야 교차항이 사라진다
흔들리는 양의 변화를 간격으로 나눈 값을 하나의 빠르기로 봄 3, 4 변화가 간격의 제곱근에 비례해 잰 값이 간격에 따라 변한다. 변화의 제곱 평균 2DΔt를 잰다
독립인 노이즈를 이어 더할 때 표준편차를 더함 5 독립이면 분산이 더해진다. 표준편차가 더해지는 것은 같은 노이즈를 되풀이할 때다
평균 증가가 표준편차의 두 배가 되는 기간을 같아지는 기간의 두 배로 봄 6 평균 증가 ∝ n, 표준편차 ∝ √n이므로 비율을 두 배로 하려면 기간은 네 배다
열속도와 현미경으로 잰 속도 가운데 하나가 틀렸다고 봄 7 운동량은 m/ζ 만에 잊힌다. 그보다 긴 간격으로 재면 브라운 운동으로 보인다
한 스텝의 노이즈가 그래디언트 이동보다 크면 내리막으로 못 간다고 봄 8 스텝이 쌓이면 끌림이 이긴다. 노이즈가 √(2η)이면 시간으로 잰 따라잡는 때는 스텝 크기와 상관없다
노이즈를 끄고 흐름 속도로만 옮기면 분포가 퍼지지 않는다고 봄 9 흐름 속도는 자리마다 달라 분포가 똑같이 퍼진다. 다른 것은 입자 하나하나의 경로다
힘이 계속 당기면 결국 모두 바닥으로 모인다고 봄 10 끌려가는 흐름과 퍼지는 흐름이 상쇄되는 분포 e^(−U/(ζD))에서 멈춘다
확산 계수와 마찰 계수를 따로 정할 수 있다고 봄 10, 17 온도 T에서는 D = kT/ζ. 곱 ζD가 샘플러의 온도가 된다
시간을 잘게 쪼갤 때 무작위 변화의 표준편차도 시간에 비례해 줄임 11 독립인 무작위 변화는 분산이 더해진다. 표준편차는 시간의 제곱근에 비례해 줄인다
온도를 바꾸려고 노이즈의 표준편차에 온도 비율을 곱함 12 온도는 σ²/(2a)로 σ²에 비례한다. 온도를 10분의 1로 하려면 σ는 1/√10배
미니배치 그래디언트의 노이즈면 샘플러가 된다고 봄 13 그래디언트 오차는 η배 되어 온도가 η/2쯤이다. 스텝 크기를 줄이면 식는다
논문이 적은 식대로 샘플러가 온도 1에서 뽑는다고 봄 13 실제로 쓴 스텝 크기와 노이즈로 σ²/(2a)를 계산해 읽는다
h번 연속 성공을 기다리는 횟수를 1/(성공 확률)로 셈 14 중간에 끊기면 처음부터 다시 센다. 평균 2^(h + 1) − 2번으로 h에 지수다
짧은 체인 여러 개의 봉우리 비율을 믿음 15 장벽을 넘는 시간이 e^(장벽/kT)로 길다. 노이즈 레벨을 낮춰 가는 어닐드 랑주뱅이나 긴 체인을 쓴다
빠져나가는 비율이 다른 곳의 유입 규칙을 그대로 씀 16 멈추는 곳은 들어오는 양 ÷ 나가는 비율이다. 나가는 비율이 0.1배면 들어오는 양도 0.1배
모멘텀이 있는 샘플러에 SGLD의 노이즈를 그대로 넣음 17 노이즈의 분산은 2 × 마찰 × 스텝 크기 × kT. 모멘텀 계수 μ면 마찰은 1 − μ
미니배치 그래디언트가 이미 넣는 노이즈를 빼지 않고 마찰에 맞춘 노이즈(분산 2ζkT·스텝 크기)를 그대로 더함 17 운동량에 들어오는 노이즈는 어디서 오든 모두 센다. 마찰에 맞춘 노이즈의 분산에서 미니배치 그래디언트 오차의 분산을 뺀다
노이즈만 넣거나 마찰만 남김 18 노이즈만 있으면 데워지고 마찰만 있으면 식는다. 둘을 짝으로 넣는다
역방향 SDE를 확률 플로우 ODE에 노이즈만 붙인 것으로 봄 18 스코어 하나와 노이즈 √2 dB가 p_t를 바꾸지 않는 랑주뱅 쌍이다. 쌍으로 넣고 쌍으로 뺀다

요약

노이즈를 조금씩 더해 가는 샘플 하나는 브라운 운동을 따른다. 시간 Δt마다 평균 0, 한 축 분산 2DΔt인 독립 변위가 더해지므로 거리의 제곱이 시간에 비례해 쌓이고, 길은 이어져 있지만 어디서도 속도가 없다. 이런 샘플을 많이 모은 분포는 이웃 평균 규칙인 열 방정식을 따르는데, 동전으로 걷는 사람이 칸 x에 있을 확률이 이웃 네 칸 확률의 평균이라는 것이 그 이유다. 힘 −∇U를 더하면 랑주뱅 방정식 dx = −(∇U/ζ)dt + √(2D) dB가 되어, 끌려간 거리는 시간에 비례하고 노이즈로 퍼진 폭(표준편차)은 시간의 제곱근에 비례한다. 그 분포는 끌려가는 흐름 −∇U/ζ와 퍼지는 흐름 −D∇ln ρ를 더한 속도로 흐르는 포커–플랑크 방정식을 따르고, 입자를 노이즈 없이 그 흐름 속도로만 옮겨도 분포는 똑같이 흐른다. 끌려가는 흐름과 퍼지는 흐름이 상쇄되는 분포는 e^(−U/(ζD))이고, 이 분포가 온도 T의 볼츠만 분포이려면 아인슈타인 관계 D = kT/ζ가 성립해야 한다. 한 스텝에 x ← x − a∇U + σz로 움직이는 샘플러는 온도 σ²/(2a)의 볼츠만 분포를 향하고, 골짜기 사이 장벽을 넘는 데는 e^(장벽 높이/kT)에 비례하는 시간이 걸린다. 관성을 되살린 언더댐프드 랑주뱅 방정식은 해밀턴 흐름에 마찰 −(ζ/m)p와 노이즈 √(2ζkT) dB를 더한 것이고, 마찰이 빼내는 에너지와 노이즈가 넣는 에너지가 운동에너지 kT/2에서 같아진다. 마찰이 있는 곳에는 그 마찰과 온도로 크기가 정해진 노이즈가 있다는 이 관계가 요동-소산 정리이고, 저항기의 존슨–나이퀴스트 노이즈도 그 예다. ML에서는 SGLD의 √(2η), 에너지 기반 모델 샘플러의 실제 온도 σ²/(2a), 어닐드 랑주뱅이 노이즈로 메우는 골짜기, DDPM의 원점으로 당기는 전방 과정과 평형인 표준정규분포, 역방향 SDE의 「확률 플로우 ODE + 분포를 바꾸지 않는 랑주뱅 쌍」, SGHMC와 CLD의 마찰–노이즈 짝이 모두 이 한 방정식에서 나온다.

막힌 곳

이제 노이즈를 조금씩 더하는 샘플 하나가 걷는 경로와, 그 경로에 에너지의 내리막을 더한 랑주뱅 방정식, 그리고 그런 샘플들의 분포가 따르는 포커–플랑크 방정식을 적을 수 있다. 끌려가는 흐름과 퍼지는 흐름이 상쇄되는 분포는 볼츠만 분포이고, 확산 계수와 마찰 계수가 D = kT/ζ를 지키면 에너지 함수만으로, Z를 몰라도 그 분포에서 샘플을 뽑을 수 있다.

그런데 이것은 기다릴 수 있을 때의 이야기다. 두 봉우리 사이에 높이 6.4kT의 벽이 있으면 랑주뱅 체인이 건너가는 데 평균 시간 400이 넘게 걸린다. 노이즈 레벨을 낮춰 가며 목표 분포를 조금씩 옮기는 어닐드 랑주뱅도, 한 수준에 100스텝을 주면 오른쪽 봉우리의 비율이 0.788이고 1스텝만 주면 0.588로 참값 0.8에서 벗어난다. 목표 분포가 바뀌는 동안 샘플들은 뒤처지고, 뒤처진 샘플들의 분포는 그 순간의 어느 볼츠만 분포와도 같지 않다. 게다가 랑주뱅 방정식은 Z 없이 샘플을 뽑는 대신 Z에 대해서는 아무것도 알려 주지 않는다. 두 모델의 우도를 비교하거나 두 상태의 자유에너지 차이를 구하려면 바로 그 Z의 비가 필요하다.

평형에 이를 시간을 주지 않고 분포를 끌고 다닌 샘플들로부터, 평형의 양인 Z의 비를 정확히 얻을 방법이 있을까? 에너지 함수를 바꿔 가는 동안 샘플마다 무엇을 기록해 두면, 뒤처져서 생긴 오차(참값과 샘플로 잰 값의 차이)를 나중에 정확히 바로잡을 수 있을까?