ディープラーニング編

RNNやCNN、Transformerの理解を問います

GANの基本: 敵対的損失関数 レベル1

敵対的生成ネットワーク(GAN)は、生成器(Generator)と識別器(Discriminator)という2つのネットワークを競わせることでデータ生成を行います。標準的なGANにおいて、識別器 D と生成器 G が最適化しようとする価値関数 V(D, G) は、以下の式で表されます。<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)))]

問題文がここに表示されます。

lt;/div>\n\nこのミニマックスゲームにおいて、識別器 D と生成器 G の目的として最も適切な組み合わせを選択してください。

解説
解答と解説を表示
<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>
問題 1/1
カテゴリ一覧に戻る