GAN原始Loss解讀

2021-10-07 09:30:12 字數 638 閱讀 3068

gan的原始損失函式,咋一看是非常難以理解的,但仔細理解後就會發現其簡潔性和豐富的含義。

損失函式定義:

一切損失計算都是在d(判別器)輸出處產生的,而d的輸出一般是fake/true的判斷,所以整體上採用的是二進位制交叉熵函式。

左邊包含兩部分ming和maxd。

首先看一下maxd部分,因為訓練一般是先保持g(生成器)不變訓練d的。d的訓練目標是正確區分fake/true,如果我們以1/0代表true/fake,則對第一項e因為輸入取樣自真實資料所以我們期望d(x)趨近於1,也就是第一項更大。同理第二項e輸入取樣自g生成資料,所以我們期望d(g(z))趨近於0更好,也就是說第二項又是更大。所以是這一部分是期望訓練使得整體更大了,也就是maxd的含義了。

第二部分保持d不變,訓練g,這個時候只有第二項e有用了,關鍵來了,因為我們要迷惑d,所以這時將label設定為1(我們知道是fake,所以才叫迷惑),希望d(g(z))輸出接近於1更好,也就是這一項越小越好,這就是ming。當然判別器哪有這麼好糊弄,所以這個時候判別器就會產生比較大的誤差,誤差會更新g,那麼g就會變得更好了,這次沒有騙過你,只能下次更努力了。

大概就是這樣乙個博弈過程了。自娛自樂,高手刷到請略過。

**參考:50行**實現gan-pytorch。

GAN 原始損失函式詳解

gan的原始損失函式,咋一看是非常難以理解的,但仔細理解後就會發現其簡潔性和豐富的含義。損失函式定義 一切損失計算都是在d 判別器 輸出處產生的,而d的輸出一般是fake true的判斷,所以整體上採用的是二進位制交叉熵函式。左邊包含兩部分ming和maxd。首先看一下maxd部分,因為訓練一般是先...

erlang例項 los簡單實現

最近看了 erlang程式設計 好書,翻譯的也不錯,兩天時間,基本讀完 我的習慣總是先快速讀完一本書再回過頭,一邊練習一邊翻閱 正試著學習編寫erlang的例子。joe在網上 http erlang.org examples examples 2.0.html 給了乙個簡單系統 sos 的例子,可惜...

使用Tensorboard工具檢視Loss損失率

在python程式中新增tensoboard一系列 我就不一一寫了。查詢資料就可以找到很多jexinr這方面的內容。今天我主要是想說下,如何在cmd中錄入命令,檢視。環境 win10 python開發環境 spyde程式設計客棧r tensorflow 這個是從 anaconda3 軟體中 的。準備...