Flow matching에 대해 알아볼것이다. Flow matching이라는 단어를 보면 드는 생각은? flow matching이라고 하는거 보니 flow를 매칭한다는것 같고 그러면 flow가 뭔지 알아야 할것 같다. flow는 normalizing flow, continuous normalizing flow와 관련있다. 이번 글에서는 normalizing flow에 대해 먼저 알아보자. 그리고 continuous normalizing flow에 대해 알아보자. 이렇게 알아가다 보면 flow matching이 뭘하는 것인지 알고 싶다.
기호정리
$p_{data}$는 data distribution의 probabiity density function (pdf)라고 하자. $p_{simple}$은 아주 간단한 분포의 pdf라고 하자. 오케이? $p_{simple}$은 가우시안 분포로 잡곤 한다.
normaizing flow
normaizing flow에 대해 알아보자. $x_0 \sim p_{simplle}$이라고 하자. 즉 $x_0$는 $p_{simple}$분포를 따른다고 하자. 이것을 어떤 함수에 넣어보자. $x_1 :=f(x_0)$이라 하자. 그러면 $x_1$의 분포는 바뀔것이다. normallizing flow의 목적은 $x_1$이 우리가 알고자 하는 data distribution의 pdf를 따르길 바라는 것이고 $x_1$이 데이터 디스트리뷰션을 따르도록 하는 $f$를 normalizing flow라고 부른다.
continuous normaizing flow
continuous normaizing flow에 대해 알아보자. 연속적인 normaizing fow를 알아보자. 아래와 같은 미분 방정식을 먼저 생각해보자.
$$ \frac{d\psi_t(x_0)}{dt} = v_t(\psi_t(x_0)), \psi_0(x_0)=x_0 , 0\leq t \leq 1$$
여기서 $\psi_t(x_0 ) = \int_0^t v_\tau(\psi_\tau(x_0))d\tau$는 $x_0$에 대한 mapping이라 보면 되겠다. 정의를 하자면 $\psi_t$를 flow라고 한다. 그리고 $v_t$를 vector field라고 부른다. 만약에 $x_0\sim p_{simple}$이라면 $x_t$도 어떠한 분포를 따르겠죠. $p_t$를 $\psi_t(x_0)$의 분포라 합시다. 그러면 continuous normalizing flow의 목적은 $\psi_1(x_0)$가 $p_{data}$를 따르도록 하는것ㅇ ㅣ목적이다. 즉 $p_1 = p_{data}$가 되도록 하는 flow $\psi_t$혹은 vector field $v_t$를 찾고자 하는것ㅇ ㅣ목표다.
$\psi_t$의 미분은 벡터필드 $v_t$이고 $v_t$으 ㅣ적분은 $\psi_t$이므로 $\psi_t$혹은 $v_t$를 찾으면 된다.
flow matching의 목표
이제 flow matching의 목표에 대해 알아보자. 위에서 미분방정식을 이용해서 설명한 것을 다시 써보자.
$$ \frac{d\psi_t(x_0)}{dt} = v_t(\psi_t(x_0)), \psi_0(x_0)=x_0 , 0\leq t \leq 1,x_0 \sim p_{simple}(x_0)$$
$p_t$를 $\psi_t(x_0)$의 분포라고 할 때 $p_1 = p_{data}$가 되게끔 하는 flow $\psi_t$를 근사하는 것이 flow matching의 목표이다.
-