검색
← 모듈 로드맵

정규화 흐름과 플로우 매칭: 변수 변환에서 직선 경로까지

강의 · 준전문가 · KAITABASE 정리

원제 · Normalizing Flows and Flow Matching (Stanford CS236 플로우 노트 · Real NVP · Flow Matching · Rectified Flow 참고)

변수 변환 · 결합 층 · 연속 흐름에서 플로우 매칭 · 정류 흐름 · 리플로우까지 손계산으로

먼저 알아야 할 것

생성 모델 총론행렬식과 야코비안최대우도 추정확산 모델 샘플링

다루는 내용

정규화 흐름이 변수 변환 공식으로 정확한 로그 가능도를 계산하는 원리를 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차원 숫자로 확인합니다.
  • 결합 층이 왜 야코비안을 삼각 행렬로 만들어 행렬식을 O(n)O(n) 에 계산하게 하는지 압니다.
  • 플로우 매칭의 학습 목표가 "잡음과 데이터를 잇는 직선의 속도 맞히기"라는 단순한 회귀임을 손계산합니다.
  • 정류 흐름 · 리플로우가 왜 한두 걸음 생성을 가능하게 하는지 감을 잡습니다.
  • 확산 · 플로우 매칭 · π0 · SD3가 어떻게 이어지는지 지도를 그립니다.

1. 변수 변환 공식: 늘이면 밀도는 묽어진다

직관(해설용 비유). 고무판 위에 잉크 한 방울(확률 질량 1)이 고르게 퍼져 있습니다. 고무판을 두 배로 늘이면 잉크 총량은 그대로지만 단위 면적당 진하기(밀도)는 절반이 됩니다. 확률 밀도도 같습니다.

단계.

  1. 단순한 분포 z∼pZz\sim p_Z (보통 표준 정규분포)를 둡니다.
  2. 역함수가 있는 변환 x=g(z)x=g(z) 로 데이터를 만듭니다. 거꾸로 z=f(x)=g−1(x)z=f(x)=g^{-1}(x).
  3. xx 의 밀도는 "대응하는 zz 의 밀도 × 부피 변화율" 입니다.

Real NVP 논문 표기(데이터 → 잠재 방향 ff)로 쓰면 다음과 같습니다.

pX(x)=pZ(f(x)) ∣det⁡∂f(x)∂x⊤∣,log⁡pX(x)=log⁡pZ(f(x))+log⁡∣det⁡∂f(x)∂x⊤∣p_X(x)=p_Z\big(f(x)\big)\,\left|\det\frac{\partial f(x)}{\partial x^{\top}}\right|,\qquad \log p_X(x)=\log p_Z\big(f(x)\big)+\log\left|\det\frac{\partial f(x)}{\partial x^{\top}}\right|
기호뜻
ff데이터 xx 를 잠재 zz 로 보내는 역변환 가능한 함수
∂f/∂x⊤\partial f/\partial x^\top야코비안 행렬: 입력 각 방향의 작은 변화가 출력을 얼마나 바꾸나
∣det⁡⋅∣\lvert\det\cdot\rvert야코비안 행렬식의 절댓값 = 국소 부피 변화율

숫자로 해 보기(해설용). z∼N(0,1)z\sim\mathcal N(0,1), x=2z+1x=2z+1 이라 합시다. 역변환 f(x)=(x−1)/2f(x)=(x-1)/2, 기울기 f′(x)=1/2f'(x)=1/2.

  • x=1x=1: z=0z=0, pZ(0)≈0.3989p_Z(0)\approx0.3989 → pX(1)=0.3989×12≈0.1995p_X(1)=0.3989\times\tfrac12\approx0.1995, log⁡pX(1)≈−1.612\log p_X(1)\approx-1.612
  • x=3x=3: z=1z=1, pZ(1)≈0.2420p_Z(1)\approx0.2420 → pX(3)≈0.1210p_X(3)\approx0.1210

결과는 N(1, 22)\mathcal N(1,\,2^2) 의 밀도와 정확히 같습니다. 2배로 늘인 만큼 밀도가 1/21/2 이 되었습니다.

왜 이렇게 하나. 이 공식 덕분에 플로우는 VAE처럼 하한이 아니라 정확한 로그 가능도 를 계산하고, 그대로 최대우도로 학습합니다. 조건은 두 가지입니다. 변환이 역함수를 가져야 하고(그래서 xx 와 zz 의 차원이 같아야 함), 행렬식을 싸게 계산할 수 있어야 합니다.

