Flow-GAN: Combining Maximum Likelihood and Adversarial Learning in Generative Modelsを読んだのでメモ
はじめに
Flow-GAN: Combining Maximum Likelihood and Adversarial Learning in Generative Modelsを読んだのでメモ.簡単に言えばGANのgeneratorをflow-basedなモデルに置き換えて密度推定もできるようにしたというもの.
notation
データの分布をとし,パラメータを持つモデルによって表現される分布をとする.とのダイバージェンスを最小化することで最適なを見つけることが目標.
以下,この論文の基礎となる最尤推定とadversarial trainingについて.一般的な内容なのでさっくりと
Maximum likelihood estimation
データ分布とモデル分布のKLダイバージェンスを最小化することを考える.この場合の目的関数は以下のようになる.
がパラメータと独立しているため,上記の最適化問題は次のように書き換えられる.
この目的関数を使って学習することは,モデルの密度関数を陽に計算できるということを要求する.
Adversarial learning
KLダイバージェンスを含むダイバージェンスの一般化は次のように表現される.
はモデルのパラメータの集合.このの選び方でJensen-ShannonダイバージェンスのようなダイバージェンスやWasserstein距離のような指標が導かれる.
GANでは次のような目的関数が提案されている.
この目的関数ではモデル分布からのサンプリングが要求される.そのため,サンプリングしやすいモデルを使って以下のminmax問題を解くことで最適なモデルのパラメータを見つける.
結果として得られるモデルは容易にサンプリングを行えるがモデルの密度を陽に計算することはできない.
Flow Generative Adversarial Networks
ここからが本題.結局adversarial learningは綺麗なサンプルを生み出せるけど尤度の推定ができないところが問題で,最尤推定を基礎とする手法はサンプリングがしにくかったり表現力が乏しかったりする.そこでadversarial learningの恩恵を受けつつ尤度推定可能なFlow-GANを提案する.
Flow-GANは言ってしまえばGANのgeneratorをnormalizing flow modelにしたもの.Normalizing flowに関しての詳細は別のメモを参照.Normalizing flowのモデル分布は次のように計算できる.
はパラメータを持つ逆変換可能な関数で,事前分布に関数のヤコビアンの行列式をかけることで分布を陽に計算することができる.これは確率分布の変数変換の公式から導かれる関係.のヤコビアンの計算が用意で事前分布が扱いやすいものだったらデータ点の尤度を評価することができる.または逆変換が可能なためサンプリングも可能.
目的関数
重要なのはFlow-GANをどのような目的関数で学習させるか.この論文では単純に最尤推定とadversarial trainingを組み合わせた関数を考えたそう.つまり次の目的関数を最適化する.
ここではadversarial lossはWGANで提案されていた式を使ったとのこと.すなわちdiscriminatorは1-Lipschitzを満たす.
まとめ
実験ではNICEとRealNVPをgeneratorとしていたためいまいちパッとする結果にはなってないが今だったらglowがあるのでどんなもんかなあというところ.