혼동하기 쉬운 점과 요약
혼동하기 쉬운 점
| 혼동하기 쉬운 생각 | 나온 문제 | 바로잡는 법 |
|---|---|---|
| 흐름선이 출발점과 도착점을 잇는 직선이라고 봄 | 1 | 서로 상관없이 섞으면 표준편차가 √((1 − t)²a² + t²)로 곡선이다. 흐름선은 곧지 않다 |
| 생성할 때 속도 v 를 그대로 더함 | 2 | v 는 데이터 → 노이즈 방향(t 가 커지는 방향)의 속도다. t 를 줄이며 걸으니 −v 방향으로 간다 |
| (그림, 노이즈) 짝의 속도가 일정하니 신경망이 배우는 속도도 일정하다고 봄 | 2, 4 | 한 자리를 여러 짝이 지나간다. 신경망은 짝 속도의 평균인 주변 속도를 배우고, 주변 속도는 자리와 시간마다 다르다 |
| 정답이 갈릴 때 더 많은 정답 하나를 고름 | 3 | 제곱 오차를 가장 작게 하는 값은 평균이다 |
| x_t = (1 − t)x₀ + tε 의 분산을 1로 씀 | 4 | 노이즈에 t 가 곱해져 분산은 t² 이다. 분산이 틀리면 속도의 방향까지 뒤집힌다 |
| 속도장이 정확하면 한 스텝으로도 데이터가 나온다고 봄 | 5 | 노이즈 쪽 끝의 속도는 데이터 평균을 가리킨다. 휜 흐름은 큰 스텝으로 못 따라간다 |
| 남은 시간이 짧을 때 목적지 짐작의 작은 차이를 작게 봄 | 6 | 속도 = (자리 − 짐작)/남은 시간. 짐작의 오차가 남은 시간에 반비례해 커진다 |
| 다리 식의 0/0을 속도장이 무한대인 것으로 읽음 | 7 | 정의로 돌아가 극한을 잰다. 노이즈 쪽 끝은 식의 가짜, 데이터 쪽 끝은 데이터에 폭이 없을 때만 진짜다 |
| 같은 정보이니 무엇을 맞혀도 오차가 같다고 봄 | 8 | 바꿔 읽는 식에 1 − t 나 t 로 나누는 곳이 있으면 그 끝에서 오차가 부푼다. 속도를 맞히면 양 끝에서 고르다 |
| 맞은편 같은 거리 자리가 비면 거기로 가는 짝짓기가 가장 싸다고 봄 | 9 | 제곱 비용에서는 엇갈리는 짝을 풀면 늘 싸진다. 1차원에서는 순서대로 짓는 짝이 최소다 |
| 짝짓는 법을 바꿔도 노이즈 쪽 끝의 속도가 y − E[x₀] 라고 봄 | 10 | v(y, 1) = y − E[x₀] 는 노이즈와 그림이 서로 상관없을 때만 맞다. 순서대로 지은 짝은 자리마다 짝이 하나라 속도가 그 짝 하나의 속도다 |
| 리플로우 뒤에도 다리 식으로 스코어를 꺼냄 | 11 | 트위디 공식은 노이즈가 그림과 상관없을 때만 성립한다. 리플로우 짝에서는 다리 식이 성립하지 않는다 |
| 출발할 때의 속도로 끝까지 가면 된다고 봄 | 12, 14 | 구간 전체로는 평균 속도가 필요하다. 순간 속도로 한 스텝 가면 빗나간다 |
| 평균 속도의 t 미분을 0으로 둠 | 13 | 끝 시각 t 를 움직이면 구간이 바뀌어 평균도 바뀐다. 실제 모델에서는 자리도 함께 움직인다 |
요약
자리와 시간을 넣으면 그 자리의 점이 움직이는 빠르기와 방향이 나오는 함수가 속도장이고, 생성은 노이즈에서 출발해 t 를 1에서 0으로 줄이며 −v 방향으로 속도장을 따라가는 일이다. 그림 x₀ 와 노이즈 ε 를 짝지어 직선 xₜ = (1 − t)x₀ + tε 로 이으면 짝 하나의 속도는 ε − x₀ 로 일정하다. 신경망이 이 짝의 속도를 제곱 오차로 맞히게 하면(플로우 매칭) 자리 y를 지나는 짝들의 속도 평균인 주변 속도 v(y, t) = (y − E[x₀ ∣ y])/t 를 배우고, 이 주변 속도장이 노이즈 분포를 데이터 분포로 옮긴다. 주변 속도와 스코어는 v = −(y + t s)/(1 − t) 로 서로 바뀌는 같은 정보이고(x̂₀ = y − t v, ε̂ = y + (1 − t)v), 속도를 맞히면 다른 추정값으로 바꿀 때 오차가 어느 끝에서도 부풀지 않는다. 짝마다 선분은 곧아도 짝의 직선들이 엇갈리면 평균한 흐름은 휘고, 큰 스텝은 데이터 평균 쪽으로 빗나간다. 흐름이 만든 짝으로 다시 배우는 리플로우나 묶음 안에서 최적 수송으로 짝을 짓는 방법은 엇갈림을 줄여 흐름선을 편다. 대신 리플로우 뒤에는 트위디 공식이 서지 않아 스코어를 꺼낼 수 없다. 순간 속도 대신 구간의 평균 속도 v̄ 를 배우면(MeanFlow) 한 스텝 x₀ = ε − v̄(ε, 0, 1) 로 닿을 수 있고, 항등식 v̄ = v − (t − r)dv̄/dt 덕에 흐름을 돌리지 않고 배운다.
flowchart LR A["스코어 + 걷는 규칙<br/>(레이더를 보는 참가자)"] --> B["속도장 v(x, t)<br/>(수첩을 든 참가자)"] B --> C["짝 하나의 직선<br/>속도 ε − x₀"] C -->|"제곱 오차로 맞히면 평균"| D["플로우 매칭<br/>주변 속도 = 짝 속도의 평균"] D -->|"트위디 공식"| E["다리<br/>v = −(y + t s)/(1 − t)"] D -->|"짝이 엇갈리면 흐름이 휜다"| F["리플로우 · 최적 수송 짝<br/>흐름선을 편다"] F -->|"곧을수록 쉽다"| G["평균 속도 v̄ (MeanFlow)<br/>한 스텝 x₀ = ε − v̄(ε, 0, 1)"] D --> G
막힌 곳
이제 노이즈와 데이터 사이의 궤적을 정하는 법을 두 가지로 안다. 스코어에 걷는 규칙(노이즈 스케줄과 샘플러)을 붙이는 방법과, 속도장을 직접 배우는 플로우 매칭이다. 스코어와 속도장은 다리 식으로 이어진 같은 정보이고, 흐름선을 곧게 펴거나 구간의 이동표를 배우면 스텝 수를 크게 줄일 수 있다는 것도 보았다.
그런데 신경망에게 맞히게 할 후보도 늘었다. 섞은 노이즈, 짝의 속도, 그리고 다리 식으로 꺼낸 원래 그림의 추정값까지, 노이즈·속도·원래 그림의 추정값은 지금 자리와 시간만 알면 간단한 식 하나로 서로 바뀌는 같은 정보다. 다만 바꿔 읽어 보니 노이즈를 맞히면 노이즈 쪽 끝에서 오차가 부풀었고, 속도는 양 끝에서 고르게 버텼다. 끝까지 배우면 같은 답에 닿는다는 출력 꼴들이, 배우는 동안에는 왜 이렇게 다를까? 깨끗한 그림을 바로 내놓게 하면 나눌 일이 아예 없는데, 원래 그림을 맞히게 하는 방법은 어떨까? 그리고 무엇을 맞히게 할지는 그림이 얼마나 넓은 공간에 퍼져 있느냐와 상관이 있을까?