자주 하는 실수와 요약
자주 하는 실수
| 실수 | 나온 문제 | 바로잡는 법 |
|---|---|---|
| 거리를 두 배로 가려면 스텝도 두 배면 된다고 봄 | 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의 비를 정확히 얻을 방법이 있을까? 에너지 함수를 바꿔 가는 동안 샘플마다 무엇을 기록해 두면, 뒤처져서 생긴 오차(참값과 샘플로 잰 값의 차이)를 나중에 정확히 바로잡을 수 있을까?