자주 하는 실수와 요약
자주 하는 실수
| 실수 | 나온 문제 | 바로잡는 법 |
|---|---|---|
| 2차원 격자의 퍼진 거리 √n을 한 줄로 반 칸씩 움직이는 구슬에 그대로 씀 | 1 | 한 번에 늘어나는 거리 제곱은 한 걸음 크기의 제곱이다. 반 칸이면 1/4씩 쌓인다 |
| 가운데 몫이 2차원처럼 되풀이 횟수에 반비례한다고 봄 | 1 | 1차원에서는 퍼진 폭에, 2차원에서는 퍼진 넓이에 반비례한다 |
| 거리 제곱이 쌓이는 것을 거리가 쌓이는 것으로 읽음 | 2 | 쌓이는 것은 거리의 제곱이다. 퍼진 거리는 그 제곱근이다 |
| 자기 몫을 조금이라도 남기면 출렁임이 사라진다고 봄 | 2 | 두 색 칸의 차이는 한 번에 1 − 2α배가 된다. 반을 넘게 나눠 주면 부호를 바꾸며 출렁인다 |
| 블러를 두 번 걸면 표준편차가 더해진다고 봄 | 3 | 더해지는 것은 시간, 곧 분산 2Dt다. σ = 3을 두 번 걸면 √18 = 4.24다 |
| 퍼진 폭이 시간에 비례한다고 봄 | 4 | 쌓이는 것은 거리의 제곱이다. σ² = 2Dt라서 짧은 시간에는 비례로 셈한 것보다 멀리, 먼 거리는 훨씬 오래 걸린다 |
| 모든 무늬가 같은 빠르기로 흐려진다고 봄 | 5 | 파수 k인 무늬는 e^(−Dk²t)로 준다. 무늬를 지우는 시간은 파장의 제곱에 비례한다 |
| 흐린 이미지를 되살릴 때 가는 무늬부터 돌아온다고 봄 | 5 | 거꾸로 가면 순서도 거꾸로다. 마지막까지 남았던 굵은 무늬가 먼저 돌아온다 |
| 이웃끼리 평균을 되풀이하면 단순 평균으로 모인다고 봄 | 6 | (이웃 수 + 1)을 곱한 합이 보존된다. 이웃이 많은 쪽의 몫이 크다 |
| 이웃 평균을 한꺼번에 되풀이하면 늘 고르게 된다고 봄 | 7 | 짝수 고리나 바둑판 격자에는 배율이 −1인 무늬가 있다. 자기 값을 남기는 게으른 평균이나 자기 연결로 없앤다 |
| 자기 연결이 과평활화를 늦추는 장치라고 봄 | 8 | 자기 연결은 −1 근처의 배율을 없애 진동을 막는다. 고윳값 1인 무늬만 남는 것은 그대로라, 처음 특징을 되먹이거나 층을 얕게 둔다 |
| 해가 하나로 정해지니 열 방정식을 거꾸로 풀 수 있다고 봄 | 9 | 촘촘한 무늬가 e^(Dk²t)배로 커진다. 반올림 오차 아래로 가라앉은 정보는 끝 모양에서 되찾을 수 없고, 그 경계는 오래 퍼뜨릴수록 낮아진다 |
| 오래 퍼뜨린 분포는 흐름으로도 되돌릴 수 없다고 봄 | 10 | 처음 모양의 정보는 끝 모양이 아니라 모든 시간의 스코어에 남아 있다 |
| 흐름을 거꾸로 따라갈 때 속도의 부호를 그대로 둠 | 10 | 시간을 거꾸로 가면 +D∇ln ρ 쪽으로 옮긴다 |
| 평균과 분산이 맞는 스코어면 충분하다고 봄 | 10 | 봉우리 구조는 스코어의 모양에 있다. 가우시안 스코어로는 한 봉우리만 나온다 |
| 분산 폭발형 확산의 잡음과 이미지 블러를 같은 공간의 열 방정식으로 봄 | — | 앞은 데이터 공간의 분포가, 뒤는 픽셀 평면의 이미지 한 장이 퍼진다 |
요약
이웃끼리 평균을 내는 규칙은 값의 합을 지키면서, 평균 이동이 0이므로 처음 모양과 상관없이 거리의 제곱을 매번 같은 만큼 늘린다. 그래서 퍼진 거리는 되풀이 횟수의 제곱근을 따르고 모양은 가우시안이 된다. 칸 간격 a와 시간 간격 τ를 0으로 보내면 이 규칙은 열 방정식 ∂u/∂t = D∇²u가 되고(격자에서 D = a²/4τ = 1/4), 한 점에서 출발한 해는 한 축 분산이 σ² = 2Dt인 가우시안, 곧 열핵이다. 파수 k인 푸리에 모드는 모양을 지킨 채 e^(−Dk²t)로 줄어 촘촘한 무늬부터 사라진다. 격자에서는 바둑판 무늬의 배율이 −1이라 동시 갱신이 진동할 수 있고, 자기 값을 남기면 이 진동이 사라진다. 거꾸로 가는 열 방정식은 촘촘한 무늬를 e^(Dk²t)배로 키우는 불안정한 문제다. 연속 방정식으로 읽으면 열 방정식은 속도가 v = −D∇ln ρ인 흐름이고, 모든 시간의 스코어를 알면 +D∇ln ρ를 따라 흐름을 거슬러 퍼지기 전의 분포를 되찾을 수 있다. GCN의 전파는 그래프 위의 열 방정식이라 층을 쌓으면 과평활화가 일어나고, 분산 폭발형 확산의 앞으로 가는 과정(forward process)은 데이터 공간 위의 열 방정식이며, 열 퍼짐을 되돌리는 생성 모델은 픽셀 평면 위의 열 방정식을 거꾸로 돌린다.
열 방정식은 ML에서 세 공간에 나타난다. 그래프 위에서는 노드 특징이, 데이터 공간에서는 데이터 분포가, 픽셀 평면에서는 이미지 한 장의 픽셀 값이 퍼진다. 무엇이 어느 공간에서 퍼지는지를 구별하면 세 현상이 같은 방정식으로 읽힌다.
flowchart LR H["열 방정식<br/>이웃 평균을 되풀이"] --> G["그래프 위<br/>노드 특징이 퍼짐"] H --> S["데이터 공간<br/>데이터 분포가 퍼짐"] H --> P["픽셀 평면<br/>이미지 한 장이 퍼짐"] G --> G2["GCN 과평활화<br/>층 하나 = 시간 한 걸음"] S --> S2["분산 폭발형 확산<br/>D = ½ dσ²/dt"] P --> P2["열 퍼짐을 되돌리는 생성 모델<br/>굵은 윤곽부터"]
막힌 곳
이제 고르지 않던 것이 고르게 되어 가는 과정을 적을 수 있다. 이웃끼리 평균을 내는 규칙은 열 방정식이 되고, 퍼진 폭은 √(2Dt)로 자라며, 촘촘한 무늬부터 사라진다. 같은 과정을 흐름으로 읽으면 속도는 −D∇ln ρ이고, 스코어를 알면 그 흐름을 거슬러 올라갈 수 있다.
그런데 열 방정식은 퍼뜨리기만 한다. 끝없는 공간에서는 분산이 한없이 커지고, 닫힌 그래프에서는 완전히 평평해져야 멈춘다. 에너지가 낮은 골짜기에 확률이 모인 볼츠만 분포처럼 평평하지 않은 평형으로 가는 시간 변화는 이 방정식으로 적을 수 없다. 분산을 1로 묶어 두는 확산 모델이 잡음을 더하면서 매 단계 샘플을 원점 쪽으로 조금씩 줄이는 것도 열 방정식에는 없는 일이다. 퍼지는 흐름 −D∇ln ρ에 에너지의 내리막으로 끌어당기는 흐름을 더하면, 두 흐름이 비겨 더는 아무것도 움직이지 않는 분포는 무엇일까? 또 이 장의 흐름은 밀도가 매끄럽게 움직이는 이야기였지만, 잡음을 조금씩 더해 가는 샘플 하나는 매끄럽게 움직이지 않는다. 그 샘플 하나는 어떤 길을 걷고, 그런 길들을 모으면 왜 열 방정식이 나오는가?