Normalisierter Fluss
# Normalisierter Fluss

Ein flussbasiertes generatives Modell ist ein generatives Modell, welches die Wahrscheinlichkeitsdichte der zugrundeliegenden Trainingsdaten schätzt, indem der normalisierte Fluss (normalizing flow) berechnet wird. Der normalizing flow wird aus den Rechenregeln zum Wechseln der Variablen bei Integration (siehe Transformationssatz) hergeleitet, wobei eine einfache Verteilung in die komplizierte Zielverteilung transformiert wird.

## Hintergrund

Normalisierten Flüssen liegt die folgende Tatsache zugrunde: Betrachten wir die bijektive Abbildung $g$, sodass $Y=g(X)$, dann gilt laut Transformationssatz

    $p_{X}(x)=p_{Y}(g(x))\left|{\frac {\partial g(x)}{\partial x}}\right|\Leftrightarrow p_{Y}(y)=p_{X}(g^{-1}(y))\left|{\frac {\partial g(x)}{\partial x}}\right|^{-1},$

wobei $\left|{\frac {\partial g(x)}{\partial x}}\right|$ der Betrag der Funktionaldeterminante ist und $g$ durch neuronale Netze parametrisiert wird.

## Methode

### Log Likelihood

Betrachte Bijektionen $f_{i}$, sodass $z_{1}=f_{1}(z_{0})$, sodass $z_{0}=f_{1}^{-1}(z_{1})$.

Aufgrund des Transformationssatzes gilt:

    $p_{1}(z_{1})=p_{0}(z_{0})\left|\det {\frac {df_{1}^{-1}(z_{1})}{dz_{1}}}\right|,$ bzw.
    $\log(p_{1}(z_{1}))=\log(p_{0}(z_{0}))+\log \left(\left|\det {\frac {df_{1}^{-1}(z_{1})}{dz_{1}}}\right|\right)=\log(p_{0}(z_{0}))-\log \left(\left|\det {\frac {df_{1}(z_{1})}{dz_{1}}}\right|\right),$

daher gilt

    $\log(p_{n}(z_{n}))=\log(p_{n-1}(z_{n-1}))-\log \left(\left|\det {\frac {df_{n}(z_{n})}{dz_{n}}}\right|\right),$

und wiederholtes Einsetzen der Regel liefert:

    $\log p_{K}(z_{K})=\log p_{0}(z_{0})-\sum _{i=1}^{K}\log \left|\det {\frac {df_{i}(z_{i-1})}{dz_{i-1}}}\right|$

### Training

Ziel des Trainings ist es die Kullback-Leibler-Divergenz zwischen der geschätzten Wahrscheinlichkeitsdichte $p_{\theta }:=p_{K}$ und der wahren, die Stichproben generierende, Wahrscheinlichkeitsdichte $p^{*}$ zu minimieren:

    ${\hat {\theta }}={\underset {\theta }{\operatorname {arg\,min} }}\ D_{KL}[p^{*}(x)||p_{\theta }(x)]$.

Durch Minimierung eines Importance-Sampling-Schätzers der Kullback-Leibler-Divergenz (und Vernachlässigung konstanter Terme) können die optimalen Maximum-Likelihood Parameter ${\hat {\theta }}$ geschätzt werden:

    ${\hat {\theta }}=\arg \min _{\theta }-{\hat {\mathbb {E} }}_{p^{*}(x)}[\log(p_{\theta }(x))]=\arg \min _{\theta }-{\frac {1}{N}}\sum _{i=0}^{N}\log(p_{\theta }(x_{i}))$

## Varianten

### Planarer Fluss

Das früheste Beispiel einer Abbildung $f$ ist der planare Fluss. Bei gegebener Aktivierungsfunktion $h$, und Parametern $\theta =(u,w,b)$ mit entsprechender Dimension, ist

$x=f_{\theta }(z)=z+uh(\langle w,z\rangle +b)$

und die inverse $f_{\theta }^{-1}$ (ohne allgemeingültige geschlossene Form).

Der Jacobian ist $|\det(I+h'(\langle w,z\rangle +b)uw^{T})|=|1+h'(\langle w,z\rangle +b)\langle u,w\rangle |$.

Damit der Fluss invertierbar ist muss die Determinante überall ungleich null sein, was z. B. mit $h=\tanh$ und $\langle u,w\rangle >-1$ der Fall ist.

