GAN には、一般的な障害モードがいくつかあります。これらの一般的な問題はすべて、現在調査中です。これらの問題はいずれも完全に解決されていません。ここでは、ユーザーが試した方法をいくつかご紹介します。
消失する勾配
調査によると、ディスкриминエータが優れすぎると、勾配が消失するため、生成ツールのトレーニングが失敗する可能性があります。つまり、最適な識別子は、生成元が進歩するのに十分な情報を提供しません。
修正の試み
- Wasserstein 損失: Wasserstein 損失は、ディスкриминエータを最適化までトレーニングしても勾配が消失しないように設計されています。
- 修正されたミニマックス損失: 元の GAN 論文では、勾配消失に対処するためにミニマックス損失の修正が提案されています。
モードの閉じる
通常、GAN はさまざまな出力を生成する必要があります。たとえば、顔生成ツールへのランダムな入力ごとに異なる顔が生成されるようにします。
ただし、生成ツールが特に信頼できる出力を生成すると、その出力のみを生成するように学習する可能性があります。実際、生成者は常に、識別子にとって最も信頼できると思われる 1 つの出力を見つけようとします。
生成元が同じ出力(または少数の出力セット)を繰り返し生成し始める場合、ディスкриминレータのベスト ストラテジーは、常にその出力を拒否することを学習することです。ただし、次世代の識別子が局所最小値で停止し、最適な戦略を見つけられない場合、次の生成元の反復処理で現在の識別子に対して最も妥当な出力を見つけるのは簡単すぎます。
ジェネレータの各反復処理で特定の識別子に対して過剰最適化が行われ、識別子はトラップから抜け出す方法を学習できません。その結果、ジェネレータは少数の出力タイプをローテーションします。このタイプの GAN の失敗は、モードの崩壊と呼ばれます。
修正の試み
次のアプローチでは、単一の固定ディスクリミネータに対して最適化されないようにすることで、生成元のスコープを強制的に広げようとします。
- Wasserstein 損失: Wasserstein 損失は、勾配消失を心配することなく、ディスкриминエータを最適化までトレーニングできるようにすることで、モード崩壊を軽減します。ディスкриминエータがローカル最小値で停止しない場合、ディスкриминエータは、ジェネレータが安定する出力を拒否するように学習します。そのため、ジェネレータは新しいことを試す必要があります。
- 展開された GAN: 展開された GAN は、現在の識別子の分類だけでなく、将来の識別子 バージョンの出力も組み込んだ生成元損失関数を使用します。したがって、生成ツールは単一の識別子に対して過度に最適化することはできません。
収束しない
トレーニングのモジュールで説明したように、GAN は収束に失敗することがよくあります。
修正の試み
研究者は、次のようなさまざまな正則化を使用して GAN の収束を改善しようとしてきました。
- 識別子入力へのノイズの追加: Toward Principled Methods for Training Generative Adversarial Networks などをご覧ください。
- 弁別子重みをペナルティ化する: 正則化による生成敵対ネットワークのトレーニングの安定化などをご覧ください。