GANからWasserstein GANへ
generative adversarial network(GAN)からWasserstein generative adversarial network(WGAN)への道の整理をします。 こちらを参考にしました:
目次 まず、確率密度関数の類似度をはかる2つの指標を導入します。 2つの確率密度関数 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が生成したデータ 次に、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) $$ です。 密度比は、ベイズの定理から となります。 似たようなことは以下の論文にも記述されています。 [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が最適に学習すれば、 DiscriminatorとGeneratorが最適な学習をすると $$ 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)は と変形できて、 と表せます。
この式から、Discriminatorが最適である時、GANの目的関数 ナッシュ均衡を達成するのが困難 low dimensional supports 勾配消失 mode collapse 適切な評価指標が存在しない Wasserstein distanceとは、JS divergenceと同じように2つの確率密度関数の距離をはかる指標です。Wasserstein distanceはEarth Mover's distanceとも呼ばれ、短くEM distanceと呼ばれることもあります。 Wasserstein distanceは、ある確率密度関数を動かしてもう一つの確率密度関数に一致させるときの最小コストです。
以下では、確率密度を「土」として表現し、「土」の最適な輸送としてWasserstein distanceを考えます。 2つの確率密度関数 が成り立ちます。(地点 逆に、 も成り立ちます。(地点 土の量に動かす距離 候補となる土の動かし方戦略 確率密度関数が低次元かつ2つの確率密度関数に重なりが場合でもWasserstein distanceはより滑らかな表現を提供してくれます。
例えば、以下のような2つの2次元の確率密度 一方 このように、KL divergenceは2つの確率密度に重なりがない場合 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の ある定数 任意の場所で微分可能な関数はリプシッツ連続です。なぜなら WGAN全体としては、こちらのLossを最小化することを目指します。 ここで重要なのが、 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のパラメータ Discriminatorのパラメータ Generatorのパラメータ 以上を繰り返します。
Kullback–Leibler Divergence (KL divergence) と Jensen–Shannon Divergence (JS divergence)
Kullback–Leibler Divergence
と
を考えます。KL divergenceはpがqからどれだけ異なるか、をはかる指標です。
)です。すなわち、距離として使うことはできません。
がほぼ0で、
が0でない場所では
の影響が無視されます。
Jensen–Shannon Divergence
]です。
と
の類似度を測ります。
GAN
を入力として受け取り、人工的なデータを出力します。その際、現実のデータの分布と似た分布を学習します。つまり、Discriminatorを騙すような(人工的なデータではあるが、現実のデータだと識別させるような)データを生成することを目指します。

: ノイズzの分布(一様分布を使うことが多いです)
: Generatorが生成するデータの分布
: 現実のデータの分布
: Discriminatorが、入力されたデータ
を実際のデータだと判断する確率
: Generatorが、入力されたノイズ
から生成するデータ
GANの目的関数
を正しく偽物だと識別して欲しいので、
$$ \mathbb{E} _ {z \sim p _ z(z)} \left[ \log \left( 1 - D(G(z) \right) \right] $$
を最大化して欲しいです。
密度比推定との関連
と
)の比で、
と
は任意の2値分類器で求めることができて、それはまさにDiscriminatorです。
はデータ数の比で近似出来ます。
Discriminatorの損失にはBinary Cross Entropyを用いればよくて、それを変形すると(1)の目的関数になります。
つまり、結果としてDiscriminatorの学習は
と
の密度比を推定するように行われることになります。
Discriminatorの最適解
は期待値の部分を書き直せば
を最大化するような
なので、
について微分すれば
は
は
に近しいものになり、
のような状況では
になります。これは、完璧なGeneratorができれば、Discriminatorはもはや機能しなくなる、ということです。
What is global optimal?
、
になることは上で確認しました。
この時、GAN のlossは、
に対応します。
GANの目的関数が意味すること
と
の間のJS divergenceは、
は
と
の間のJS divergenceを定量化します。なお、Generatorが最適である時、JS divergenceは0になって、
と一致します。
GANの問題点
Wasserstein GAN (WGAN)
Wasserstein distance
と
のWasserstein distanceは以下のように与えられます。
は下限で、wasserstein distanceを求めること自体が最適化問題になっています。
は
のある地点
から
のある地点
に動かす土の量です。正確には地点
から、全土の量
のうちどれだけを地点
へ輸送するか、という量です。
土を動かし、
を
に一致させることから、直ちに
へ動かされた土の量を
について和をとると動かし終わった土の量
と一致するはず)
から動かされた土の量を
について和を取るともともと
にあった土の量
と一致するはず)
をかけることでコスト
を算出します。
全ての
についてコストの平均をとると、
のうち、総コストがもっとも小さいものをとればwasserstein distanceが求まります。
Wasserstein GAN がJS divergenceとKL divergenceよりも良い理由
と
を考えます。Pのx成分は0に固定し、y成分は[0,1]の一様分布に従います。一方でQのx成分は
に固定しyは[0,1]の一様分布に従います。

の時
の時、PとQは
で完全に重なっていて、
= 0
に発散してしまいます。
JS divergenceは
で突然ジャンプし、微分不可能になってしまいます。
Wasserstein distanceは
の変化に対して滑らかで、勾配降下法で学習する場合に安定すると考えられます。
GANの損失としてのWasserstein distance
Lipschitz 連続性
には、
という制約がついています。つまり
はK-リプシッツ連続である必要があります。
関数
は以下の条件を満たす時にK-リプシッツ連続です。
が存在して、全ての
に対して、
$$ |f(x _ {1} - f(x _ {2})| \leq K |x _ {1} - x _ {2}| $$
これは直感的には、任意の区間で傾きがある値
で抑えられるということを意味します。(
はリプシッツ定数と呼ばれます)
にはboundが存在するからです。
しかし、リプシッツ連続だからと言って任意の場所で微分可能である訳ではありません。例えば、
は原点で微分不可能です。
Wasserstein loss
がパラメータ
をもつK-リプシッツ関数とします。Wasserstein GANでは、Discriminatorは良い
を求めます。WGANの損失としては
(現実のデータの分布)と
(Generatorが生むデータの分布)間のWasserstein distanceを採用します。つまり、学習が進むにつれてGeneratorは現実のデータの分布に近いデータの分布を出力できるようになります。
が
で近似されています。
のK-リプシッツ性を維持する方法です。簡単かつ強力な方法として、重み
を更新した後、
を[-0.01, 0.01]といった小さな範囲でクリップします。
それにより、パラメータ空間
は小さくなり、
の傾きはboundで抑えられます。WGANの著者らは、clipingよりも良いK-リプシッツ性を維持する方法があるはずだ、とも述べています。
Wasserstein GANの学習
に関する微分は、
はバッチサイズです。
に関して、WGANのLossを微分し、Wasserstein distanceの良い近似を求めるように
を更新する
のリプシッツ連続性を保つため、クリッピングを行う
に関して、Lossを微分し、Wasserstein distanceを小さくするように
を更新する