GAN には、いくつかの一般的な障害モードがあります。よくある問題はすべて、アクティブな研究の領域です。これらの問題はすべて完全に解決されたわけではありませんが、ユーザーが試したことはいくつかあります。
勾配消失
調査から、判別関数が良すぎると、勾配が消失するために発電機トレーニングが失敗する可能性があることがわかりました。実際には、最適な識別器が生成ツールが進行するのに十分な情報を提供しません。
問題解決の試み
- Wasserstein 損失: Wasserstein 損失は、判別器を最適なものまでトレーニングした場合でも、勾配が失われないようにするように設計されています。
- ミニマックス損失の修正: オリジナルの GAN の論文では、勾配の消失に対処するためにミニマックス損失の修正を提案しました。
モードを折りたたむ
通常は、GAN でさまざまな出力を生成します。たとえば、顔生成ツールへのランダム入力ごとに別の顔があるとします。
ただし、ジェネレータが特に現実的な出力を生成する場合、ジェネレータはその出力のみを生成するように学習することがあります。実際には、ジェネレータは常に、判別器にとって最も妥当と思われる出力を 1 つ取得しようとします。
ジェネレータが同じ出力(または少数の出力)を繰り返し生成する場合は、その出力を常に拒否することをおすすめします。ただし、次世代のディスクリミネータがローカル最小値に隠れて最適な戦略を見つけられない場合は、次のジェネレータの反復処理が現在のディゾレータに最も適した出力を見つけるのは簡単ではありません。
生成ツールのイテレーションは、特定の判別要素に合わせて過度に最適化され、判別機能がトラップから抜け出して学習を行うことは決してありません。その結果、ジェネレータは少数の出力タイプのセットをローテーションします。この形式の GAN の障害はモード折りたたみと呼ばれます。
問題解決の試み
以下のアプローチでは、ジェネレータが単一の固定ディスクリミリに合わせて最適化しないようにすることで、ジェネレータがスコープを強制的に広げようとしています。
- Wasserstein 損失: Wasserstein 損失は、勾配の消失を気にすることなく、判別器を最適化するためにトレーニングすることで、モードの折りたたみを軽減します。判別器がローカル 最小値で停止しない場合、ジェネレータが安定する出力を拒否するように学習します。ジェネレータは、新しいものを試す必要があります。
- ロールアウトされた GAN: ロールアウトされた GAN は、現在のディスクリミエータの分類だけでなく、将来のディスクリミネータ バージョンの出力も取り込んだジェネレータ損失関数を使用します。そのため、ジェネレータでは、単一の判別要素に対して過剰に最適化することはできません。
収束失敗
トレーニングに関するモジュールで説明しているように、GAN は多くの場合、収束に失敗します。
問題解決の試み
研究者は、次のようなさまざまな形式の正則化を使用して GAN の収束を改善しようと試みました。
- 判別入力へのノイズの追加: たとえば、敵対的生成ネットワークをトレーニングするための原則の手法をご覧ください。
- 識別器の重みの均衡化: たとえば、正則化による敵対的生成ネットワークのトレーニングの安定化をご覧ください。