2017-03-09 8 views
2

DCGANの人々の実装、特にテンソルフローのthis oneを読んでいます。その実装においてGenerative Adversarial Netsで弁別者の損失と発電機の損失をどのように解釈するか?

、著者は識別器の、以下に示される発電機、(画像がhttps://github.com/carpedm20/DCGAN-tensorflowから来る)の損失を描く:

enter image description here

enter image description here

の損失の両方弁別器および発生器はいかなるパターンにも従わないようである。トレーニング反復の増加に伴って損失が減少する一般的なニューラルネットワークとは異なります。どのようにGANを訓練するときに損失を解釈するのですか?

+0

私はあなたが判断子ではなく、決定子であると思います。 –

+0

@MatiasValdenegro指摘してくれてありがとう。 – shapeare

答えて

2

GANについて言わせていただいたように、損失は非常に直感的ではありません。ほとんどの場合、ジェネレーターとディスクリミネーターは互いに競合しているため、一方での改善は、競合他社などを壊した受信損失をよりよく知るまで、もう一方の損失を大きくすることを意味します。

十分な頻度で(データと初期化に応じて)頻繁に起こるべきことの1つは、ディスクリミネータとジェネレータの両方の損失が、次のような永続的な数値に収束していることです。

この損失の収束は、通常、GANモデルがいくつかの最適値を見つけたことを示しています。ここで、mを改善することはできませんそれは十分に学んだことを意味するはずです。 (また、数字自体は通常、非常に有益ではないことに注意。)

は、ここで私は助けになるでしょう願って、いくつかの側面のメモです:

損失は非常にうまく収束していない場合
  • 、それは必ずしもモデルが何も学んでいないことを意味するわけではありません - 生成された例を確認してください。あるいは、学習率やその他のパラメータを変更してみることもできます。
  • モデルがうまく収束しても、生成された例を確認してください。時には、ディスクリミネータが本物のデータと区別できない例がいくつか見つかります。問題はそれが常にこれらのいくつかを出して、何も新しいものを作り出さないということです。これはモード崩壊と呼ばれています。通常、あなたのデータにいくつかの多様性を導入することが役立ちます。
  • バニラガンズはかなり不安定なように、私は彼らが収束 安定性を助けることになっている畳み込み 層とバッチの正規化、のようないくつかの機能が含まれているとして、some version of the DCGAN modelsを使用することをお勧めしたいです。 (上記の画像は、バニラGANではなくDCGANの結果です)
  • これは常識ですが、ほとんどのニューラルネット構造がモデルを微調整している、つまりパラメータやアーキテクチャを変更して、データはモデルを改善したり、それをねじ込むことができます。
関連する問題