このシリーズではE資格対策として、シラバスの内容を項目別にまとめています。

E資格まとめ

試験概要 ディープラーニングの理論を理解し、適切な手法を選択して実装する能力や知識を有しているかを認定する。 1.応用数学 (1)確率・統計 (2)情報理論 2.機…

GANの概要

GAN

GANは二つのネットワーク、生成ネットワーク(generator)と識別ネットワーク(discriminator)があります。生成ネットワークはランダムなノイズを入力とし、それを元に新たな画像を生成します。一方、識別ネットワークは生成された画像が本物のデータセットの一部であるか、生成ネットワークによって生成されたものであるかを区別します。

これら二つのネットワークは互いに競争し、それぞれのパフォーマンスを改善していきます。生成ネットワークは識別ネットワークを騙すために、より本物に近い画像を生成しようとします。一方、識別ネットワークは生成ネットワークに騙されないように、生成された画像と本物の画像をより精度高く区別しようとします。このプロセスが繰り返されることで、最終的には非常にリアルな画像を生成することができるようになります。

特に、DCGAN(Deep Convolutional GAN)やStyleGANなどのGANの派生形は、画像生成タスクで広く使われています。これらは元のGANの概念を拡張し、より深いネットワーク構造や特別な訓練テクニックを導入して、より高解像度で詳細な画像の生成を可能にしています。

DCGAN

DCGANは、GAN (Generative Adversarial Networks) の一種で、ディープラーニングを用いて画像生成を行うモデルです。GANは、生成ネットワーク(Generator)と判別ネットワーク(Discriminator)の2つのネットワークから成り立っています。

  • 生成ネットワーク(Generator): ランダムなノイズからデータ(ここでは画像)を生成します。生成ネットワークの目的は、生成した画像が本物の画像と区別できないほどになることです。
  • 判別ネットワーク(Discriminator):入力された画像が本物の画像か生成ネットワークが生成した画像かを判断します。判別ネットワークの目的は、本物の画像と偽物の画像を正確に区別することです。

DCGANでは、生成ネットワークと判別ネットワークに畳み込みニューラルネットワーク(Convolutional Neural Networks, CNN)が使用されます。これにより、より高品質な画像を生成することができます。

これら二つのネットワークは、次のような相反する目的を持って訓練されます(これをミニマックスゲームと呼びます):

  1. 生成ネットワークは、判別ネットワークが偽物の画像を本物と誤判断することを目指します。
  2. 一方、判別ネットワークは、生成ネットワークが作成した偽物の画像を正確に見破ることを目指します。

この相反する目的のため、生成ネットワークと判別ネットワークはお互いを改善し合い、結果的にはより高品質な画像生成が可能になります。

この訓練プロセスは、以下の数式で表されます:

$$ \min_G \max_D V(D, G) = \mathbb{E}_{\mathbf{x} \sim p_{\text{data}}(\mathbf{x})}[\log D(\mathbf{x})] + \mathbb{E}_{\mathbf{z} \sim p_{\mathbf{z}}(\mathbf{z})}[\log (1 – D(G(\mathbf{z})))] $$
  • D(x)は判別ネットワークが画像xを本物と判断する確率です。
  • G(z)は生成ネットワークがノイズzから生成した画像です。
  • 判別ネットワークは、本物の画像xについてはD(x)を最大化し、生成ネットワークが生成した画像については1−D(G(z))を最大化しようとします。
  • 一方、生成ネットワークは、判別ネットワークが生成した画像G(z)を本物と判断する確率D(G(z))を最大化しようとします。

DCGANでは特にネットワークの構造が異なるわけではないので、学習の数式はGANと同じです。ただし、ネットワークの構造や学習方法に関する一定のガイドライン(全結合層を使わない、バッチ正規化を使うなど)が提案されています。

Conditionnal GAN


Conditional GAN(cGAN)は、生成ネットワーク(Generator)が特定の条件に基づいてデータを生成するように拡張されたGAN(Generative Adversarial Networks)の一種です。これにより、ネットワークは特定のクラスの画像を生成するように制御できます。

cGANの設定では、生成ネットワークと判別ネットワークの両方に条件付けられた情報(例えば、ラベルやデータ)が追加で入力されます。これにより、生成ネットワークは特定の条件下でのデータ生成を学習し、判別ネットワークはそのデータが本物であるか(すなわち、そのデータが特定の条件に適合するか)を判断します。

生成ネットワークGと判別ネットワークDの訓練は、次のような目的関数に従って行われます:

$$ \min_G \max_D V(D,G) = \mathbb{E}_{x \sim p_{\text{data}}(x)}[\log D(x|y)] + \mathbb{E}_{z \sim p_z(z)}[\log(1 – D(G(z|y)))] $$

ここで、

  • yは条件となる情報(例えば、クラスラベル)です。
  • D(xy)は、画像xが条件yを満たす本物のデータであると判別ネットワークが判断する確率を表します。
  • G(zy)は、条件yを満たすように生成ネットワークがノイズzから生成した画像を表します。

この訓練プロセスにより、生成ネットワークは条件に対応したデータの生成を学習し、判別ネットワークはそのデータが条件に対応しているかを判断する能力を獲得します。その結果、生成ネットワークは条件に基づいた特定のデータを生成する能力を持つようになります。

まとめ

最後までご覧いただきありがとうございました。