Flow matching은 현재 기존 SoTA로 여겨지던 Diffusion model보다
Faster Convergence & Better quality 를 보여주는 generative method이다.
처음부터 쉽게 설명하려고 하긴했지만 말이 길어져서 다시 맨 마지막에 간단하게 요약한 버전을 따로 두었습니다.
❗이 링크(https://spicy-pufferfish-699.notion.site/Flow-matching-1f5cf95761f4804d8ceac751330e6a9d?source=copy_link)에서 보는게 더 편할 수 있습니다. 수식도 많이 깨지네요 여기서는
Generative model은 우리가 원하는 데이터가 생성되도록 하는 것이다. 지금 가진 데이터셋이 있고, 이 데이터셋을 만들어내는 분포를 얻는 것(모델링)이 목표이다. 분포를 직접 모델링하면 해당 분포에서 바로 샘플링을 통해서 원하는 데이터를 얻을 수 있다.
하지만 여러가지 이유로 이 분포 자체를 모델링하는 것은 불가능하다. 그래서 generative method들에서는 아주 간단한 source 분포(ex. 표준 정규 분포)를 가정하고, 이 분포를 target 분포로 변화시키는 방법을 알아내려고 한다.
사진 출처 https://www.youtube.com/watch?v=NEqHBKiMA0k&t=1162s
일단 용어 정리
unknown target data distribution $q_1(x)$,
하지만 우리는 해당 분포에서 나온 데이터포인트들 $x_1 \sim q_1(x)$ 을 알고 있다.
probability density path $p : [0,1]$
$p_t(x)$ 는 time-dependent probability density function.
t가 0, 1일때 각각 $p_0 = N(0, I), p_1(x) = q_1(x)$
$v_t$ : vector field
$\psi_t$ : flow
$\psi_t(x)$의 의미 : 데이터 포인트 x가 vector field를 따라 시간 t만큼 이동하였을 때 x의 위치
즉, 항상 $\psi_0(x) = x$ (움직이지 않았기 때문에)
간단 설명(이전 CNF의 개념부터 출발)