機械学習
MachineLearning
DeepLearning
論文読み

GLO(Optimizing the Latent Space of Generative Networks)の解説

Discriminatorが不要なGANと聞いて、早速まとめてみました。
しかし、Discriminatorが無い時点でAdversarialな要素が皆無なので、厳密にはGANの一種では無いですね。

元論文
https://arxiv.org/abs/1707.05776

概要

GANはAdversarialな学習をGeneratorとDiscriminatorが行う。
双方のモデルはミニマックスゲームの最適化式で表現されるが、学習が不安定であるという問題点がある。
そこで学習にDiscriminatorを用いずに、シンプルな更新式を用いることで学習を安定化させることに成功した。

GLOの最大の特色として、学習対象がパラメータθだけでなく入力ノイズZにも及ぶということがある。
著者は「Discriminatorの無いGAN」「encoderの無いオートエンコーダー」とも言えるよねと言っている。

目的関数

学習データセット(画像):{$x_{1}, ... ,x_{N}$} $x_{i} \in X$  $dim=[3,w,h]$
ノイズ:{$z_{1}, ... ,z_{N}$} $z_{i} \in Z$  $dim=[d]$

この二つをペアにして、以下の形式のデータセットを得る。
{$(z_{1}, x_{1}), ... ,(z_N, x_{N})$}

ノイズ空間Zから画像空間Xへの射影を$g_{\theta}$(パラメータ$\theta$を持つGenerator)とする。
以下の式を$z_i, \theta$について最小化するように、学習を行う。

$$
\min_{\theta\in\Theta} \frac{1}{N} \sum_{i=1}^{N}\min_{z_i\in Z} l(g_\theta(z_i), x_i)
$$

注目すべきなのが、$z_i, \theta$ の両者ともに目的関数の最小化を目指しているということである。これにより、従来のGANの問題点であった、「学習がどの程度進んでいるのかがlossを見ても分からない」ということが無く、lossの値が減少しているかどうかで学習の進み具合をある程度知ることが出来る。
ここでl()はloss functionのことである。

Zについて

latent spaceのZを考える際に、Generatorによる写像がリプシッツ写像になるよう以下の処理を行う。

  • Zの事前分布は正規分布を用いる。
  • Zの空間を半径1の閉単位超球に収まるように正規化する。
  • zは学習の度にノルムが変わるので、単位球に収まるように正規化する必要がある。(Zの次元がdのときは$\sqrt d$ で割れば良い。論文では「余程のことが無い限りzが半径$\sqrt d$の球の外側に出てしまうことは無いよね」と述べられている。)

損失関数

θとzは、それぞれ別の損失関数を用いて、back propagationによって最適化がされる。

θの損失関数

損失関数については色々考えられるが、最小二乗誤差を用いた場合は、ぼやけた画像が生成されるようになってしまうらしい。
GANではDiscriminatorの真偽判定の確率でlossが評価されるが、本モデルではそれが出来ないので、式からも分かるように生成画像と本物の画像をペア同士で直接評価している。
ピクセルごとに最小二乗誤差を取って評価する手法は、位置ズレにはとても過敏であるのに対し、微小なガウシアンノイズに対しては寛容であるため、生成画像がぼやけてしまったと考えられる。
(ガウシアンノイズはホワイトノイズとも呼ばれ、画像をぼやけさす元凶となる。)
余談として損失関数に最小二乗誤差を用いたLSGANが上手くいく理由は、GANはDiscriminatorを介して誤差を評価しているからである。

GLOの論文内では損失関数として、位置の微小なシフトに寛容なLaplacian Pyramid Lap1 lossを用いている。

$$
\begin{equation}
Lap_1(x, x') = \sum_{j} 2^{-2j}||L^j(x) - L^j(x')||_1
\end{equation}
$$

Lの肩に乗っているjは「j番目のLaplacian Pyramid representation of x」を表している。
因みにLap1は、小規模のDiscriminatorでのEarth mover's distance(EMD)と一致するらしい。(WGANでは生成分布と元のデータ分布のEMDを最小化しようとしている)

zの損失関数

ノイズ復元などで用いられる再構築誤差を使用する。再構築誤差は具体的には以下の式で表される。

$$
\begin{equation}
||AG(z) - x||_2 + L(z)
\end{equation}
$$

A : measurement matrix, L : 正規化項

その他

最適化手法として、論文ではSGDを用いて学習させたと言っている。SGDの学習係数は$\theta$が1で$z$が10となっている。それ以外のネットワークの構造だったり、ハイパーパラメーターだったりは、DCGANの論文で用いられているものが使われているらしい。

生成画像はこんな感じになるそうです。上から元の画像、生成画像(zの次元:100)、生成画像(zの次元:512)になっています。

Screen Shot 2017-07-20 at 22.45.04.png

GANでおなじみの画像同士の演算も、z同士のベクトルの引き算や足し算で実現できるみたいです。interpolation(画像のモーフィング)や、conditional generationも可能らしい。