オムライスの備忘録

数学・統計学・機械学習・プログラミングに関することを記す

【深層学習】Conditional GAN

この記事の読者

深層学習・DeepLearningを利用している
「Conditional GAN」の基本的な内容について知りたい.


この記事では、Conditional GANの基礎概念のまとめる.

Index

Conditional GAN とは

深層学習を用いた生成アルゴリズム GAN の応用手法.

従来の GAN の枠組みに、条件付き確率の概念を導入した手法.

Architecture

従来のGANと同様、Generator と Discriminator の2つで構成されている.

改善点としては、Generator と Discriminator の入力の情報としてラベル情報  y が追加される点.

Generator

従来の GAN 同様、ランダムなベクトル (潜在変数)  z を利用する.

 z\ \sim\ p_{z}(z)



改善点として、クラスの情報  yも Generator に加える.

  • 入力1 : (ランダムなノイズ) ベクトル  z
  • 入力2 : ラベル情報  c
  • 出力 : 生成されたデータ  G(z\ |\ y)



クラス情報の連結

(ランダムなノイズ) ベクトル  zラベル情報  y の連結の方法の1つとしては、
ラベル情報  yone-hotベクトルとして連結する方法がある.

ベクトルが  100 次元、ラベルの種類が  10 種類だとすると、入力は  110 次元のベクトルになる.

Discriminator

Discriminator も Generator 同様、入力にラベル情報  y を加える.

  • 入力1 : データ  x (本物 or 偽物)
  • 入力2 : ラベル情報  y
  • 出力 : 本物である確率値  D(x\ |\ y)



クラス情報の連結

入力データとラベル情報の連結の方法の1つとしては、
ラベル情報  yone-hot ベクトルとして、入力データと連結する方法がある.

例えば、入力が画像だとする.

画像のサイズが (256 x 256 x 3) で、ラベルの種類が10種類だとすると
(256 x 256 x 10) のテンサーを用意して、対応するラベルの行列の値を1、その他の行列を0に設定する.

その後、画像と連結することで (256 x 256 x 13) のテンサーを入力とする方法などが考えられる.

損失関数

従来の GAN の損失関数の枠組みに、条件付き確率を導入する.


\begin{align}
V(D, G)\ =&\ E_{\ x \sim p_{data}(x)}\ [\ \log(\ D(x\ |\ y)\ )\ ] \\
+&\ E_{\ z\ \sim\ p_{z}(z)}\ [\ \log(\ 1 - D(\ G(z\ |\ y)\ )\ )\ ]
\end{align}

 \displaystyle \min_{G} \max_{D} V(D, G)

画像の例

mnist の画像を例として考える.

従来のGANのでは、以下のように作用.

  • Generator は、(ランダムノイズ)ベクトル から0 ~ 9のどれかの画像を生成
  • Discriminator は、mnist の画像かどうかを判別



対して、Conditional GAN では、以下のように作用.

  • Generator は、(ランダムノイズ)ベクトルとラベル情報から、ラベルに対応する画像を生成
  • Discriminator は、ラベル情報をもとに、mnist の画像かどうかを判別

まとめ

  • Conditional GAN は、従来のGANのアーキテクチャに、ラベル情報を加えた
  • ラベル情報を入力する方法はタスクやデータ形式によるので注意が必要

参考

  • Conditional Generative Adversarial Nets
    • [2014]
    • Abstract
    • 3 Conditional Adversarial Nets
      • 3.2 Conditional Adversarial Nets
    • arxiv.org

Web サイト

  • 今さら聞けないGAN(6) Conditional GANの実装

  • CGAN (Conditional GAN):条件付き敵対的生成ネットワーク