2. 행렬식이 비싸다: 삼각 야코비안으로 피하기

nn 차원 일반 행렬의 행렬식은 대략 O(n3)O(n^3) 계산이 듭니다. 64×64×3 이미지면 n=12,288n=12{,}288 이라 학습 걸음마다 계산하기는 너무 비쌉니다. CS236 노트가 강조하듯 야코비안이 삼각 행렬이면 행렬식은 대각 원소의 곱 이라 O(n)O(n) 입니다.

숫자로 해 보기(해설용). (2013)\begin{pmatrix}2&0\\1&3\end{pmatrix} 은 아래 삼각 행렬이라 행렬식 =2×3=6=2\times3=6 입니다(일반 공식 2⋅3−0⋅12\cdot3-0\cdot1 과 같음). 이 변환은 국소 넓이를 6배로 키웁니다.

3. 결합 층: 반은 그대로, 반은 그 반에 따라 바꾸기

NICE(덧셈 결합). 입력을 두 덩어리 xA,xBx_A,x_B 로 나눠 xAx_A 는 그대로 두고 xBx_B 에 "xAx_A 의 신경망 함수"만큼 더합니다. 야코비안 행렬식이 1이라 부피를 보존합니다.

Real NVP(아핀 결합). Dinh · Sohl-Dickstein · Bengio(2016)는 크기 조절을 더했습니다.

y1:d=x1:d,yd+1:D=xd+1:D⊙exp⁡ ⁣(s(x1:d))+t(x1:d)y_{1:d}=x_{1:d},\qquad y_{d+1:D}=x_{d+1:D}\odot\exp\!\big(s(x_{1:d})\big)+t(x_{1:d})
기호뜻
x1:dx_{1:d}그대로 통과하는 앞쪽 dd 개
s(⋅), t(⋅)s(\cdot),\,t(\cdot)크기 · 이동을 내는 신경망(역함수가 없어도 됨)
⊙\odot원소별 곱

역변환은 xd+1:D=(yd+1:D−t(y1:d))⊙exp⁡(−s(y1:d))x_{d+1:D}=(y_{d+1:D}-t(y_{1:d}))\odot\exp(-s(y_{1:d})) 로 바로 구해지고, 야코비안이 삼각이라 로그 행렬식 = ∑js(x1:d)j\sum_j s(x_{1:d})_j 입니다. s,ts,t 의 야코비안은 계산할 필요조차 없습니다.

숫자로 해 보기(해설용). 2차원 x=(0.5, 2.0)x=(0.5,\ 2.0), s(x1)=0.4x1=0.2s(x_1)=0.4x_1=0.2, t(x1)=x1=0.5t(x_1)=x_1=0.5 라 합시다.

  • 순변환: y1=0.5y_1=0.5, y2=2.0×e0.2+0.5≈2.443+0.5=2.943y_2=2.0\times e^{0.2}+0.5\approx2.443+0.5=2.943
  • 로그 행렬식: 0.20.2
  • 역변환: x2=(2.943−0.5)×e−0.2=2.0x_2=(2.943-0.5)\times e^{-0.2}=2.0 — 정확히 되돌아옵니다.

왜 층을 번갈아 쌓나. 한 층은 앞 덩어리를 바꾸지 못합니다. 그래서 다음 층에서는 역할을 바꿔(마스크를 뒤집어) 모든 차원이 변형되게 합니다. Real NVP는 이미지에서 체커보드 마스크와 채널 마스크를 번갈아 씁니다.

자기회귀 흐름의 맞바꿈. 각 차원을 앞 차원들의 함수로 변환하는 자기회귀 흐름도 야코비안이 삼각입니다. CS236 노트의 정리로는 MAF는 가능도 계산이 빠르지만 생성이 차원 수만큼 순차적이라 느리고, IAF는 반대로 생성이 빠르고 새 데이터의 가능도 계산이 느립니다.

4. 연속 흐름: 한 번에 구부리지 말고 조금씩 흘려보내기

층을 무한히 잘게 쪼개면, 변환은 시간 t∈[0,1]t\in[0,1] 에 따라 점을 움직이는 속도장(vector field) vt(x)v_t(x) 로 표현됩니다.

