Help us understand the problem. What is going on with this article?

GANの数式を理解する

More than 1 year has passed since last update.

GANを理解したかったのですが、数式の意味がわからなかったので調べました。5時間くらいかけて、なんとなくわかった気がしたので書いておきます。

概要

今回は、こちらのGAN論文の数式の意味を調べました。
32F3BF02-7D1C-45F2-9062-C5685E5BB2F1.jpeg

DはDiscriminator(識別器)、GはGenerator(生成器)を意味します。Dを騙すG, Gに騙されないDを目指して、DとGを学習させていくようです。

左辺

左辺は、Vを最大にするDと、Vを最小にするGを選択した際の、Vの値という意味でしょうか?

ミニマックス問題というものが関係しているようなので、wikipediaで調べてみると、

ミニマックス法(みにまっくすほう、英: minimax)またはミニマックス探索とは、想定される最大の損害が最小になるように決断を行う戦略のこと

なので、この数式をミニマックス問題として理解すると、DがVを最大化する場合に「Vを最小にするG」を選ぶ問題、となるようです。
Gの学習がミニマックス問題に当たる気がします。

右辺

Dは0~1の値を返すモデルだと理解しました。
正解ラベルは、オリジナルのデータには1、Gが生成したデータには0が振られている、という認識です。

log(0)とlog(1)の計算結果

log(D)がどんな特徴を持つのか、調べました。Dは0~1の値を返すので、D=1とD=0の場合の結果を確認してみます。

log(1) = 0
log(0) = -∞

つまり、1に近いほど値が大きくなり(0に近づき)、0に近いほど値が小さくなる(-∞に近づく)という特徴があるようです。

右辺第一項

xは教師データなので、1に近い値を返せるほど正しいモデルとなります。
logD(x)は、D(x)が1に近いほど値が0に近づき、0に近いほど小さい値(-∞に近い値)になります。

右辺第二項

Gが生成したデータなので、Dは0に近い値を返せるほど、正しいモデルとなります。
log(1-D(G(z))は、D(G(z))が1に近いほど小さい値になり、0に近いほど大きな値(0)に近づきます。

学習方法

冒頭のGANの論文の説明を読むと、DとGの学習を交互に進めるようです。
gan.png

Dの学習

Gを固定して、Vが最大化するように学習します。右辺全体を最大化します。

Gの学習

Dを固定してVが最小化するように学習します。右辺の第二項だけを最小化するようです。

終わりに

雰囲気はわかった気がするので、コードとして実装してみたいと思います。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした