Cramér GANでいらすとや画像生成してみる

このGANは数日前(5/30)に投稿されたもの。

これまでGANのベースラインとして,
vanilla GAN,DCGAN,WGAN,WGAN-gpなどが使われてきた.
この中のWGANやWGAN-gpより優れているという主張が論文内でされている.
(abstで it performs significantly better than the related Wasserstein GAN との記述)

また,twitter上では「WGANは死んだ」などの強めのつぶやきが観測されている.

f:id:yusuke_ujitoko:20170603140649p:plain f:id:yusuke_ujitoko:20170603140657p:plain

その強さを見てみたいので,このCramér GANの論文を読み,
実装していらすとや画像を生成してみたというのが本記事の主旨。
ついでにWGAN-gpも実装して比較した。

f:id:yusuke_ujitoko:20170604160034p:plain

論文の概要

  • 機械学習に使う確率分布間の距離指標には,次の3つの性質が必要
    • sum invariance
    • scale sensitivity
    • unbiased sample gradients
  • 最近注目のWasserstein距離はこのうち前2つは満たすが,最後の1つは満たさない.
    これは深刻な問題につながる
  • そこでWasserstein距離の代わりにCramér距離を使うことを提案
    • Cramér距離は上記3つの要件を満たす
  • Cramér距離を使うCramérGANを提案

距離指標の性質

距離指標としてよく使われるKL divergenceとWasserstein距離の定義をまず確認すると,
分布{P}{Q}間のKL divergenceは {} $$ KL(P \mid \mid Q) = \int_{-\infty}^{\infty} \log \frac{P(dx)}{Q(dx)} P(dx) $$ であり,
そして分布{P}{Q}間のWasserstein距離は、累積分布関数を{F_{p} = \int_{-\infty}^{x} P(dx)  }とすると、
その逆関数を使って、 {} $$ w_{p}(P,Q) = \left( \int_{0}^{1} \mid F_{P}^{-1}(u) - F_{Q}^{-1}(u) \mid^{p} du \right)^{1/p} $$ と表される。
これらKL divergenceとWasserstein距離の違いとしては,
Wasserstein距離は分布の変化には鋭敏ではないが,出力の幾何関係には鋭敏であること.

さて、ここから距離指標の性質について説明していく.
まずパラメータ定義をする。
距離を {\boldsymbol{d}},分布{P, Q}に従う変数を{X,Y}とする.

{\boldsymbol{d}}scale sensitive であるとは,
全部の{X,Y}に対して,以下を満たす{\beta>0}{c>0}があること {} $$ \boldsymbol{d} (cX, cY) \leq \, \mid c \mid^{\beta} \boldsymbol{d}(X, Y) \tag{S} $$

{\boldsymbol{d}}sum invariant であるとは,
{X,Y}に対して独立な、どのような{A}に対しても以下が成り立つこと {} $$ \boldsymbol{d} (A+X, A+Y) \leq \boldsymbol{d}(X, Y) \tag{I} $$

理想的な距離{\boldsymbol{d}}は上の(S)と(I)を満たすと言われているらしい(Zolotarev, 1976).

機械学習向けにはさらに3つ目の性質が距離指標には必要とのこと.
機械学習では{\boldsymbol{d}}をlossとして使う. {Q_{theta}}{\theta}をパラメータとする分布とすると,
lossとして{d(P,Q)}を考えて,このlossを最小化するような{\theta}を見つけたいのだった.
そのためには,3つ目の性質として unbiased sample gradients が必要となる.

またパラメータを幾つか定義する。
{X_{1},X_{2}, \cdots, X_{m}}{P}からサンプリングした変数、
{\delta_{x}}を,異なる{x}に対するディラック関数、
経験分布を{\hat{P}_{m} = \frac{1}{m}\sum \delta_{X}  }
sample loss{\theta \rightarrow d(P, Q)}とする.

{\boldsymbol{d}}unbiased sample gradients を持つときとは,
sampleのlossが{P}の真のlossと等しいこと.つまり以下のときのこと。 {} $$ \mathbb{E}_{X_{m} \sim P} \nabla_{\theta} \boldsymbol{d} (\hat{P}_{m}, Q_{\theta}) = \nabla_{\theta} \boldsymbol{d} (P, Q_{\theta}) \tag{U} $$ 上の(U)が満たされない場合には,SGDで間違ったminimumに到達してしまう.
一方,(U)が満たされれば,sample lossがQ=Pとなることが確かに言える.

さてこれまで(U),(I),(S)と見てきたが,
KL divergenceとWasserstein距離はこれらを満たしているかというと,

  • KL divergenceは(U)は満たすが,(S)は満たさない
  • Wasserstein距離は(I)と(S)は満たすが(U)は満たさない

ということのようだ。(証明も載っているが省く)

Cramér距離

