解答と解説を表示
<h4>敵対的生成ネットワーク (GAN) とその学習プロセス</h4>
<p>敵対的生成ネットワーク (Generative Adversarial Network, GAN) は、教師なし学習の一種であり、主に新しいデータを生成するために用いられる深層学習モデルのフレームワークです。Ian Goodfellowらによって2014年に提案されました。GANの最大の特徴は、<strong>生成器 (Generator, G)</strong> と <strong>識別器 (Discriminator, D)</strong> という2つのニューラルネットワークが互いに競い合いながら学習を進める点にあります。</p>
<div class="section">
<h5>生成器 (Generator, G) の役割</h5>
<p>生成器 G は、ランダムなノイズベクトル \(\mathbf{z}\) を入力として受け取り、本物のデータに似せた<strong>偽のデータ \(G(\mathbf{z})\)</strong> を出力します。生成器の目標は、識別器 D を騙せるほど本物に近いデータを生成することです。</p>
</div>
<div class="section">
<h5>識別器 (Discriminator, D) の役割</h5>
<p>識別器 D は、入力されたデータが<strong>本物のデータセット \(p_{data}(x)\) から来たものなのか</strong>、それとも<strong>生成器 G が作った偽物 \(G(\mathbf{z})\) なのか</strong>を判定する二値分類器です。識別器の目標は、本物のデータと偽物のデータを可能な限り正確に見分けることです。入力 \(x\) に対して、それが本物である確率 \(D(x)\) を出力します。</p>
</div>
<div class="section">
<h5>敵対的損失関数 (価値関数 V(D, G))</h5>
<p>GANの学習は、以下の<strong>価値関数 (Value Function) V(D, G)</strong> を用いた<strong>ミニマックスゲーム (Minimax Game)</strong> として定式化されます。</p>
<div class="formula">
$ \min_G \max_D V(D, G) = \mathbb{E}_{x \sim p_{data}(x)}[\log D(x)] + \mathbb{E}_{z \sim p_z(z)}[\log(1 - D(G(z)))] $
</div>
<p>この式の意味を分解してみましょう。</p>
<ul>
<li><strong>\(\mathbb{E}_{x \sim p_{data}(x)}[\log D(x)]\):</strong> 本物のデータ \(x\) に対する識別器の出力 \(D(x)\) の対数。識別器はこれが1に近づくように(本物を本物と識別するように)学習します。</li>
<li><strong>\(\mathbb{E}_{z \sim p_z(z)}[\log(1 - D(G(z)))]\):</strong> 生成された偽データ \(G(z)\) に対する識別器の出力 \(D(G(z))\) を用い、\(1 - D(G(z))\) の対数を計算したもの。識別器は \(D(G(z))\) が0に近づくように(偽物を偽物と識別するように)学習します。</li>
</ul>
<p><strong>識別器 D の目的:</strong> D は、上記の2つの項の合計、すなわち価値関数 \(V(D, G)\) 全体を<strong>最大化 (\(\max_D\))</strong> しようと学習します。これにより、本物と偽物の識別能力を高めます。</p>
<p><strong>生成器 G の目的:</strong> G は、識別器 D を騙すことを目的とします。つまり、自身が生成したデータ \(G(z)\) を識別器 D に本物と誤判定させようとします (\(D(G(z))\) を1に近づける)。これは、価値関数 \(V(D, G)\) の第二項 \(\log(1 - D(G(z)))\) を<strong>最小化</strong>することに相当します。結果として、生成器 G は価値関数 \(V(D, G)\) 全体を<strong>最小化 (\(\min_G\))</strong> するように学習します。</p>
<p>したがって、識別器 D は価値関数を最大化し、生成器 G は価値関数を最小化しようとするため、<strong>選択肢 B が正しい</strong>組み合わせとなります。</p>
</div>
<div class="key-point">
<div class="key-point-title">GAN学習のポイントと課題 (再掲)</div>
<ul>
<li><strong>交互最適化:</strong> D と G の最適化は交互に行われることが多いです。</li>
<li><strong>非飽和損失:</strong> 実際には G の学習には \(\min_G \mathbb{E}_{z \sim p_z(z)}[-\log D(G(z))]\) が使われることが多いです(目的は同じく \(D(G(z))\\) を最大化すること)。</li>
<li><strong>ナッシュ均衡:</strong> 理論的な収束点では \(p_g = p_{data}\) かつ \(D(x) = 1/2\) となります。</li>
<li><strong>学習の不安定性:</strong> モード崩壊などの課題があります。</li>
</ul>
</div>