深度學習——GAN(生成網絡)損失函數解析

      生成網絡(GAN)是近年來很火的課題,原始論文《Generative Adversarial Nets》的介紹請移步:https://blog.csdn.net/wenqiwenqi123/article/details/86178376

      本篇主要詳細解析它的損失函數。在論文中損失函數定義爲:

 

      當然乍一看去,沒看懂這個損失函數。我們細細來看:

      GAN的原理就是G(生成器)努力製造以假亂真的圖,而D(判別器)努力分辨出假圖。這樣一起努力最後生成的圖就會越來越逼真。一切損失計算都是在D(判別器)輸出處產生的,而D的輸出一般是fake/true的判斷,所以整體上採用的是二分類交叉熵函數。

  左邊包含兩部分minG和maxD。

      首先看一下maxD部分,因爲訓練一般是先保持G(生成器)不變訓練D的。D的訓練目標是正確區分fake/true,二分類問題使用了sigmoid激活函數,因此D(x)的輸出範圍是[0,1],是一個概率。看第一項E,x~pdata指的是x採樣於真實數據data的分佈。如果我們以1/0代表true/fake,則對第一項E因爲輸入採樣自真實數據所以我們期望D(x)趨近於1,因爲D(x)∈[0,1],也就意味着第一項(logD(x))要更大。同理第二項E輸入採樣自G生成數據,所以我們期望D(G(z))趨近於0更好,也就是說第二項又是更大。所以是這一部分是期望訓練使得整體更大了,也就是maxD的含義了。

  第二部分保持D不變,訓練G,這個時候只有第二項E有用了(第一項裏沒有G),因爲我們要迷惑D,所以這時將生成的圖的label設置爲1(我們知道是fake,所以才叫迷惑),希望D(G(z))輸出接近於1更好,也就是1-D(G(z))接近於0更好,因此第二項越小越好(log函數),這就是minG。

       生成器和判別器分別迭代優化,最終生成的圖就可以以假亂真了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章