#初めに
GANの一種にWasserstein GAN(WGAN)と呼ばれるものがあります。実際に実装したことがある人なら分かる通り、WGANはDCGANと比べて圧倒的に学習が安定しています。WGANの実装はLossと訓練の回数をちょちょいと変えれば良いだけで、**簡単に実装できます。**しかし、なぜ急にLossを変えたりしたりしたのでしょうか。**どうやってWGANのLossにたどり着いたのでしょうか。**今回は論文からそういった過程を含めて解説しようと思います。
この記事を書くのに用いているスライドの画像はSlideShareにあげています。
WGANに至るまで
WGANの論文では、WGANに至るまでに、非教師学習、GANについての話から展開していっています。今回はこの順に沿って解説も進めていきます。
非教師学習
まずDeep learningの基本的な戦略について、まず世の中にある画像などの対象はとても素晴らしい完全無欠な確率密度分布からサンプリングされているものであると仮定します。学習するモデルは、そういった真の確率分布を模倣することを目指します。
じゃあどうやって真の確率分布を模倣するか、基本的には確率密度関数同士の距離を表してくれるKullback–Leibler divergence(KLD)を最小化させるという問題に帰着させます。
普段私達がよく使うCross Entropy Loss もKLDを最小化させることに対応しています。
しかし、常に真の確率分布の存在を仮定しても良いのでしょうか。
画像などの対象が低次元の多様体から構成されている状況が多く、そういったケースではKLDがうまく定義できないという問題が起こってしまいます。つまり、KLDの最小化を考えることが問題の解決にならない状況が多いということです。私の数学的素養が足りないため、ここをクリアに解説はできませんが、「低次元の多様体から構成されている」を画像で例えると、画像データが、画像のピクセル数×RGBの次元に存在する点であると考えると、画像全体を考えても、その超空間に局所的にしか点が存在しないということを言っています。(RGBの値をランダムに決めて出力してもノイズが出るばかりで、猫の画像とかが生まれたりする確率はほぼないわけです。)
こういった問題に対処するために先人たちはノイズ項を追加するという手段を取りました。(なぜノイズを入れれば大丈夫なのかは分かりません・・・)しかし、この方法には弱点が存在ます。それは画像がぼやけてしまうことでした。
そこで、加えられたものをノイズではなく引数(潜在変数)と考えて、直接画像を生成する方法が取られました。こういった手法をとれば、諸々の問題を解決できます。
こういったアプローチの好例がGANやVAEであったというわけです。
GANの実装とかでよく、潜在変数をnoise
と書いている実装があるのもこのためでしょうね。
GAN
先程、GANやVAEを挙げましたが、それぞれには図のような特徴があります。
一見すると良い点が多いGANに軍配が上がりますが、非常に学習が不安定なのはGANの大きな欠点であります。
そこでWGANの論文では、GANの安定性を上げるためにGANの収束性、それに直結するモデルの距離関数に着目しました。
もちろんDeep leearningの学習は微分の値を用いて進めていくため、距離関数の連続性が非常に重要であるということは容易に想像できます。
そこで新たな距離関数を探して行くわけですが、どうやら連続性という観点ではEM Distance(Wasserstein Distance)が優れている模様であるとわかりました。よってEM Distanceを用いたGANを考えます。
WGAN
しかし、EM Distanceをよく見てみると式の中にinfが存在しています。無限大とコンピュータの相性はすこぶる悪いため、このままではEM Distanceを使用することはできないのですが、数学的に関数(GeneratorやCritic(Discriminator))がリプシッツ連続ならinfをsupに変形できるため、コンピュータが計算可能になります。
じゃあどうやってリプシッツ連続にするのかというと、WGANの論文では重みをクリッピングするという手法をとっています。しかし、この方法はWGANの著者が論文中でterribleと評している通り、デメリットが存在します。これに関しては後にGradient Penaltyという手法で解決されています。
WGANのアルゴリズムについて、これに至るまでに様々な考察がなされていましたが、通常のGANのプロセスと異なる部分は青色にハイライトした部分だけです。WGANの成果も素晴らしいものだと思いますがその過程にある考えもしっかりと理解して糧にしていきたいですね。
WGANは何が優れているか
この図では通常のGANやWGANの勾配の値がそれぞれ赤線、水色線になっています。図を見るに、サンプルが存在する点(緑点)ではWGANの勾配が線形に近く0にはならないため、勾配消失を起こし得ないということがわかります。また、勾配消失を起こし得ないため、どんなにCriticが強くなろうと勾配が存在するため、**CriticとGeneratorのバランスを考えなくて良くなります。**また、この勾配が消失しないというのはモード崩壊を防ぐ役割があります。というのも、**モード崩壊はCriticが強すぎたり弱すぎたりして形が固定されているということが原因とされています。**よって、勾配消失が起こらないWGANではCriticの形が固定されているということがないため、モード崩壊が起こりません。
実験結果
実験結果ではステップ毎のWD(Wasserstein Distance)とJSD(Jensen-Shannon Divergence)の値と生成画像が示されています。この図からはどちらも生成画像の質は変わっていっていますが、JSDの値が早々に飽和していくのと違ってWDの値はコンスタントに下がり続けていることがわかります。よって、WDの値と画像の質に相関があるということが言えます。しかし、ここで留意したいのが、WDの値がGeneratorを評価する普遍的な指標ではないということです。
まとめ
WGANの成果は図にまとめられます。個人的にはやはりモード崩壊が起こらないというのが大きいと思います。モード崩壊はハマったら抜け出せない泥沼なので・・・