そこでCramér距離が出てくる.
Wasserstein距離は(U)を満たさないが,このCramér距離は(U)を満たすので,
こちらのCramér距離の方が良いということらしい.

Cramér距離の定義は次のようになる.
分布{P,Q}に対する累積分布関数を{F_{P}, F_{Q}}とすると, {P}{Q}間のCramér距離は, {} $$ l_{2}^{2}(P,Q) = \int_{-\infty}^{\infty} (F_{P}(x) - F_{Q}(x))^{2} dx $$ となる。

この平方根{l_{2}}は距離指標として使える。 また、この{l_{2}}は次の{l_{p}} familyに属する指標でもある。 {} $$ l_{p}(P,Q) = \left( \int_{\infty}^{\infty} \mid F_{P}(x) - F_{Q}(x) \mid ^{p} dx \right)^{1/p} $$ p=1において,この{l_{p}}とWasserstein距離は同一になる.
しかし,p≠1では異なる.
Wassestein距離と同じく,この{l_{p}}の指標も次のdual formをもつ.
(Dedecker and Merlevede ,2007) {} $$ l_{p}(P,Q) = \sup_{f \in \mathbb{F}_{q}} \mid \mathbb{E}_{x \sim P} f(x) - \mathbb{E}_{x \sim Q} f(x) \mid $$

Cramér距離は性質として(U)(I)(S)を満たす。 具体的には、

  • {1 \leq p \leq \infty}において(I)(S)が成り立ち
  • {p=2}のときのみ(U)が成り立つ

Cramér距離はWasserstein距離とKL divergenceのいいとこ取りした指標と言える. 論文ではCramér距離が(U)(I)(S)を満たすことの証明があり,
その後に別の指標として energy distance が導入されている.

この energy distance (Szekely, 2002)はCramér距離の拡張になっている.
具体的には, energy distance の1/2がCramér距離に相当する.
そのため energy distance も(U)(I)(S)を満たすことがわかり, 実装アルゴリズムではこちらの energy distance が使われている。

Cramér GANの実装

Generatorは前述の energy distance を最小化するように学習し,
Discriminatorは energy distance を最大化するように学習する.

f:id:yusuke_ujitoko:20170603155440p:plain:w500

Cramér GANの実装はWGAN-gpによく似ている。
WGAN-gpはImproved WGANという論文タイトルであることを踏まえると、
Cramér GANはImproved Improved WGAN的な位置づけと言えるかも.
注意点としては、

  • Discriminatorの出力ユニットが1つではなく、高次元となること
    (論文では256ユニット。高次元であればあるほどよいと書いてある)
  • BatchNormalizationを使わないこと
  • Dropoutを使わないこと

Cramér GANによるいらすとや画像の生成

これまでと同じくいらすとや画像を使わせていただいて、 GANを試してみる。
生成した画像がこちら.

100epoch

f:id:yusuke_ujitoko:20170604151717p:plain

500epoch

f:id:yusuke_ujitoko:20170604151745p:plain

1000epoch

f:id:yusuke_ujitoko:20170604151803p:plain

5000epoch

f:id:yusuke_ujitoko:20170604151820p:plain

27000epoch

f:id:yusuke_ujitoko:20170604151849p:plain 全体の半分はぼやけていて、半分は鮮明に生成できている。
画像の質としてはWGANより向上しているかどうかは分からない…

いつも思うが、うまく行かない時に,
「実装が間違っているのか」、「パラメータチューニング不足なのか」、 「そもそもGANの能力が低いのか」不明..

WGAN-gpとの比較

f:id:yusuke_ujitoko:20170604155904g:plain

画像の質にはそこまで明確に差はない. 質的な観点で言うと,いらすとや画像の生成ではDRAGANがいまのところ一番うまく行ってるかな.

(追記)
このサイズのいらすとや画像で主観評価するのは限界が見えてきたし,そろそろこのテーマも締めようかなと思っています.
もしくはどなたか定量評価する方法を教えて下さい.
論文のタイトルを教えていただくだけでも構いませんのでお知恵を拝借したいです.

この論文では,Cramér GANの特徴として,

  • Increased diversity
  • More stable learning

について記述されているので,少なくとも多様性の方は比較してみて追記したい.

1000epochまでのloss変化

f:id:yusuke_ujitoko:20170604152034p:plain

おまけ:Cramér GANによるMNIST画像生成

f:id:yusuke_ujitoko:20170604153240g:plain

redditCramér GANのスレッドでは,
MNISTではCramér GANはWGAN-gpより僅かに良いという報告もあった.
これはきっと質的な意味での言及だと思う.
f:id:yusuke_ujitoko:20170604174538p:plain

(追記)

Cramer GANについて議論が活発に交わされている.

https://medium.com/towards-data-science/notes-on-the-cramer-gan-752abd505c00 https://medium.com/@marcgbellemare/dear-arthur-38288bae43f5