GANからWasserstein GANへ
generative adversarial network(GAN)からWasserstein generative adversarial network(WGAN)への道の整理をします。 こちらを参考にしました:
目次 まず、確率密度関数の類似度をはかる2つの指標を導入します。 2つの確率密度関数とを考えます。KL divergenceはpがqからどれだけ異なるか、をはかる指標です。 KL divergenceの性質 JS divergenceは2つの確率密度関数の類似度をはかるもう一つの指標です。また、範囲は]です。 JS divergenceはpとqに関して対称です。GANではこちらのJS divergenceによってとの類似度を測ります。 GANは、現実のデータ集合が与えられたとき、それらに似たデータを生成することを目指します。 GANは2つのモデルからできています。 これらの2つのモデルが互いを見抜く・騙すように訓練されて、十分学習が進めばGeneratorが現実のデータと見分けがつかないようなデータを生成できるようになる、というわけです。欲しいのは良いGeneratorです。 ここで、 とします。 まず、Discriminatorは現実のデータを正しく本物だと識別してほしいです。つまり、
$$ \mathbb{E} _ {x \sim p _ r(x)} \left[ \log D(x) \right] $$
を最大化したいです。一方で、Generatorが生成したデータ を正しく偽物だと識別して欲しいので、
$$ \mathbb{E} _ {z \sim p _ z(z)} \left[ \log \left( 1 - D(G(z) \right) \right] $$
を最大化して欲しいです。 次に、Generatorに関しては生成したデータをDiscriminatorが本物だと誤分類させたいので、
$$ \mathbb{E} _ {z \sim p _ z(z)} \left[ \log \left( 1 - D(G(z) \right) \right] $$
を最小化したいです。 これらを組み合わせると、以下のようなmin-max lossになります。 Discriminatorの学習は、密度比推定と深い関係があります。密度比とは、2つの確率密度関数(と)の比で、 $$ r(x) = \frac{p _ r(x)}{p _ g(x)} $$ です。 密度比を推定する方法 現実のデータ集合に仮にラベル+1を割り当て、Generatorが生成したデータに仮にラベル-1を割り当てることにします。
この時、ラベルがgivenという条件下のもとでデータの分布を表すことができて、 $$ p _ r(x) = p (x | y = +1) $$
$$ p _ g(x) = p (x | y = -1) $$ です。 密度比は、ベイズの定理から となります。とは任意の2値分類器で求めることができて、それはまさにDiscriminatorです。はデータ数の比で近似出来ます。
Discriminatorの損失にはBinary Cross Entropyを用いればよくて、それを変形すると(1)の目的関数になります。
つまり、結果としてDiscriminatorの学習はとの密度比を推定するように行われることになります。 似たようなことは以下の論文にも記述されています。 [1610.02920] Generative Adversarial Nets from a Density Ratio Estimation Perspective こちらはDiscriminatorが密度比推定を行なっていることに注目し、f-divergenceを最小化するGANを提案しています。 先ほどの目的関数を最大化するDiscriminatorの最適解をまず求めてみます。
は期待値の部分を書き直せば $$ L(G,D) = \int \left( p _ {r} (x) \log(D(x)) + p _ {g}(x) \log(1 - D(x)) \right) dx $$ とかけます。今我々の興味はを最大化するようななので、 $$ \hat{x}=D(x), A = p _ r(x), B = p _ {g}(x) $$とおきます。 すると、 $$ f(\hat{x}) = A\log \hat{x} + B \log (1- \hat{x}) $$
とかけて、について微分すれば $$ \frac{d f(\hat{x})}{d\hat{x}} = \frac{A-(A+B)\hat{x}} {\hat{x} (1- \hat{x})} $$
となります。これを0とおくと、最適なは $$ D^{\ast}(x) = \frac{A}{A+B} = \frac{ p _ r(x)} { p _ r(x)+p _ {g}(x)} $$ になります。 さらに、Generatorが最適に学習すれば、はに近しいものになり、のような状況では
になります。これは、完璧なGeneratorができれば、Discriminatorはもはや機能しなくなる、ということです。 DiscriminatorとGeneratorが最適な学習をすると、になることは上で確認しました。
この時、GAN のlossは、 $$ L(G^{\ast}, D^{\ast}) = \int \left( p _ {r} (x) \log(D^{\ast}(x)) + p _ {g}(x) \log(1 - D^{\ast}(x)) \right) dx \tag{2}\\
= \log \frac{1}{2} \int p _ {r} (x) dx + \log \frac{1}{2} \int p _ {g} (x) dx = -2 \log 2 $$ なお(2)はに対応します。 との間のJS divergenceは、 と変形できて、 と表せます。
この式から、Discriminatorが最適である時、GANの目的関数はとの間のJS divergenceを定量化します。なお、Generatorが最適である時、JS divergenceは0になって、
と一致します。 ナッシュ均衡を達成するのが困難 low dimensional supports 勾配消失 mode collapse 適切な評価指標が存在しない Wasserstein distanceとは、JS divergenceと同じように2つの確率密度関数の距離をはかる指標です。Wasserstein distanceはEarth Mover's distanceとも呼ばれ、短くEM distanceと呼ばれることもあります。 Wasserstein distanceは、ある確率密度関数を動かしてもう一つの確率密度関数に一致させるときの最小コストです。
以下では、確率密度を「土」として表現し、「土」の最適な輸送としてWasserstein distanceを考えます。 2つの確率密度関数とのWasserstein distanceは以下のように与えられます。 は下限で、wasserstein distanceを求めること自体が最適化問題になっています。 はのある地点からのある地点に動かす土の量です。正確には地点から、全土の量のうちどれだけを地点へ輸送するか、という量です。
土を動かし、をに一致させることから、直ちに が成り立ちます。(地点へ動かされた土の量をについて和をとると動かし終わった土の量と一致するはず) 逆に、 も成り立ちます。(地点から動かされた土の量をについて和を取るともともとにあった土の量と一致するはず) 土の量に動かす距離をかけることでコストを算出します。
全てのについてコストの平均をとると、 候補となる土の動かし方戦略のうち、総コストがもっとも小さいものをとればwasserstein distanceが求まります。 確率密度関数が低次元かつ2つの確率密度関数に重なりが場合でもWasserstein distanceはより滑らかな表現を提供してくれます。
例えば、以下のような2つの2次元の確率密度とを考えます。Pのx成分は0に固定し、y成分は[0,1]の一様分布に従います。一方でQのx成分はに固定しyは[0,1]の一様分布に従います。 の時 一方の時、PとQはで完全に重なっていて、 このように、KL divergenceは2つの確率密度に重なりがない場合に発散してしまいます。
JS divergenceはで突然ジャンプし、微分不可能になってしまいます。
Wasserstein distanceはの変化に対して滑らかで、勾配降下法で学習する場合に安定すると考えられます。 Wasserstein distanceはKantorovich-Rubinstein双対性を使って、 $$ W(p _ r, p _ g) = \frac{1}{K} \sup _ {||f|| _ {L} \leq K} \mathbb{E} _ {x \sim p _ {r}} [f(x)] - \mathbb{E} _ {x \sim p _ {g}} [f(x)] $$ と変換することができます。 Wasserstein distanceのには、という制約がついています。つまりはK-リプシッツ連続である必要があります。
関数は以下の条件を満たす時にK-リプシッツ連続です。 ある定数が存在して、全てのに対して、
$$ |f(x _ {1} - f(x _ {2})| \leq K |x _ {1} - x _ {2}| $$
これは直感的には、任意の区間で傾きがある値で抑えられるということを意味します。(はリプシッツ定数と呼ばれます) 任意の場所で微分可能な関数はリプシッツ連続です。なぜならにはboundが存在するからです。
しかし、リプシッツ連続だからと言って任意の場所で微分可能である訳ではありません。例えば、は原点で微分不可能です。 がパラメータをもつK-リプシッツ関数とします。Wasserstein GANでは、Discriminatorは良いを求めます。WGANの損失としては
(現実のデータの分布)と (Generatorが生むデータの分布)間のWasserstein distanceを採用します。つまり、学習が進むにつれてGeneratorは現実のデータの分布に近いデータの分布を出力できるようになります。 がで近似されています。 WGAN全体としては、こちらのLossを最小化することを目指します。 ここで重要なのが、のK-リプシッツ性を維持する方法です。簡単かつ強力な方法として、重みを更新した後、を[-0.01, 0.01]といった小さな範囲でクリップします。
それにより、パラメータ空間は小さくなり、の傾きはboundで抑えられます。WGANの著者らは、clipingよりも良いK-リプシッツ性を維持する方法があるはずだ、とも述べています。 Wasserstein lossのGeneratorのパラメータ に関する微分は、 $$ \frac{\partial}{\partial \theta} L(p _ {r}, p _ {g}) = \frac{\partial}{\partial \theta} - \mathbb{E} _ {z \sim p _ {z}} [f _ {w}(g _ {\theta}(z))] $$ であり、こちらはサンプル近似によって $$ \frac{\partial}{\partial \theta} - \mathbb{E} _ {z \sim p _ {z}} [f _ {w}(g _ {\theta}(z))] = \frac{1}{M} \sum_{m=1}^{M} \frac{\partial}{\partial \theta} - f _ {w}(g _ {\theta}(z_m)) $$ と近似できます。はバッチサイズです。 よって、WGAN全体の学習は Discriminatorのパラメータに関して、WGANのLossを微分し、Wasserstein distanceの良い近似を求めるようにを更新する Discriminatorのパラメータのリプシッツ連続性を保つため、クリッピングを行う Generatorのパラメータ に関して、Lossを微分し、Wasserstein distanceを小さくするように を更新する 以上を繰り返します。
Kullback–Leibler Divergence (KL divergence) と Jensen–Shannon Divergence (JS divergence)
Kullback–Leibler Divergence
Jensen–Shannon Divergence
GAN
GANの目的関数
密度比推定との関連
Discriminatorの最適解
What is global optimal?
GANの目的関数が意味すること
GANの問題点
Wasserstein GAN (WGAN)
Wasserstein distance
Wasserstein GAN がJS divergenceとKL divergenceよりも良い理由
GANの損失としてのWasserstein distance
Lipschitz 連続性
Wasserstein loss
Wasserstein GANの学習