[DL輪読会]Wasserstein GAN/Towards Principled Methods for Training Generative Adversarial Networks

630 Views

February 24, 17

スライド概要

2017/2/24
Deep Learning JP:
http://deeplearning.jp/seminar-2/

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

(ダウンロード不可)

関連スライド

各ページのテキスト
1.

Towards Principled Methods for Training Generative Adversarial Networks Wasserstein GAN KEISUKE FUKUTA

2.

論文情報 Towards Principled Methods for Training Generative Adversarial Networks • ICLR 2017 採択論文 • 数学強者がGANを解析してみましたという論文 Wasserstein GAN • 3人中2人↑と同じ著者 • 解析した知見を利用して実用的なGANを提案

3.

生成モデル • 未知のデータ分布𝑃" 𝑥 と モデルの分布𝑃% 𝑥 を近づける • よくある方法では、尤度の最大化 ≅ Kullback-Leibler (KL) divergence の最小化 VAEではガウス分布を仮定しているのでKLが具体的に計算可能 GANでは分布を仮定していない

4.

Kullback-Leibler (KL) divergence 𝐾𝐿(𝑃" ||𝑃%) = ∫3 𝑃" 𝑥 12 3 𝑙𝑜𝑔 1 (3) 4 𝑑𝑥 = 12 3 𝔼3~12 [𝑙𝑜𝑔 1 (3) 4 ] (KLは非対称 ) 𝑃" 𝑥 > 0 𝑎𝑛𝑑 𝑃% 𝑥 → 0 • 真のデータを生成する確率が低い • Mode dropping • 𝐾𝐿 → ∞ 𝑃% 𝑥 > 0 𝑎𝑛𝑑 𝑃" 𝑥 → 0 • 真のデータにないようなデータを生成 • Fake looking • 𝐾𝐿 → 0

5.

Jensen-Shannon Divergence 𝐽𝑆𝐷(𝑃" | 𝑃% = C D 𝐾𝐿 (𝑃" | 𝑃E + C D 𝐾𝐿(𝑃%||𝑃E ) , (𝑃E = 14 G12 ) D • KLが非対称で不便なので対称にしたもの • GANは実質これを最小化することで真のデータの分布を学習している

6.

GAN Original Loss 𝐿 𝐷, 𝑔I = 𝔼3~12 [log 𝐷(𝑥)] + 𝔼3~14 [log(1 − 𝐷 𝑥 )] Dは式(1)を最大化、Gは式(1)を最小化 明らかに、𝐷 ∗ 𝑥 = 12 3 12 3 G14 (3) のとき最大 → 𝐿 𝐷 ∗ , 𝑔I = 2 𝐽𝑆𝐷(𝑃" | 𝑃% − 2log2 2 すなわち • Dは𝐽𝑆𝐷を近似するよう学習 • GはDによって近似された𝐽𝑆𝐷を最小化するように学習 (1)

7.

GANの問題 理想的には、 1. Dを精一杯学習させて精度よくJSDを近似する 2. Gを学習させる を繰り返すのが良いのでは? → うまくいかない - log(D(x))にするという小手先のトリックもあるが、それでも不安定

8.

Question • なぜDiscriminatorを更新すればするほどGeneratorの更新が うまくいかなくなるのか • なぜGeneratorの更新式の- log(D(x))トリックで多少うまくいくのか ◦ 実質何を最適化しているのか (JSDと似ているのか?) • なぜGANの学習はそんなに不安定なのか • どうにか回避できないのか

9.

Sources of Instability そもそも、Gを固定してDを学習させた場合 min − 𝐿 𝐷, 𝑔I = min − 𝔼3~12 [log 𝐷(𝑥)] + 𝔼3~14 [log(1 − 𝐷 𝑥 )] = − 2 𝐽𝑆𝐷(𝑃" | 𝑃% + 2log2 であってほしい → だが実際にはどこまでも小さくなり最終的には 0 に → なぜ??可能性としては、、 • 分布が不連続 • 互いに素な台(support)が存在する

10.

Sources of Instability • 真のデータ分布 𝑃" は低次元の多様体空間上に存在する • Ex. 256 × 256の画像だったら、256*256次元空間すべてに配置されるというよりは 低次元な空間に集中しているはず • 生成分布𝑃% も同様 • 実際GANではランダムに生成された 𝑧 ~ 𝑃 𝑧 になんらかの関数を適用したもの 𝑔 𝑍 • 多くのケースでは𝑍の次元数 (≅ 100)はサンプル𝑋のそれよりはるかに小さい • すなわち低次元多様体空間上に存在

11.

Sources of Instability optimal discriminatorが存在するための条件に関する証明が続きます (全然追えませんでした) 最終的には、このどちらかが成り立てばよい 1. 二つの分布がdisjointなsupportを持つ場合 2. 二つの分布がそれぞれ低次元多様体に乗っている場合 ◦ 低次元多様体の共有空間は、測度0になるから (たぶん) イメージ的には、例えば二次元空間では曲線は 基本的には点でしか交わらないので分離できるよって感じ (一点の確率密度は0)

12.

Sources of Instability 結局! • 二つの分布が互いに素なsupportを持つ、もしくは • 低次元多様体に存在している場合、 Optimal discriminatorが存在し、 そのとき x ∈ 𝑋に対し、 𝐽𝑆𝐷 = log 2 , 𝛻3 𝐷 𝑥 = 0 要は自由にD決めてよかったら最終的には完璧に分離できちゃうぜってこと つまりJSD自体に低次元多様体同士を近づける力はない

13.

Sources of Instability また、最適な𝐷 ∗ と学習途中の𝐷がどれだけ離れているかを𝜖とおいて、 𝜖 𝛻I 𝐸\~] \ log 1 − 𝐷 𝑔I 𝑧 ≤M D 1 −𝜖 らしいです 結局! 𝐷 ∗ の近似精度が上がるほどgradientのnormは小さくなっていく つまり、 • 学習が不足していると、正確でない 𝐽𝑆𝐷を最小化することに • 学習しすぎると、Gradientがどんどん小さくなってしまう → それは難しいわけだ、という話

14.

− log(𝐷)トリックについて • Gのlossにlog(1 − 𝐷(𝑥)) ではなく− log(𝐷(𝑥))を使うトリック • 学習初期は超簡単にDiscriminatorによって分離できてしまうので、 さっき述べた問題から、log(1-D)の勾配がどんどん小さくなる (このトリック使わないと学習進まないらしい) • 式的にも、D(x)がほぼ0だったとき、 ` a(3) ` a(3) 𝛻log(1 − 𝐷 𝑥 ) = − (C ba 3 ) よりも − 𝛻log(𝐷 𝑥 ) = − a 3 のほうが大きそう • これって何を最小化してることになるの?

15.

− log(𝐷)トリックについて 実は、、 𝔼\~] \ −𝛻I log 𝐷 ∗ 𝑔I 𝑧 |IcId = 𝛻I [ 𝐾𝐿 (𝑃%e | 𝑃" − 2 𝐽𝑆𝐷 (𝑃%e 𝑃" IcId ] • JSDの符号直感と逆じゃん。。 • もう一つはMaximum Likelihoodのときと逆のKL!! ◦ Fake looking -> high cost ◦ Mode drop -> low cost → クオリティは良くなる方向に動くが、mode dropに対してlossが働かない → practiceに合うね! また計算していくと、この勾配の分散は学習が進むに連れて発散することがわかった → 勾配法が不安定に!

16.

Kullback-Leibler (KL) divergence 復習 𝐾𝐿(𝑃" ||𝑃%) = ∫3 𝑃" 𝑥 12 3 𝑙𝑜𝑔 1 (3) 4 𝑑𝑥 = 12 3 𝔼3~12 [𝑙𝑜𝑔 1 (3) 4 ] (KLは非可換 ) 𝑃" 𝑥 > 0 𝑎𝑛𝑑 𝑃% 𝑥 → 0 • 真のデータを生成する確率が低い • Mode dropping • 𝐾𝐿 → ∞ 𝑃% 𝑥 > 0 𝑎𝑛𝑑 𝑃" 𝑥 → 0 • 真のデータにないようなデータを生成 • Fake looking • 𝐾𝐿 → 0

17.

Solution • じゃあどうすればいいの?? • 解決策 1 ◦ Dを学習させるとき、二つの分布にノイズを加える • 解決策 2 ◦ JSDではなく他の分布間距離を測る指標を利用する

18.

解決策 1 12fg 3 2fg 3 G14fg(3) • Dを学習させるとき、二つの分布にノイズを加える → 𝐷 ∗ 𝑥 = 1 ◦ 色々証明がんばってました。謎でした。 ◦ そもそも問題として、VAEみたいに最終出力にノイズを仮定してないからsupportがoverlapしない • ノイズ加えない場合は、二つの分布が割と似てても (Ex. きれいな画像を生成できていても) 完全に識別できるDが学習できてしまっていた • ノイズをいい感じに加えれば、ほぼ完全に二つの分布がoverlapするので、 Dを学習させればさせるほど良い しかし、 → ノイズの大きさを調整するの面倒 → 実際は𝑃" Gh 𝑥 ,𝑃%Gh (𝑥)の距離じゃなくて𝑃" 𝑥 , 𝑃% (𝑥) の距離を小さくしたい (ぼやけちゃう)

19.

解決策 2 • JSDではなく他の分布間距離を測る指標を利用する • ここでWasserstein Metrics (別名 Earth Mover Distance (EMD) ) 𝑊 𝑃, 𝑄 = inf n l∈m 3 × 3 𝑥 − 𝑦 D 𝑑𝛾(𝑥, 𝑦) • 元々、最適輸送問題に使われる計量らしい。よくわからないです。 • Pにある土を動かしてQにするコスト • Pのx地点の密度P(x)を𝛾(𝑥, 𝑦)分だけ𝑦地点に移して最終的に𝑦地点の密度がQ(𝑦)になるように配分 • |𝑥 − 𝑦| がx地点から𝑦地点に密度を移すコスト • 一番移動コストの低い配分𝛾でのコスト 的な感じらしい 嬉しいのは、supportが違ってもコストが連続的に定義できること! 低次元多様体同士の距離をいい感じに測れる!

20.

• 一つ目の論文はここで終わり • 結論は特になかったです • ここからWasserstein GAN です

21.

分布間距離比較 •例 ◦ 2次元空間で、直線上の確率密度を持つ分布 ◦ 𝑃" = (0, z) (𝑧 ~ 𝑈(−1,1) ◦ 𝑔I 𝑧 = (𝜃, 𝑧) ◦ の分布間距離をEMD, KL, JSD, TVで計算 𝜃

22.

WGAN • 低次元多様体にのる分布間距離を測るには、 JSDよりもEMDを利用するのが良いのでは? • 𝑊 𝑃, 𝑄 = inf ∫3 × 3 𝑥 − 𝑦 D 𝑑𝛾(𝑥, 𝑦) ← これどうやって解くの?? l∈m • Kantorovich-Rubinstein duality 𝑊 𝑃" ,𝑃I = sup 𝔼3~12 𝑓 𝑥 w xyC − 𝔼3~1e 𝑓 𝑥 • 1-リプシッツを満たす関数𝑓{ を選んだなら、 𝑊 𝑃" , 𝑃I = max 𝔼3~12 𝑓} 𝑥 {∈} − 𝔼\~]~ 𝑓{ 𝑔I (𝑧) よく見るとGANとほぼ同じ!!!!(logがない)

23.

WGAN • リプシッツ連続性 ◦ 関数の傾きが有界に収まる ◦ Feed-forward neural networkが 1-リプシッツを満たすためには? ◦ Sigmoid, relu とかは大体リプシッツ連続 ◦ 各パラメータがコンパクト空間に収まっていれば良い つまり 各パラメータのnormが ある値c以下(論文中では0.01に設定)に収まっていれば良い

24.

WGAN 結局 𝑊 𝑃" , 𝑃I = 𝔼3~12 𝑓} 𝑥 − 𝔼\~]~ 𝑓{ 𝑔I (𝑧) • Critic (元のDiscriminatorと区別するためにCriticと表現) ◦ 収束するまで学習させる (論文ではCritic 5回 G 1回) ◦ 生出力を利用 (softplusとかlogとか何もいらない) ◦ パラメータをc以下にclipping • Generator ◦ Criticと同じlossを利用する 従来のGAN loss ◦ 𝐿 𝑓{ 𝑔I = 𝔼3~12 [log 𝑓{ (𝑥)] + 𝔼\~]~ [log(1 − 𝑓{ 𝑔I (𝑧) )] ◦ (𝛻I 𝐿 𝑓{ , 𝑔I = −𝛻I log 𝑓{ 𝑔I 𝑧 )

25.

WGAN • 特徴 ◦ 学習が安定 ◦ 常に収束させるまで学習させても勾配が消えないのでDとGの学習スケジュールの調整が不要 ◦ BatchNormalizationがなくても動く。極端にはMLPでも学習可能 ◦ 意味のあるloss metrics ◦ 生成クオリティの向上とlossの減少が相関する ◦ 今までのGANはそもそもDとGで最適化するloss違ったうえに、各lossの値がめちゃくちゃ ◦ このlossが小さければ良いモデルとして良いのでハイパラ探索の基準にできる (BOとか) ◦ Mode Collapseは起こらない ◦ これはそもそもfixされたDに対して最適なGを学習してしまうことによるもの ◦ その時点でのGに対して収束するまでDを学習させるため大丈夫

26.

Don’t saturate

27.

Meaningful Loss Metrics

28.

WGAN • 実装上は、今までのに修正を加える程度 ◦ Dをclipping ◦ Dの出力の非線形関数を外す • 注意点 ◦ 学習率を高くしたり、初期化を間違えるとCriticが死ぬ(全パラメータ -0.01か0.01に) ◦ Clippingしているためか、Motentum項を加えると学習が壊れる ◦ 論文中ではRMSPropを推奨 ◦ 強めのWeight Decayでも良いらしい (結局抑えられればなんでもよい)

29.

結論 • 著者頭良い & WGANすごい • 一応実装してみたので興味あったら見てください ◦ https://github.com/fukuta0614/chainer-image-generation/tree/master/WassersteinGAN ◦ やってみた感じ、単純に[-0.01, 0.01]のclipだとだいぶモデルに制約加えてるので 従来と同じ構造だとやや表現力不足する感 ◦ Clipping parameterをannealさせたり、層深くして構造を複雑させたりする必要がありそう