Skip to main content

Flow-based Generative Models

Flow-based Generative Models は、simple な base distribution から data distribution へ、invertible transformation を連続して適用することで generative model を構成する方法です。

Generative model の中での位置づけ

Generative model には、大きく分けていくつかの設計があります。Lilian Weng の記事では、GAN、VAE、Flow-based model の違いが整理されています。

Generative models overview

画像出典: Lilian Weng, “Flow-based Deep Generative Models”。GAN、VAE、Flow-based model の違いが比較されています。

Flow-based model の特徴

Flow-based model の特徴は、次の三つです。

  • Base distribution pZ(z)p_Z(z) は、standard Gaussian などの扱いやすい distribution にします。
  • Data xx と latent variable zz の間に invertible transformation を定義します。
  • Change of Variables によって、exact likelihood を計算できます。

つまり、Flow-based model は、sample generation と density estimation の両方を明示的に扱える model です。

基本式

Invertible function ff によって、data xx と latent variable zz を対応させます。

z=f(x),x=f1(z)z = f(x), \qquad x = f^{-1}(z)

Change of variables theorem によって、data density は次のように計算されます。

pX(x)=pZ(f(x))detf(x)xp_X(x) = p_Z(f(x)) \left| \det \frac{\partial f(x)}{\partial x} \right|

この式のため、Flow-based model では Jacobian determinant を効率よく計算できる architecture が重要になります。

数式で見る flow-based model の likelihood

Flow-based model は、単純な base distribution pZ(z)p_Z(z) と可逆変換 x=fθ(z)x=f_\theta(z) によって data distribution を表します。Change of variables により、data likelihood は次のように計算できます。

logpX(x)=logpZ(fθ1(x))+logdetfθ1x\log p_X(x)=\log p_Z(f_\theta^{-1}(x))+ \log\left|\det\frac{\partial f_\theta^{-1}}{\partial x}\right|

この式の気持ちは、「複雑な data xx を可逆変換で単純な Gaussian zz に戻し、その密度と体積変化を足し合わせて likelihood を計算する」というものです。

Flow の設計では、表現力の高い変換を作りたい一方で、Jacobian determinant を効率的に計算する必要があります。Coupling layer、autoregressive flow、invertible convolution は、この trade-off を解くための代表的な構造です。

関連ページ