2017-03-09 32 views
2

我正在讀人們對DCGAN的實現,特別是在張量流中的this one如何解讀鑑別器的損失和生成敵對網絡中發生器的損失?

在該實施方式中,作者得出鑑別器的損失和發電機,其在下面示出的(圖像來自https://github.com/carpedm20/DCGAN-tensorflow):

enter image description here

enter image description here

兩者的損失鑑別器和發生器似乎不遵循任何模式。與一般神經網絡不同,隨着訓練迭代的增加,其損失減少。培訓GAN時如何解釋損失?

+0

我認爲你的意思是鑑別器,而不是決定因素。 –

+0

@MatiasValdenegro謝謝指出。 – shapeare

回答

2

不幸的是,就像您對GAN所說的那樣,損失非常不直觀。大多數情況下,事實上發生器和鑑別器相互競爭,因此一方面的改進意味着另一方面的損失更高,直到另一方更好地瞭解接收到的損失,從而鎖定競爭對手等。

現在應該經常發生的一件事情(取決於您的數據和初始化)是鑑別器和發生器損失正在收斂到一些永久數字,如下所示: (可以讓損失反彈一點 - 它是隻是模型試圖提高自己的證據)

這種損失收斂通常意味着GAN模型找到了一些最優的,它不能提高m礦石,這也意味着它已經學得夠好了。 (還要注意,數字本身通常不是非常豐富。)

這裏有幾個方面的筆記,我希望會的幫助:

  • 如果損失不收斂得很好,這並不一定意味着模型沒有學到任何東西 - 檢查生成的例子,有時它們表現出色。或者,可以嘗試改變學習率和其他參數。
  • 如果模型收斂良好,仍檢查生成的示例 - 有時生成器會發現一個/幾個示例,即鑑別器無法區分真正的數據。麻煩在於它總是給出這幾個,而不是創造任何新東西,這就是所謂的模式崩潰。通常爲您的數據引入一些多樣性有助於。
  • 由於香草GAN相當不穩定,因此我建議使用some version of the DCGAN models,因爲它們包含一些像卷積 圖層和批量標準化等功能,這些功能可以幫助穩定收斂。 (上圖是DCGAN而不是vanilla GAN的結果)
  • 這是一些常識,但仍然是:像大多數神經網絡結構調整模型一樣,即改變其參數或/和架構以適合您的某些需求/數據可以改善模型或將其擰緊。