今日はInfoGANを流し読む。私は数学畑産ではないので、途中かなり適当になりますが、雰囲気と概要をつかめるように流し読みます。
ちゃんと見たい人は論文へ⇒InfoGAN
InfoGANのポイント
- InfoGANを使うと普通のGANのノイズばっかりのパラメータの他にもっと意味を持ったパラメータを持つようになる。
- InfoGANは教師なし学習なので、制御したいパラメータと画像を対応させて用意する必要がない。(ConditionalGANは制御したいパラメータに対応した画像を用意)
- 潜在変数の一部と観測されるものの相互情報量を最大化することでよく抽出された表現をInfoGANが獲得できるようにしている。
- 上記を効率的に実現されるように目的関数を最適化している。
- 以下がInfoGANのネットワーク構造


他InfoGAN論文の流し読み
通常のGANではノイズの入力列になんの拘束がないので、お互いの変数が強く影響し合う形で学習されデータの意味ある特徴をつかんでいるようには見えにくくなる。
相互情報量について:情報理論においては相互情報量I(X;Y)はYを知った時にXについて知れる情報の量を表す。すなわちYを知った時にXに関してどれだけ不確定な量が減るかを示している。もしXとYが独立ならばI(X;Y)=0となる。Yを知ってもXについて何もしれないからだ。逆に依存している場合はI(X;Y)は大きくなる。
Generationのプロセスでcが無視されないようにI(c;G(z,c))が大きくなるようにすればよい。
実際にI(c; G(z,c))を直接最大化しようとするとP(c|x)がわからなくてはならず難しい。別のQ(c|x)を定義して下限を求められるのでそれで最大化することが可能。(数式が続く)
結果としてQ(c|X)をNeuralNetowrkで表現すればよいが、これはDiscriminatorの最終層に全結合層を加えたものを用意すればよい。計算コストも通常のGANから大きく増えることなく実現できる。入力のcがわかっているのはFakeの時なので、当然Qを訓練できるのは偽物のみ。
新しくパラメータとしてλが導入されたが、これは基本的に1でよいGANは訓練が難しいのでInfoGANはDC-GANをベースに実装した。