정규화 흐름과 플로우 매칭: 변수 변환에서 직선 경로까지
변수 변환 · 결합 층 · 연속 흐름에서 플로우 매칭 · 정류 흐름 · 리플로우까지 손계산으로
먼저 알아야 할 것
다루는 내용
정규화 흐름이 변수 변환 공식으로 정확한 로그 가능도를 계산하는 원리를 1차원 손계산으로 보이고, 삼각 야코비안 · 아핀 결합 층(Real NVP) · MAF/IAF 맞바꿈을 정리합니다. 연속 흐름의 속도장과, 잡음-데이터 직선의 속도를 회귀로 배우는 조건부 플로우 매칭 · 정류 흐름 · 리플로우를 설명하고 확산 모델 · Stable Diffusion 3 · π0와의 관계를 짚습니다.
해설
정규화 흐름과 플로우 매칭: 변수 변환에서 직선 경로까지
정규화 흐름(normalizing flow) 은 단순한 잡음 분포를 역함수가 있는 변환으로 구부려 데이터 분포를 만들고, 그 확률을 정확히 계산하는 생성 모델입니다. 최근의 플로우 매칭(flow matching) 은 같은 "흐름" 생각을 시간에 따라 연속으로 확장하고, 잡음에서 데이터로 가는 곧은 길의 속도 를 회귀로 배우게 해 확산 모델만큼 쉽게 학습되면서 더 적은 단계로 생성합니다. Stable Diffusion 3와 로봇 모델 π0가 이 방식을 씁니다.
| 항목 | 내용 |
|---|---|
| 참고 출처 | 스탠퍼드 CS236 노트 Normalizing Flow Models, Dinh 외 Real NVP(2016), Lipman 외 Flow Matching(2022), Liu 외 Rectified Flow(2022), Esser 외 Stable Diffusion 3(2024) |
| 트랙 · 수준 | 생성 모델 · 중급 |
| 이 수업이 다루는 범위 | 변수 변환 공식(1차원 손계산), 야코비안 행렬식과 계산 비용, 결합 층(NICE · Real NVP), 자기회귀 흐름(MAF · IAF) 맞바꿈, 연속 흐름과 속도장, 조건부 플로우 매칭 · 정류 흐름 목표, 리플로우, 확산과의 관계 |
들어가기 전에
- 생성 모델 총론 — 플로우가 "정확한 가능도" 갈래라는 점.
- 머신러닝을 위한 수학 — 행렬 곱과 미분. 행렬식은 이 수업에서 바로 풉니다.
- 확산 모델 실전 — 잡음에서 데이터로 여러 걸음 걷는 생성. 플로우 매칭과 비교합니다.
한눈에 보기
- 변수를 바꾸면 확률 밀도에 "부피 변화율(야코비안 행렬식)"을 곱해야 하는 이유를 1차원 숫자로 확인합니다.
- 결합 층이 왜 야코비안을 삼각 행렬로 만들어 행렬식을 에 계산하게 하는지 압니다.
- 플로우 매칭의 학습 목표가 "잡음과 데이터를 잇는 직선의 속도 맞히기"라는 단순한 회귀임을 손계산합니다.
- 정류 흐름 · 리플로우가 왜 한두 걸음 생성을 가능하게 하는지 감을 잡습니다.
- 확산 · 플로우 매칭 · π0 · SD3가 어떻게 이어지는지 지도를 그립니다.
1. 변수 변환 공식: 늘이면 밀도는 묽어진다
직관(해설용 비유). 고무판 위에 잉크 한 방울(확률 질량 1)이 고르게 퍼져 있습니다. 고무판을 두 배로 늘이면 잉크 총량은 그대로지만 단위 면적당 진하기(밀도)는 절반이 됩니다. 확률 밀도도 같습니다.
단계.
- 단순한 분포 (보통 표준 정규분포)를 둡니다.
- 역함수가 있는 변환 로 데이터를 만듭니다. 거꾸로 .
- 의 밀도는 "대응하는 의 밀도 × 부피 변화율" 입니다.
Real NVP 논문 표기(데이터 → 잠재 방향 )로 쓰면 다음과 같습니다.
| 기호 | 뜻 |
|---|---|
| 데이터 를 잠재 로 보내는 역변환 가능한 함수 | |
| 야코비안 행렬: 입력 각 방향의 작은 변화가 출력을 얼마나 바꾸나 | |
| 야코비안 행렬식의 절댓값 = 국소 부피 변화율 |
숫자로 해 보기(해설용). , 이라 합시다. 역변환 , 기울기 .
- : , → ,
- : , →
결과는 의 밀도와 정확히 같습니다. 2배로 늘인 만큼 밀도가 이 되었습니다.
왜 이렇게 하나. 이 공식 덕분에 플로우는 VAE처럼 하한이 아니라 정확한 로그 가능도 를 계산하고, 그대로 최대우도로 학습합니다. 조건은 두 가지입니다. 변환이 역함수를 가져야 하고(그래서 와 의 차원이 같아야 함), 행렬식을 싸게 계산할 수 있어야 합니다.
2. 행렬식이 비싸다: 삼각 야코비안으로 피하기
차원 일반 행렬의 행렬식은 대략 계산이 듭니다. 64×64×3 이미지면 이라 학습 걸음마다 계산하기는 너무 비쌉니다. CS236 노트가 강조하듯 야코비안이 삼각 행렬이면 행렬식은 대각 원소의 곱 이라 입니다.
숫자로 해 보기(해설용). 은 아래 삼각 행렬이라 행렬식 입니다(일반 공식 과 같음). 이 변환은 국소 넓이를 6배로 키웁니다.
3. 결합 층: 반은 그대로, 반은 그 반에 따라 바꾸기
NICE(덧셈 결합). 입력을 두 덩어리 로 나눠 는 그대로 두고 에 " 의 신경망 함수"만큼 더합니다. 야코비안 행렬식이 1이라 부피를 보존합니다.
Real NVP(아핀 결합). Dinh · Sohl-Dickstein · Bengio(2016)는 크기 조절을 더했습니다.
| 기호 | 뜻 |
|---|---|
| 그대로 통과하는 앞쪽 개 | |
| 크기 · 이동을 내는 신경망(역함수가 없어도 됨) | |
| 원소별 곱 |
역변환은 로 바로 구해지고, 야코비안이 삼각이라 로그 행렬식 = 입니다. 의 야코비안은 계산할 필요조차 없습니다.
숫자로 해 보기(해설용). 2차원 , , 라 합시다.
- 순변환: ,
- 로그 행렬식:
- 역변환: — 정확히 되돌아옵니다.
왜 층을 번갈아 쌓나. 한 층은 앞 덩어리를 바꾸지 못합니다. 그래서 다음 층에서는 역할을 바꿔(마스크를 뒤집어) 모든 차원이 변형되게 합니다. Real NVP는 이미지에서 체커보드 마스크와 채널 마스크를 번갈아 씁니다.
자기회귀 흐름의 맞바꿈. 각 차원을 앞 차원들의 함수로 변환하는 자기회귀 흐름도 야코비안이 삼각입니다. CS236 노트의 정리로는 MAF는 가능도 계산이 빠르지만 생성이 차원 수만큼 순차적이라 느리고, IAF는 반대로 생성이 빠르고 새 데이터의 가능도 계산이 느립니다.
4. 연속 흐름: 한 번에 구부리지 말고 조금씩 흘려보내기
층을 무한히 잘게 쪼개면, 변환은 시간 에 따라 점을 움직이는 속도장(vector field) 로 표현됩니다.
생성은 이 상미분방정식(ODE)을 오일러 방법 등으로 적분하는 것입니다: . 역함수 조건이나 차원 분할 같은 구조 제약이 사라지는 대신, 예전 방식(연속 정규화 흐름)은 학습 중에도 ODE를 풀어야 해서 비쌌습니다. 플로우 매칭은 이 비용을 없앴습니다.
5. 플로우 매칭: 직선 경로의 속도를 회귀로 배우기
직관(해설용 비유). 잡음 점 하나와 데이터 점 하나를 짝지어 직선으로 잇고, "그 직선 위 어느 지점에서든 이 방향 · 이 속력으로 가라"는 정답을 신경망에 가르칩니다. 수많은 짝의 정답을 평균 내면 전체 잡음 분포를 데이터 분포로 옮기는 속도장이 됩니다.
Lipman 외(2022)는 시간 규약을 잡음, 데이터로 두고, 계산할 수 없는 전체 속도장 대신 데이터 점 하나에 조건을 건 속도장 을 맞히는 조건부 플로우 매칭(CFM)이 같은 기울기를 준다는 것을 보였습니다. 최적 수송(OT) 경로를 고르면 손실은 다음과 같습니다.
| 기호 | 뜻 |
|---|---|
| 표준 정규분포에서 뽑은 잡음 | |
| 데이터 표본 | |
| 시각 에 직선 위에 있는 점 | |
| 그 점에서의 정답 속도(시간에 따라 방향이 변하지 않음) | |
| 끝점에 남기는 아주 작은 폭. 0으로 두면 순수 직선 보간 | |
| 학습하는 속도 신경망 |
Liu · Gong · Liu(2022)의 정류 흐름(rectified flow) 은 인 경우와 같은 목표 — 에서 최소화 — 를 독립적으로 제안했습니다. 최소최대 게임도, 가능도 계산도 없는 평범한 최소제곱 문제입니다.
숫자로 해 보기(해설용, ). 잡음 , 데이터 , 를 뽑았습니다.
- 직선 위 점:
- 정답 속도:
- 신경망이 를 냈다면 손실
생성할 때 신경망이 완벽히 를 낸다면, 에서 출발해 로 4걸음 가면 — 정확히 데이터에 닿습니다. 길이 곧으면 걸음 수가 적어도 됩니다. ( 이면 점은 , 정답 속도는 로 거의 같습니다.)
왜 실제로는 길이 휘나. 짝은 무작위로 지어지므로 여러 직선이 서로 교차합니다. 교차점에서 신경망은 여러 정답의 평균 을 배울 수밖에 없어, 학습된 전체 흐름은 곡선이 됩니다. 그래서 1걸음 생성은 아직 어렵습니다.
리플로우(reflow). 정류 흐름 논문은 학습한 흐름으로 잡음 를 끝까지 흘려 얻은 과 다시 짝을 지어 같은 학습을 반복합니다. 이제 짝이 흐름을 따라 정해졌으므로 교차가 줄고 길이 곧아집니다. 논문은 한 번의 리플로우로 거의 곧은 경로를 얻어 1걸음 오일러로도 좋은 결과가 나온다고 보고했고(CIFAR-10 1걸음 FID 4.85), 리플로우를 너무 많이 하면 추정 오차가 쌓일 수 있다고 주의를 줍니다.
flowchart LR
E[잡음 x0 ~ N 0,I] --> MIX[직선 위 점<br/>x_t = 1−t·x0 + t·x1]
DATA[데이터 x1] --> MIX
T[시각 t ~ 0~1] --> MIX
MIX --> NET[속도 신경망 v_θ x_t, t]
E --> TGT[정답 속도 x1 − x0]
DATA --> TGT
NET --> LOSS[제곱 오차]
TGT --> LOSS
NET -.생성.-> ODE[오일러 적분<br/>x ← x + Δt·v]
ODE --> OUT[새 표본]6. 확산 · 플로우 매칭 · π0 · SD3
- 확산과의 관계. 확산 모델도 결국 "잡음 → 데이터" 경로 위에서 잡음(또는 점수)을 예측하고, 이것은 속도장으로 바꿔 쓸 수 있습니다. 플로우 매칭 논문은 확산 경로도 자기 틀의 한 경우로 다루고, OT 직선 경로가 학습과 생성에서 더 효율적이라고 보고합니다. 차이는 "어떤 경로를 택하고 무엇을 예측하느냐"입니다.
- Stable Diffusion 3. Esser 외(2024)는 정류 흐름을 고해상도 텍스트-이미지 생성으로 키우며, 학습 때 뽑는 잡음 수준을 지각적으로 중요한 쪽으로 치우치게 하는 방식이 기존 확산 공식보다 낫다고 보고했습니다. 이미지 · 텍스트 토큰에 따로 가중치를 쓰면서 서로 정보를 주고받는 트랜스포머 구조도 함께 제안했습니다.
- π0. π0 는 로봇 행동 묶음을 같은 플로우 매칭으로 생성합니다. 시각 을 잡음, 을 정답 행동으로 두고 10걸음 오일러 적분을 씁니다. 이 수업의 손계산과 같은 구조입니다.
연습 문제
- , 일 때 은?
- 풀이: , . 입니다.
- 아핀 결합 층에서 이면 이 층의 로그 행렬식은?
- 풀이: 입니다. 이 층은 국소 부피를 배로 줄입니다.
- 플로우 매칭()에서 , , 일 때 직선 위 점과 정답 속도는?
- 풀이: , 정답 속도 입니다.
- 위 문제에서 신경망이 정답 속도를 늘 정확히 낸다면, 에서 2걸음() 오일러로 어디에 도착하나요?
- 풀이: , 다시 . 데이터 에 도착합니다.
스스로 점검
- 플로우가 VAE와 달리 정확한 로그 가능도를 계산할 수 있는 이유는?
- 답: 역함수가 있는 변환만 써서 변수 변환 공식으로 를 그대로 계산할 수 있기 때문입니다. VAE는 잠재 변수를 적분해야 해서 하한만 계산합니다.
- 결합 층의 야코비안 행렬식이 싼 이유는?
- 답: 앞 덩어리는 그대로 통과하고 뒤 덩어리는 원소별로만 변하므로 야코비안이 삼각 행렬이 되고, 행렬식이 대각 원소()의 곱, 로그로는 의 합이 되기 때문입니다.
- 플로우 매칭 학습이 연속 정규화 흐름의 예전 학습보다 싼 이유는?
- 답: 학습 중에 ODE를 풀지 않고, 직선 위 한 점에서 정답 속도를 맞히는 회귀만 하기 때문입니다. ODE 적분은 생성할 때만 합니다.
용어 정리
| 용어 | 쉬운 뜻 |
|---|---|
| 정규화 흐름 | 역함수가 있는 변환을 쌓아 잡음을 데이터로 바꾸고 확률을 정확히 계산하는 모델 |
| 변수 변환 공식 | 변수를 바꿀 때 밀도에 부피 변화율을 곱하는 규칙 |
| 야코비안 행렬식 | 변환이 국소 부피를 몇 배로 바꾸는지 나타내는 값 |
| 결합 층 | 입력 절반은 그대로 두고 나머지를 그 절반의 함수로 바꾸는 층 |
| 자기회귀 흐름 | 각 차원을 앞 차원들의 함수로 변환하는 흐름(MAF · IAF) |
| 속도장 | 시각과 위치마다 "어느 방향으로 얼마나 빨리 움직일지"를 주는 함수 |
| 상미분방정식(ODE) | 변화율이 주어졌을 때 값의 궤적을 정하는 식 |
| 오일러 방법 | 현재 속도로 작은 걸음씩 나아가는 가장 단순한 ODE 풀이 |
| 플로우 매칭 | 잡음-데이터 경로 위의 정답 속도를 회귀로 배우는 학습법 |
| 정류 흐름 · 리플로우 | 직선 보간으로 속도를 배우고, 학습한 흐름으로 짝을 다시 지어 길을 곧게 펴는 방법 |
더 깊이 보려면
- CS236 Normalizing Flow Models 노트: https://deepgenerativemodels.github.io/notes/flow/
- π0: 범용 로봇 제어를 위한 흐름 기반 VLA 모델 — 플로우 매칭으로 행동을 생성하는 실제 모델
- Real NVP https://arxiv.org/abs/1605.08803 · Flow Matching https://arxiv.org/abs/2210.02747 · Rectified Flow https://arxiv.org/abs/2209.03003
다음에 볼 것
라이선스
본문은 KAITABASE 자체 해설입니다. 참고 자료 CS236 노트는 별도 라이선스 표기가 없어 구성만 참고했고, 각 논문은 요약 · 인용만 했습니다. 1차원 · 2차원 숫자 예는 이 수업을 위해 만든 해설용 예이며, 논문 수치는 원문에 있는 값만 옮겼습니다.
출처
- CS236 노트 Normalizing Flow Models: https://deepgenerativemodels.github.io/notes/flow/
- Dinh · Sohl-Dickstein · Bengio, Density estimation using Real NVP(2016): https://arxiv.org/abs/1605.08803
- Lipman · Chen · Ben-Hamu · Nickel · Le, Flow Matching for Generative Modeling(2022): https://arxiv.org/abs/2210.02747
- Liu · Gong · Liu, Flow Straight and Fast: Rectified Flow(2022): https://arxiv.org/abs/2209.03003
- Esser 외, Scaling Rectified Flow Transformers for High-Resolution Image Synthesis(2024): https://arxiv.org/abs/2403.03206
AI 원리부터 이해하기 · 생성 모델 모듈
생성 모델 모듈 학습
이 글은 생성 모델 모듈의 학습 자료입니다. 전체 10개 자료 중 9번째입니다.
출처·원문
원문 보기요약만