Skip to main content

Change of Variables

Change of Variables は、Flow-based Generative Models の中心にある theorem です。Invertible transformation によって variable を変換したとき、probability density がどのように変わるかを表します。

Jacobian matrix

Function f:RdRdf: \mathbb{R}^d \to \mathbb{R}^d があり、z=f(x)z = f(x) とします。このとき、Jacobian matrix は次のように定義されます。

Jf(x)=f(x)xJ_f(x) = \frac{\partial f(x)}{\partial x}

Jacobian determinant は、変換によって体積がどれだけ拡大または縮小されるかを表します。

Change of variables theorem

xxzz が invertible transformation z=f(x)z = f(x) で結ばれているとき、density は次のように変換されます。

pX(x)=pZ(z)detzxp_X(x) = p_Z(z) \left| \det \frac{\partial z}{\partial x} \right|

z=f(x)z = f(x) を代入すると、次のようになります。

pX(x)=pZ(f(x))detJf(x)p_X(x) = p_Z(f(x)) \left| \det J_f(x) \right|

Log likelihood では、次のように書けます。

logpX(x)=logpZ(f(x))+logdetJf(x)\log p_X(x) = \log p_Z(f(x)) + \log \left| \det J_f(x) \right|

なぜ architecture が重要なのか

一般の neural network では、Jacobian determinant の計算は高コストです。そのため、Flow-based model では、Jacobian が triangular になるような coupling layer や autoregressive structure を使い、determinant を効率よく計算できるように設計します。

関連ページ