WGAN導入の流れ
- Wasserstein distance (Earth-Mover Distance) は分布学習において有用
- Wasserstein distanceを直接求める計算量は現実的でない
- Kantorovich-Rubinstein 双対性によりWasserstein distanceを別の形式に変形できる
- これをWGANと名付けよう
- WGANはすごいぞ、ほらみろ実験結果だ
Wasserstein distance
直感的意味
確率分布間の離れ具合を示す指標.
Earth-Mover Distance (土の山を動かす距離) の名が示唆するように、ある分布をある分布へ"動かす"のに必要な労力、みたいな意味を持っている。
分布が一致してれば0になるし、離れていて形が違うほどdistanceが大きくなる
利点
KLやJSが定数損失を出しちゃう (勾配消失) 状態でも、Wassersteinなら勾配を提供してくれる例がある.
gがlocally Lipschitzでregularity assumption 1を満たすなら、Wasserstein distanceは連続、かつほとんどで微分可能
GANにどう持ち込んだのか
EMDは移動規則γによるコスト期待値の下界
双対問題と見ると、EMDは1-Lipshitz関数CriticによるCritic(dist1)期待値 - Critic(dist2)期待値の上界
CriticをFFNNとみれば、FFNN(true) - FFNN(G(z))のweight全域での最大値がDist_trueとDist_genのEMDになる。
分布間の距離を正確に計測し、距離が縮む方向にパラメータを動かせば分布間が近くなる.
正確なWasserstein distanceを求めるのは現実的ではないが、繰り返し計算でより正確な距離を推定することはできる。
だから、
Wasserstein distanceの繰り返し推定 -> 分布の移動
を繰り返せばいつか最適解にたどりつくはず。
前半がDiscriminator学習相当であり、後半はGenerator学習相当である。
Dが方向を学習し、GがDに基づいてよりよい生成器へ学習していく本質は似ている気がする。
WGANにおける色々な制限・前提
- Lipschitz連続であること
- originalのWGANはweight clipping
実際のアルゴリズム
CriticのlossはCritic(x_real) - Critic(G(z))のバッチ平均
Generatorのlossは - Critic(G(z))のバッチ平均
SGDで ncritic回 Criticを更新 (範囲超えたら都度clipping) したのち、1回Generatorを更新
超シンプル
WGANは本当に有効か
NS-GANやLS-GANと比較したとき、どんな違いがあるのか
- NS-GANは勾配消失を起こすケースがある
- 実務上、この勾配消失は頻繁におこるのか?
- WGANは学習に時間かからないか?
- critics (D) の繰り返し推定を多くすべきだが、それは計算時間を爆発させたりしないか?
論文読みメモ
いろんな距離
- Total Variation (TV) distance
- Kullback-Leibler (KL) divergence
- Jensen-Shannon (JS) divergence
- Earth-Mover (EM) distance, or Wasserstein-1
解説記事など
EMD, 双対表現