dxtdt=vt(xt),x0∼p0 (잡음),x1∼p1≈pdata\frac{dx_t}{dt}=v_t(x_t),\qquad x_0\sim p_0\ (\text{잡음}),\quad x_1\sim p_1\approx p_{\text{data}}

생성은 이 상미분방정식(ODE)을 오일러 방법 등으로 적분하는 것입니다: xt+Δt=xt+Δt vt(xt)x_{t+\Delta t}=x_t+\Delta t\,v_t(x_t). 역함수 조건이나 차원 분할 같은 구조 제약이 사라지는 대신, 예전 방식(연속 정규화 흐름)은 학습 중에도 ODE를 풀어야 해서 비쌌습니다. 플로우 매칭은 이 비용을 없앴습니다.

5. 플로우 매칭: 직선 경로의 속도를 회귀로 배우기

직관(해설용 비유). 잡음 점 하나와 데이터 점 하나를 짝지어 직선으로 잇고, "그 직선 위 어느 지점에서든 이 방향 · 이 속력으로 가라"는 정답을 신경망에 가르칩니다. 수많은 짝의 정답을 평균 내면 전체 잡음 분포를 데이터 분포로 옮기는 속도장이 됩니다.

Lipman 외(2022)는 시간 규약을 t=0t=0 잡음, t=1t=1 데이터로 두고, 계산할 수 없는 전체 속도장 대신 데이터 점 하나에 조건을 건 속도장 을 맞히는 조건부 플로우 매칭(CFM)이 같은 기울기를 준다는 것을 보였습니다. 최적 수송(OT) 경로를 고르면 손실은 다음과 같습니다.

LCFM(θ)=Et, x1∼q, x0∼p0∥ vθ(ψt(x0),t)−(x1−(1−σmin⁡)x0)∥2,ψt(x0)=(1−(1−σmin⁡)t) x0+t x1\mathcal L_{\text{CFM}}(\theta)=\mathbb E_{t,\,x_1\sim q,\,x_0\sim p_0}\Big\|\,v_\theta\big(\psi_t(x_0),t\big)-\big(x_1-(1-\sigma_{\min})x_0\big)\Big\|^2,\quad \psi_t(x_0)=(1-(1-\sigma_{\min})t)\,x_0+t\,x_1
기호뜻
x0x_0표준 정규분포에서 뽑은 잡음
x1x_1데이터 표본
ψt(x0)\psi_t(x_0)시각 tt 에 직선 위에 있는 점
x1−(1−σmin⁡)x0x_1-(1-\sigma_{\min})x_0그 점에서의 정답 속도(시간에 따라 방향이 변하지 않음)
σmin⁡\sigma_{\min}끝점에 남기는 아주 작은 폭. 0으로 두면 순수 직선 보간
vθv_\theta학습하는 속도 신경망

Liu · Gong · Liu(2022)의 정류 흐름(rectified flow) 은 σmin⁡=0\sigma_{\min}=0 인 경우와 같은 목표 — Xt=tX1+(1−t)X0X_t=tX_1+(1-t)X_0 에서 ∥(X1−X0)−v(Xt,t)∥2\|(X_1-X_0)-v(X_t,t)\|^2 최소화 — 를 독립적으로 제안했습니다. 최소최대 게임도, 가능도 계산도 없는 평범한 최소제곱 문제입니다.

숫자로 해 보기(해설용, σmin⁡=0\sigma_{\min}=0). 잡음 x0=0.5x_0=0.5, 데이터 x1=2.0x_1=2.0, t=0.25t=0.25 를 뽑았습니다.

  1. 직선 위 점: xt=0.75×0.5+0.25×2.0=0.875x_t=0.75\times0.5+0.25\times2.0=0.875
  2. 정답 속도: x1−x0=1.5x_1-x_0=1.5
  3. 신경망이 1.21.2 를 냈다면 손실 (1.2−1.5)2=0.09(1.2-1.5)^2=0.09

생성할 때 신경망이 완벽히 1.51.5 를 낸다면, 0.50.5 에서 출발해 Δt=0.25\Delta t=0.25 로 4걸음 가면 0.5+4×0.25×1.5=2.00.5+4\times0.25\times1.5=2.0 — 정확히 데이터에 닿습니다. 길이 곧으면 걸음 수가 적어도 됩니다. (σmin⁡=0.01\sigma_{\min}=0.01 이면 점은 0.8760.876, 정답 속도는 1.5051.505 로 거의 같습니다.)

