DMGANのメモ

# [Disconnected Manifold Learning for Generative Adversarial Networks](https://arxiv.org/abs/1806.00880)

* Khayatkhoei et al, 2018
* GANが複数のmodeを持ったデータをモデルできないmode droppingの問題を，複数のGeneratorを使ってそれぞれのGeneratorに一つのmodeをモデリングさせることで解決する
* 個人用メモ．数式と図が抜けています．

## abst

* 自然画像はよく一つの連続な多様体ではなく，disjointな多様体にsupportされているが，いくつかの問題を訓練にもたらす．single Gが正しく分布をモデルできない，しかもサンプル品質，モードドロッピング，に影響することを調べた．Gの集合を使うとこの問題を解決できる．あたらいい考えをmulti generator GANに導入して，最後に，固定の事前分布を考えることの重大な問題を考え，事前分布と必要な数のGの数を教師なしで推定する新手法を提案する．どんなGANのモデルのtopにも適用できる．



## 6. conclusion

* single GAN generatorがdisconnectedなmanifoldsでsuppportされたdistributionを正しく学習できない，その実際の帰結，multi generator GANがそれを回避することを示した．
    * 固定事前分布よりも事前分布を学習することが重要．しかし本研究がreal dataのsupportsがdisconnectedであることを仮定していることは重要．この仮定を検証することと，主要なデータセットのトポロジカルな性質を研究したい．prior learning を拡張して，Dに多様性を与える，Gにも，という方向もある



## 1. intro

* "real looking" images? It is often the case that real world data falls on a union of several disjoint manifolds and such a transformation does not exist
* effective generative model needs to be able to learn such manifolds. 
    * 後に元のGANのformulationがassumtionが間違っていることが指摘されている
    * 特に，証明がGとDの関数空間でしか書かれていない．(パラメタ空間ではない)．
    * JSがmax outする．データ分布がモデル分布とdisjoint な台を持っているとき，勾配消失する．
    * 最後に，Gがデータ分布のmodeを正しく捉えられないmode dropping 
    * これにはまだ定まった理由がない．
* 収束の主要な仮定はGもDも無限の容量を持っていること．これはD，GにNNを使い，Univ.Approx.Theorem(Goodfellowの論文に出てたはず)によって正当化される．
    * この定理は連続関数だけで有効だし，
    * NNはuniversal approximatorsと実際には程遠い
    * D,Gに色々な制約を加えているので，理論どおりの収束などしない．
* disconnectedな台での学習の分布に焦点を当て，不連続関数のモデリングにおけるNNの制限がそのような分布の学習にこんなんをもたらすことを示す．
* そのようなモデルは複数のGの個数と，それらの事前分布を固定ハイパーパラメータとして持ち，事前分布学習のアプローチを提案し，disconnected supportの学習にそれが必要なことを示す．
* common GAN modelsの重要な制限を示して，本研究の効率性を示したい．

### contributions

* GANのdisconnected support の分布モデリングの弱点を特定し，結果を調べた．(mode droppoing , worse sampole quality  worse local convergence)
* Gの数と，Gを選択する確率を選ぶことが正しく問題の分布を学習するのに必要であることを示し，新しい事前分布学習手法を示す．
* 本モデルはdisconected な台の分布を効率的に学習できる．必要なdisjoint要素の数を推定，事前分布学習を通して．１このNNの代わりに，いくつかの小さいNNを使う．平行学習に適しており，重みの悪い初期値にたいして頑健．いかなるGANにも容易に組み込める

## 2. Difficulties of Learning Disconnected Manifolds 

* GANは連続なG:z->X を学習する.p(z)を入力として実数データを出力する．
* p(z)は標準多変数正規分布N(0,I)または有界な一様分布U(-1,1)これは，p(z)がグローバルに連結な部分空間zにサポートされていることになる
* 連続関数は空間の連結性を損なわないので，Gによる確率分布もglobalに連結な空間にsupportされている
* Gは連続なので，X中のdisjointなmanifoldsのunionを正しくモデルできない．
* この欠点を見る．今後，真のデータはmanifold Srにサポートされ，それはdisjointなglobally connectedなmanifolds M_iのunionであることを仮定する．M_iはsubmanifoldと呼ぶ．

### sample quality

* Gは１個のglobally conncted manifoldでsubmanifolds全部をカバーしようとするので，real-manifoldから外れたサンプルが出る．これを避けるには，頻度の高い関数を学習するようにすることが考えられるが，これは安定的な訓練と，regularizaitonによって阻止される．だからoff-manifold sampleが生成される．

