# 正規化フロー
## 定義
正規化フロー(normalizing flow)は、簡単な分布(典型的には $\mathcal{N}(0,I)$)に可逆変換を繰り返し適用していき、目的のデータ分布を得る深層生成モデルである。尤度が計算可能な分布に可逆変換を適用した後も尤度が計算可能であるという性質を利用し、[[最尤推定]]で学習する。[[GAN(敵対的生成ネットワーク)|GAN]]と同様に生成の最後にサンプリングが不要なため、シャープな生成結果が得られる。(Source: [[@2022__Gihyo__ディープラーニングを支える技術〈2〉 - Chapter 3 深層生成モデル]] §3.5)
## 確率密度関数の変数変換公式
可逆変換x=g(z)を確率密度p(z)に適用したとき、変換後の確率密度p(x)は、変換がその領域をどの程度引き伸ばす/潰すかに反比例して決まる。多次元の場合、zの領域はヤコビアン $\left|\det\left(\frac{dx}{dz}\right)\right|$ 倍に引き伸ばされるため、確率密度は
$p(x)=p(z)\left|\det\left(\frac{dz}{dx}\right)\right|,\qquad \log p(x)=\log p(z)+\log\left|\det\left(\frac{dz}{dx}\right)\right|$
という**確率密度の変数変換公式**に従う。生成器が $G_1,G_2,\dots$ と複数の変換から成る場合は、この公式を繰り返し適用することで最終的な尤度が計算できる。正規化フローの生成に使う変換は、(1) 可逆変換である、(2) 逆変換が容易に求まる、(3) ヤコビアンの行列式が容易に求められる、という3条件を満たす必要がある。(Source: [[@2022__Gihyo__ディープラーニングを支える技術〈2〉 - Chapter 3 深層生成モデル]] §3.5)
## Affine Coupling Layer
上記3条件を満たす代表的な変換が**Affine Coupling Layer**である。入力xを(たとえばチャンネル方向に)2つに分割し $x_a,x_b$ を得たとき、$x_b$ を入力とする任意のニューラルネットワークfでスケール $\log s$ とバイアスtを求め、
$(\log s, t)=f(x_b),\quad s=\exp(\log s),\quad y_a=x_a\odot s+t,\quad y_b=x_b$
とする。逆変換は $x_b=y_b$、$(\log s,t)=f(x_b)$、$x_a=(y_a-t)/s$ として閉形式で求まる。ヤコビアン $dy_a/dx_a=\text{diag}(s)$、$dy_b/dx_b=I$、$dy_b/dx_a=0$ は上三角行列となり、その行列式は対角成分の積(対数は $\sum_i \log s_i$)として容易に計算できる。またカーネルサイズが1×1の畳み込み演算も、計算コストはかかるものの行列式と逆変換を直接求められるため、この3条件を満たすことが知られている(Glow, Kingma & Dhariwal, NeurIPS 2018)。(Source: [[@2022__Gihyo__ディープラーニングを支える技術〈2〉 - Chapter 3 深層生成モデル]] §3.5)
## 長所と短所
正規化フローは高忠実な生成・高速な生成・最尤推定による安定した学習という3つの長所を兼ね備える。一方、生成時の変換に(可逆・逆変換容易・ヤコビアン容易という)制約があるため、複雑な生成分布をモデル化しようとすると層数が数十〜百近くと大きくなりパラメータ数も多くなりがちであり、また各層がゆっくりと部分的な変換しか捉えないため学習に時間がかかりがちという短所がある。(Source: [[@2022__Gihyo__ディープラーニングを支える技術〈2〉 - Chapter 3 深層生成モデル]] §3.5)
## 横断的知見
- **正規化フロー・GAN・[[自己回帰モデル]]は「最後にノイズを加えない/決定的に近い生成」という共通点を持つが、その根拠となる制約はそれぞれ異なる**: [[GAN(敵対的生成ネットワーク)]]は尤度評価を放棄することで決定的な関数のみの生成を実現するのに対し、正規化フローは尤度を保ったまま(可逆変換という制約のもとで)シャープな生成を実現する。[[自己回帰モデル]]は各次元を条件付き分布から逐次サンプリングするため必ずしも決定的ではないが、条件付き確率の積という厳密な分解によって同時分布全体の尤度を計算できる点で正規化フローと発想が近い。3手法を突き合わせると、深層生成モデルが「シャープな生成」と「尤度の計算可能性」を両立させるために、それぞれ異なる制約(決定性の放棄、可逆性、逐次分解)を選んでいることがわかる。(Source: [[@2022__Gihyo__ディープラーニングを支える技術〈2〉 - Chapter 3 深層生成モデル]] §3.3, §3.4, §3.5)
## 未解決の問い
- Affine Coupling Layer以外にヤコビアンが容易に求まる変換(1×1畳み込み以外)にはどのようなものがあるか。本章はGlowの1×1畳み込みに軽く触れるのみで、他の変換族(RealNVP以降の発展形など)は扱わない。
- 正規化フローの層数が数十〜百に達する場合の学習時間・メモリコストと、他の深層生成モデル(拡散モデルの多ステップ化)との定量的な比較は本章では扱われない。
- 表3.1では正規化フローの「抽象化表現が得られる」が△評価となっている。可逆変換であるためzの次元がxの次元と一致し、次元削減的な潜在表現を作れないことが理由と推測されるが、本章はこの評価根拠を明示していない。
## 関連
- source: [[@2022__Gihyo__ディープラーニングを支える技術〈2〉 - Chapter 3 深層生成モデル]]
- concept: [[VAE(変分オートエンコーダ)]] / [[GAN(敵対的生成ネットワーク)]](共に決定的な生成という点で対比) / [[自己回帰モデル]](同時確率分解という発想の近さ) / [[最尤推定]]
## 出典
- 岡野原大輔, 『ディープラーニングを支える技術〈2〉 ニューラルネットワーク最大の謎』, 技術評論社, 2022, 第3章, §3.5.