왜 실제로는 길이 휘나. 짝은 무작위로 지어지므로 여러 직선이 서로 교차합니다. 교차점에서 신경망은 여러 정답의 평균 을 배울 수밖에 없어, 학습된 전체 흐름은 곡선이 됩니다. 그래서 1걸음 생성은 아직 어렵습니다.

리플로우(reflow). 정류 흐름 논문은 학습한 흐름으로 잡음 x0x_0 를 끝까지 흘려 얻은 x1x_1 과 다시 짝을 지어 같은 학습을 반복합니다. 이제 짝이 흐름을 따라 정해졌으므로 교차가 줄고 길이 곧아집니다. 논문은 한 번의 리플로우로 거의 곧은 경로를 얻어 1걸음 오일러로도 좋은 결과가 나온다고 보고했고(CIFAR-10 1걸음 FID 4.85), 리플로우를 너무 많이 하면 추정 오차가 쌓일 수 있다고 주의를 줍니다.

mermaid
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 는 로봇 행동 묶음을 같은 플로우 매칭으로 생성합니다. 시각 τ=0\tau=0 을 잡음, τ=1\tau=1 을 정답 행동으로 두고 10걸음 오일러 적분을 씁니다. 이 수업의 손계산과 같은 구조입니다.

연습 문제

  1. z∼N(0,1)z\sim\mathcal N(0,1), x=3zx=3z 일 때 pX(0)p_X(0) 은?
    • 풀이: f(x)=x/3f(x)=x/3, f′=1/3f'=1/3. pX(0)=pZ(0)/3≈0.3989/3≈0.133p_X(0)=p_Z(0)/3\approx0.3989/3\approx0.133 입니다.
  2. 아핀 결합 층에서 s(x1:d)=(0.1, −0.3)s(x_{1:d})=(0.1,\ -0.3) 이면 이 층의 로그 행렬식은?
    • 풀이: 0.1+(−0.3)=−0.20.1+(-0.3)=-0.2 입니다. 이 층은 국소 부피를 e−0.2≈0.82e^{-0.2}\approx0.82 배로 줄입니다.
  3. 플로우 매칭(σmin⁡=0\sigma_{\min}=0)에서 x0=−1x_0=-1, x1=3x_1=3, t=0.5t=0.5 일 때 직선 위 점과 정답 속도는?
    • 풀이: xt=0.5(−1)+0.5(3)=1x_t=0.5(-1)+0.5(3)=1, 정답 속도 3−(−1)=43-(-1)=4 입니다.
  4. 위 문제에서 신경망이 정답 속도를 늘 정확히 낸다면, x0=−1x_0=-1 에서 2걸음(Δt=0.5\Delta t=0.5) 오일러로 어디에 도착하나요?
    • 풀이: −1+0.5×4=1-1+0.5\times4=1, 다시 1+0.5×4=31+0.5\times4=3. 데이터 x1=3x_1=3 에 도착합니다.

스스로 점검

  1. 플로우가 VAE와 달리 정확한 로그 가능도를 계산할 수 있는 이유는?
    • 답: 역함수가 있는 변환만 써서 변수 변환 공식으로 log⁡pZ(f(x))+log⁡∣det⁡J∣\log p_Z(f(x))+\log|\det J| 를 그대로 계산할 수 있기 때문입니다. VAE는 잠재 변수를 적분해야 해서 하한만 계산합니다.
  2. 결합 층의 야코비안 행렬식이 싼 이유는?
    • 답: 앞 덩어리는 그대로 통과하고 뒤 덩어리는 원소별로만 변하므로 야코비안이 삼각 행렬이 되고, 행렬식이 대각 원소(ese^{s})의 곱, 로그로는 ss 의 합이 되기 때문입니다.
  3. 플로우 매칭 학습이 연속 정규화 흐름의 예전 학습보다 싼 이유는?
    • 답: 학습 중에 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

다음에 볼 것

  • 생성 모델 평가 — FID · 정밀도/재현율로 생성 모델을 비교하는 법
  • π0 — 플로우 매칭이 로봇 제어로 이어진 사례

라이선스

본문은 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번째입니다.

AI 기초 과정은 현재 진도 저장을 지원하지 않습니다.

출처·원문

원문 보기

요약만

본문 자체 작성 · 참고 자료 Stanford CS236 강의 노트(라이선스 표기 없음) · 각 논문