### mode dropping

* 生成分布のsupportで，真のsubmanifoldsが完全にはカバーされない状況をmode droppingと呼ぶ．
* mode collapseはこの特殊ケース
* Gがglobally connected supportの分布しか学習できないとき，真のデータsubmanifoldsのカバーを学習せねばならず，つまりGはoff real manifoldsのデータのsubmanifoldな空間の確率を一定以下に下げられない．
    * しかしGはoff real-manifold の空間の体積を最小化することはできる．そこの生成サンプルの確率が最小化されるように．
    * カバーを学習するとき，すべてのreal−manifoldsをカバーするか，off real manifold空間の体積を最小化するかトレードオフがある．
    * これは体積最小を選ぶと，Gがあるsubmanifoldsを犠牲にする事を意味し，その場合はmode droppingになる

### Local Convergence

* GANは均衡点近くで生成とreal データ分布が等しければ局所収束する．Gが正しいsupportをreal data distributionで学習できなければ，議論にあったように，均衡点は局所収束しない可能性がある．実際にはこれはGのsuportがデータmanifold近くで振動することを意味する．

## 3. Disconnected Manifold Learning

* Zを不連結にしてXの不連結をもたらす，またはG:Z->Xを不連続にする方法が２つある．
    * 1番目はどうやってZを不連結にするか考える．例えば離散次元を加えたり，ガウス混合分布を使う．
    * 2番目は独立なNNの集合をGとして導入することで行う．本論文ではこの後者のケースを扱う．これは並列化に適しており，初期値問題に強い
* Gの集合G_c :Z ->X を導入する．これはZ中で共有の一様事前分布から独立に作られている．各Gは潜在的にバラバラなconnected manifoldを学習する(可能性がある)．それぞれが異なるsubmanifoldに注目するようにencourageする．そうでないと全部がsubmanifoldsのcoverを学習してしまう．
    * 生成サンプルはそのGに特有であってほしい．つまりサンプルを見れば完全にどのGから来たのかわかりたい．自然に，相互情報量I(c;x)を最大化することで達成できる．cはGのid.　Gのidと生成イメージの相互情報量の下限を最大化することで実装できる．
        * q(c|x)はp(c|x)を近似する分布，p_g(x|c)はGによる，
        * q(c|x)をNNエンコーダ Q(x;gamma)でモデリングし，I(c;x)を最大化することはcross entropyを最小化することで：(1)式．
        * 結局，どれからどれが来たかを特定できればいいので，NNで分類器作って，できていなければその分を誤差にペナルティ加えるっていう話．
        * WGANの誤差を使う．分類誤差はGに加える（なぜマイナス符号?）
        * [11]WGAN-GP
    * goodfellowとarjovskyの収束についての定理は成り立つ．Gの内部を変更しただけなので無限のcapacityの仮定に吸収される．
    * p(c)p_g(x|c)をGの確率としてすべてのGはunifiedなGとみなせる．L_cはGの関数空間のLagrange乗数を使った制約．
    * ほとんどのmulti-Gモデルはp(c)を一様分布と見るが，disconnected supportの学習には問題がある．後述．

### 3.1 Learning the Generator's Prior

* 真のsubmanifolds数は一般にはわからない．真の数をn_r, G数をn_gとして，n_g < n_r ならGは複数のsubmanifoldをカバーしないといけない．逆の場合は複数のGがsubmanifoldをshareするので，disjointになるように強制する項を加えていたので，real submanifolds をpartially coveredすることになり，mode dropping
    * Gが多ければ，カバー率は良くなる．後者の問題をprior p(c)が余分なGの寄与を消すようにすることで，解決する．
    * n_g=n_rのときでさえ，submanifolds上のデータ分布が一様でない場合はどうなるか?各Gが異なる部分多様体を学習するようにしていたので，Gのpriorがuniformだとsuboptimalな分布になる．このことはGのpriorを学習する必要があることを示す．
