はじめに
NIPS2018にacceptされている T. Kurutach らの「Learning Plannable Representations with Causal infoGAN」をまとめてみた。
NIPSの該当ページはこちら。
https://nips.cc/Conferences/2018/Schedule?showEvent=11834
開催前なので論文は貼られてないが、arXivには既にあがってる。
https://arxiv.org/abs/1807.09341
概要
- infoGANの仕組みを使ってロボットなどの軌跡を推定するモデル
まずはinfoGANのまとめ
infoGANの特徴
MNISTのデータで考える。
vanilaなGANではノイズzからMNISTの0〜9を生成するものの、zをどういった値にしたら特定の数字(例えば5)を生成できるかは、いろいろ試さないとわからない。
(0.3, 4.5, -2.2)にしたら5っぽい。(0.2, 4.5, -2.2)にしたら更に5っぽくなった・・・etc。
infoGANではzのそれぞれの次元が数字の1、2、・・・5、・・・9に対応するように学習させることが目的。
GANのminmaxな式
まずGANでお決まりの minmax な式。
\min_G \max_D V(G,D) = \min_G \max_D \mathbb{E}_{o \sim P_{data}} [\log D(o)] + \mathbb{E}_{z \sim P_{noise}} [\log (1 - D(G(z)))]
infoGANのminmaxな式
infoGANではこれに正則化項を加える。まず入力をノイズzと状態 $s \sim P(s)$ に分離した上で
\min_G \max_D V(G,D) - \lambda I (s;G(z,s))
とする。
ここで $I (s;G(z,s))$ は相互情報量で
I (s;G(z,s)) = H(s) - H(s \ | \ G(z,s)) = H(G(z,s)) - H(G(z,s) \ | \ s)
一番右側で考えると、$G(z,s)$ のエントロピーと、s を知った後の $G(z,s)$ のエントロピーとの差。
相互情報量項の意味するところ
例えば、s を指定せずに $(z,s)$ をGeneratorに入力すると、出力される $G(z,s)$ は以下の図のように分布の広がりが大きくなる。
一方、 s を指定して $G(z, s_i)$ をGeneratorに入力すると、出力する $G(z,s_i)$ の分布は下図のように限定された領域になる。
そうすると s を指定した場合のエントロピー $H(G(z,s) \ | \ s)$ は s を指定しない場合のエントロピー $H(G(z,s))$ より大きくなるだろう。
見方を変えると、前者と後者のエントロピーの差
I (s;G(z,s)) = H(G(z,s)) - H(G(z,s) \ | \ s)
を大きくするには、入力 s によって出力の $G(z, s)$ がある限定された領域になればなるほどいい。
s を10種類の値にすると、それぞれの $s_i$ がMNISTの数字に相当するように学習されるだろう。
変分な相互情報量
I (s;G(z,s)) = H(s) - H(s \ | \ G(z,s))
で考える。$H(s \ | \ G(z,s))$ が直接求まらないので、代わりに変分な値を使う。(数式間違ってたら連絡下さい)
\begin{eqnarray}
I (s;G(z,s)) &=& H(s) - H(s \ | \ G(z,s)) \\
&=& \mathbb{E}_{x \sim G(z,s)}[\mathbb{E}_{s' \sim P(s|x)}[\log P(s'|x)]] + H(s) \\
&=& \mathbb{E}_{x \sim G(z,s)}[\mathbb{E}_{s' \sim P(s|x)}[\log \frac{P(s'|x)}{Q(s'|x)} Q(s'|x) ]] + H(s) \\
&=& \mathbb{E}_{x \sim G(z,s)}[\mathbb{E}_{s' \sim P(s|x)}[\log \frac{P(s'|x)}{Q(s'|x)} + \log Q(s'|x) ]] + H(s) \\
&=& \mathbb{E}_{x \sim G(z,s)}[\mathbb{E}_{s' \sim P(s|x)}[\log \frac{P(s'|x)}{Q(s'|x)}] + \mathbb{E}_{s' \sim P(s|x)}[\log Q(s'|x) ]] + H(s) \\
&=& \mathbb{E}_{x \sim G(z,s)}[D_{KL}(P(\cdot | x) \ \| \ Q(\cdot | x)) + \mathbb{E}_{s' \sim P(s|x)}[\log Q(s'|x) ]] + H(s) \\
\end{eqnarray}
ここで KL-divergenceは正なので、これを取っ払って
\begin{eqnarray}
I (s;G(z,s)) &=& \mathbb{E}_{x \sim G(z,s)}[D_{KL}(P(\cdot | x) \ \| \ Q(\cdot | x)) + \mathbb{E}_{s' \sim P(s|x)}[\log Q(s'|x) ]] + H(s) \\
&\geq& \mathbb{E}_{x \sim G(z,s)}[\mathbb{E}_{s' \sim P(s|x)}[\log Q(s'|x) ]] + H(s) \\
\end{eqnarray}
$H(s)$ をとりあえず固定して考えると $I (s;G(z,s))$ を最大化させるには
\mathbb{E}_{x \sim G(z,s)}[\mathbb{E}_{s' \sim P(s|x)}[\log Q(s'|x) ]]
を最大化させればいい。 結局
\begin{eqnarray}
I (s;G(z,s)) &\geq& \mathbb{E}_{x \sim G(z,s)}[\mathbb{E}_{s' \sim P(s|x)}[\log Q(s'|x) ]] + H(s) \\
&=& L_I (G,Q)
\end{eqnarray}
となるので、変分下限 $L_I (G,Q)$ を最大化させることで $I (s;G(z,s))$ を最大化させる。
$Q(s'|x)$ は実用上、Discriminatorから分岐させたモデルとする。
causal infoGAN の目的関数
reference
[1] Xi. Chen, et. al. "InfoGAN: Interpretable Representation Learning by Information Maximizing Generative Adversarial Nets"
[2] L. Maaten, et. al. "Visualizing Data using t-SNE"
書きかけ