[論文メモ] InfoGAN/ss-InfoGAN

#はじめに

[InfoGANの論文; Chen et al., 2016 (UC Berkeley)](https://arxiv.org/abs/1606.03657)
InfoGAN: Interpretable Representation Learning by Information Maximizing Generative Adversarial Nets

[ss-InfoGANの論文; Spurr et al., 2017 (ETH Zurich)](https://arxiv.org/abs/1707.04487)
Guiding InfoGAN with Semi-supervision

メモなので足りない箇所があるかもしれませんが、ご容赦ください。
ただ、もし内容に間違いや不明な点があれば、ご意見ご指導をいただければ幸いに存じます。

##InfoGAN

 - 普通のGANは$z$(ノイズ)を何かを生成する際に種として使う
 - だが$z$は表現として絡まっていて、いじってもなかなか人が理解できるように変化をアウトプットに反映されない（Radford, 2016のようにうまくいく方が珍しい）。
 - そこで$z$の一部を$c$（latent variable）とする。完全にノイズであるzに反して、$c$はdatasetの「何かの特徴」に対応すると想定されるように設計される。例えば、データセットをMNISTとする。生成する画像の推知の値そのものを捉えたいとしたら、$c_1$を10カテゴリーの離散変数にする。文字の太さや傾きなどを捉えたいとしたら、$c_2$, $c_3$を連続変数とする。そんな風に$c=c_1, c_2, c_3...c_n$を設定する。
 - それ以上何もしなければ、$c$は訓練の過程で無視される
 - なので、生成されるもの$G(z, c)$に対し、$c$と関係を持たせたい。
 - そこでMutual Informationを使う。
 ![image.png](https://qiita-image-store.s3.amazonaws.com/0/302350/b35b4853-aed1-a6de-c4e4-932da7b79d79.png)
 - 損失関数に組み込んで、Mutual Informationを最大化したい ![image.png](https://qiita-image-store.s3.amazonaws.com/0/302350/02bf1898-cd67-c1ab-63e1-10cce956bbbe.png)
 - Mutual Information について[この記事](http://www.scholarpedia.org/article/Mutual_information)にはぜひ参照したい
    - かくかくしかじかでMutual Informationがこんな風に書き換えられる $$I(X;Y) = D_{KL} \Big( P_{XY}(x,y)||P_X(x)P_Y(y) \Big)\,$$
    - $P(x)$と$P(y)$が独立した時だけ$P(x)P(y) = P(x, y)$ ---->$I(X;Y)$が最小化される


---
 - 大まかな構図は以上
 - ところが$I(c; G(z,c))$を求めるのが難しいらしい。$P(c|x)$を必要とするから。　<---------------ここちょっと理解がまだ完全ではない、要再考
 - そこで$P(c|x)$に近似するための分布$Q(c|x)$を作る
 - [Variational Information Maximization](https://papers.nips.cc/paper/2410-information-maximization-in-noisy-channels-a-variational-approach.pdf)という手法で$I(c; G(z,c))$のLower boundにあたる$L_I(G, Q)$を求める。
    - 詳細は見てないので、何とも言えないが、多分役割としてはVAEの中のやつに近いかな？
    - ![image.png](https://qiita-image-store.s3.amazonaws.com/0/302350/b713db57-f743-d749-ada0-0cf8e77b1277.png)
    - ![image.png](https://qiita-image-store.s3.amazonaws.com/0/302350/3b81350d-f4ef-d4a4-d1b1-a4bf28cc3f28.png)
    - ![image.png](https://qiita-image-store.s3.amazonaws.com/0/302350/2c3f5d68-a3a1-af6d-2903-98eaa4592b32.png)
 - 最終的に実装するとき損失関数がこうなる：![image.png](https://qiita-image-store.s3.amazonaws.com/0/302350/6514017b-8a81-a933-c127-860b8019a130.png)
 
 
##ss-InfoGAN
 - 大体上と同じ
 - 一部だけreal sampleのラベルとして$y$が提供される。それを利用して生成するものの質の向上を図る。
 - ![image.png](https://qiita-image-store.s3.amazonaws.com/0/302350/4afbfc0c-e0c5-c003-c390-ee30312f6b4c.png)
 - 変更点として$c$を$c_{ss}$ semi-supervised code、と$c_{us}$ unsupervised codeに分かれる。$c_{ss} \cup c_{us} ＝c$
 - 最大化するMutual Information(延いてはLower bound)も二つになる
    - ![image.png](https://qiita-image-store.s3.amazonaws.com/0/302350/3d82f364-f2cc-bdc4-10fd-922cd932d7d1.png)
    - $X$がreal samplesで、$\tilde{X}$がgenerated samples。
 - 要するに$I(C_{ss};X)$を最大化することで、$Q_{ss}$を訓練する時、ラベルのあるデータ(x, y)で$Q_{ss}$にラベル$y$の意味を学習させる。
 - 同時に$I(C_{ss};\tilde{X})$を最大化することで、$G$が間接的に$y$に含まれる情報を学習する。それで少数のラベルでもGがラベルの情報を取り入れることが出来る。

 - 最終的に損失関数がこうなる![image.png](https://qiita-image-store.s3.amazonaws.com/0/302350/2ce11040-ef7a-bcc5-d59d-5fbaac10645f.png)

上のInfoGANのやつと合わせてさらにこうなるのではないかと
$$\min_{G, Q_{us}, Q_{ss}}\max_{D}V(D, G)- \lambda_1L_{I}(G, Q_{us}) - \lambda_2(L^1_{IS}(Q_{ss}) + L^2_{IS}(G, Q_{ss})) $$


 - さらに下の![image.png](https://qiita-image-store.s3.amazonaws.com/0/302350/784c8773-a4c4-45d3-2b22-6e82bd6a147b.png)

 - (11)と(12)についてはこういう理解もできる：
    - <img width="400" src="https://upload.wikimedia.org/wikipedia/commons/5/5d/VennInfo3Var.svg">
    - まずは$C_{ss}$を上の円(z)とし、$X$を左下の円(x)とし、$\tilde{X}$を右下の円(y)とする。
    - となると(11)では、
        - $H(C_{ss})$は上の円全体にあたる。
        - $I(C_{ss}; X)$が黄色＋灰色にあたる。
        - $I(C_{ss}; \tilde{X})$が水色＋灰色にあたる。
        - $H(C_{ss}|X, \tilde{X})$が緑色にあたる。
        - $I(C_{ss};X;　\tilde{X})$が灰色にあたる。
        - これで(11)は成立する
    - (12)では$I(X; \tilde{X})$がピンク色にあたり、成立する。

 - (13)では$X$と$\tilde{X}$両者とも$C_{ss}$から独立したと仮定する(式8により)
    - $I(X;\tilde{X}|C_{ss})$の理解については、上の円$H(C_{ss})$を上方にずらすと想像する
    - ずらしてると、ある瞬間を境に、灰色の部分がなくなる。これが$X$と$\tilde{X}$両者とも$C_{ss}$から独立したということにあたる。
    - 最終的には(14)になる

 - それ以降は字面通りに理解できる