* G上のbest priorを見つけたい．NNによる分類q(c|x)はx in X が各G_cに属する確率を学習していた．qはp(c|x)を近似している．EMを使う．q(c|x)の期待値はp(c)の近似になる(E step)．これをDMGAN modelを訓練するのに使う(M step)． p(c)を学習するのに経験的な平均ではなく，model r(c; zeta)を使う．各Gに対応する{zeta_i}{i=1}^{n_g}上のsoftmaxである．このrをcross entropy 最小化で訓練する．
* 最初からpriorを学習させると，多くのGがはやくにその確率を消失させることを妨げる可能性がある
    * ~~本当はさっさと確率を消失させたい？？~~ 消えるのを防ぐ．初期のGは間違って消してしまう．
    * この解決のため，entropy regularizerとdecayを加える．時間とともにr(c)がuniformから離れるように．(4)が最終的な誤差関数．
    * Disconnected Manifold Learning GAN with Prior Learning (DMGAN-PL)と呼ぶ．
* 結局，何個submanifoldsがあるかわからないけど，対応するGの出現頻度をクラス分類を元に求めて，その頻度を事前確率にすることで余分なGを無視する．


### 3.2 choice of metrics

* inter-mode variation, intra-mode variation, sample qualityについて見たい．
    * FIDはintra-class variationに無関心で，classについてuniform distributionなGを好む．これが問題なので，別のmetricも合わせる．
* inter については，pretrained classifier に真のデータ，Gデータ入れたときのクラス分布のJSD．
* intraは，mean square geodesic distance (MSD)を定義する．同じクラスになったサンプルペア同士のgeodesic distance .その計算のために，small neighborhood of each sample のeuclidean distance が使われる．Isomap graphを作るために．
    * このshortest paht distance は真の画像多様体の上の測地線距離の近似．
    * 平均二乗距離はeuclidean では，共分散行列のtraceの２倍に等しい．故に各クラスの分散を表す？
* サンプル品質については，pretrainedな分類器でhigh probが出るかどうかで測る
* dataset 暗記について
    * single Gは暗記できない
    * GANはunsupervisedなので，ある点をデータ点とマップしてというのではない，？．なので特に問題にならない


## 4. related works

* F:X->Zを行うネットワークを導入してmode collapseを回避する研究がある．sampleをprior p(z)に戻す．生成データが崩壊していたときに学習シグナルを与える．ALI, BiGAN, VEEGAN．これらはGによって情報が欠落することを防ぐ(複数のｚが同じｘにマップされることを)．disconnectedな台の場合，Gが１個なので，同じ問題に陥る．
* MGAN, MAD-GAN uses k G and classifier to classify wherer the sample come from.
    * これらは複数のGが混合分布をモデル出来るかは説明した．本研究では１個のGで学習できないのは真のデータが混合分布から来ているからではなくて，supportがdisconnectedだからだと説明した．
    * 固定数のGであることが深刻な問題になりうる．
* 正しいdata多様体の学習にフォーカスした研究：
    * MDGAN:encoded real image-> real looking imageという変換を学習する．それから変換されたencoded imageによく似たimageを生成するGを１個学習させる．（disconnectednessは扱えない）
    * InfoGAN Zに補助次元を追加する．潜在空間のdisentangled 表現を学習するために補助次元と生成画像の間の相互情報量を最大化する．
    * DeLiGAN 固定のGauss混合分布を潜在事前分布に使う．
    * 後者２つはdisconnectedを扱えるが，固定数の離散要素がunderlying class と同数であることを仮定しており，prior学習がないので，3.1と同じ問題に苦しむ．１個のGができないことについて言及していない．

## Experiments

* multi GではsingleGの1/4の数のfilterを使った．複雑さの調整のため．DとGが5対1の更新比率で２００epoch．エンコーダQはDのトップに位置し，Gと同時に訓練．事前分布r(c;zeta)に応じて32個のGを選び，z ~ U(-1,1)でそれぞれサンプルすることでデータバッチを作る．

### disjoint line segments

* disjointなline segments上のuniform distributionからサンプリングして構築したデータ．G/Dともに2layer MLP．multi-Gでは１０個のGを使った．fig3．では右上のline segmentだけ0.7の確率であるunbalanced versionのデータが使われている．sotaはwgan-gpとした．MGANはDMWGANと同等の結果だった．

### MNIST 

* 異なるクラスラベルがdisjoint manifoldsに乗っているとみなせるのでこの問題に適している．D/Gは3 layer のDCGAN like network. 20個のG がmulti-Gで使用．結果にはmodificationの有効性が示されている

### face-bed dataset

* 20K face images をCelebAから，20K bedroom images をLSUN Bedroomsから組み合わせ，disconnected manifold にsupportされた自然画像データセットを作った．multi-Gで5個のGを使った．