フローベース生成モデル
関数の合成によってフローを構築する代わりに、別のアプローチとして、フローを連続時間ダイナミクスとして定式化することができる。 z 0 {\displaystyle z_{0}} を分布 p ( z 0 ) {\displaystyle p(z_{0})} を持つ潜在変数であるとする。以下のフロー関数を使用して、この潜在変数をデータ空間に写す。
x = F ( z 0 ) = z T = z 0 + ∫ 0 t f ( z t , t ) d t {\displaystyle x=F(z_{0})=z_{T}=z_{0}+\int _{0}^{t}f(z_{t},t)dt}
ここで f {\displaystyle f} は任意の関数であり、ニューラルネットワークなどでモデル化できるとする。
その場合、逆関数は次のようになる。
z 0 = F − 1 ( x ) = z T + ∫ t 0 − f ( z t , t ) d t {\displaystyle z_{0}=F^{-1}(x)=z_{T}+\int _{t}^{0}-f(z_{t},t)dt}
このとき x {\displaystyle x} の対数尤度は以下で与えられる:
log  ( p ( x ) ) = log  ( p ( z 0 ) ) − ∫ 0 t Tr [ ∂ f ∂ z t d t ] {\displaystyle \log(p(x))=\log(p(z_{0}))-\int _{0}^{t}{\text{Tr}}\left[{\frac {\partial f}{\partial z_{t}}}dt\right]}
実用上では Neural ODE などの数値積分手法が必要になる場合がある。