在GAN中使用JS散度評估的問題

2021-09-14 04:23:20 字數 1337 閱讀 4573

martin arjovsky, léon bottou, towards principled methods for training generative adversarial networks, 2017, arxiv preprint這篇**中,作者發現在選擇不同的epoch時,隨著迭代次數的增加,它們的交叉熵都會減小到乙個很低的值,同時準確度也都會到達1.0

但是通過js散度來直到gan的訓練過程,從中得到的資訊卻是很少的。如下圖所示,即使使用了乙個很強的generator,js divergence 大體上仍然是處在某乙個固定的值附近

其中的原因乙個可能是由於我們是使用了抽樣的方法,雖然真實資料和隨機雜訊資料之間有一定的重疊部分,但是可能抽樣取到的值不在其中,或是d太強,可以找到乙個邊界將其完美的分割開,這時候就需要我們使用乙個弱一點的d來訓練。

另乙個原因可能是由於資料本身的特質導致的,比如當我們的資料是如下的二維線性的形式,它們重疊的部分本身就很小。

再想一下gan的基本思想是什麼?gan希望pg(

x)p_(x)

pg​(x)

和p da

ta(x

)p_(x)

pdata​

(x)越接近越好,對於js散度來說,就是希望它越小越好。但是如果js散度變化不明顯的話,使得pg(

x)p_(x)

pg​(x)

接近p da

ta(x

)p_(x)

pdata​

(x)動力就變得很小,訓練的過程將會很慢。

那麼解決這個問題的乙個辦法就是人為的新增一些雜訊,比如往d的輸入中新增雜訊、對於影象的真實標籤做一些擾動……這樣做就會使得資料的範圍變寬,重疊部分就會大一些。當然隨著訓練的推進,雜訊要逐漸減小。

GAN學習筆記 KL散度 交叉熵 JS散度

首先,我們知道,熵 是用來量化資料中含有的資訊量的,其計算公式為 h i 1 np x i log p xi h sum p x cdot log p x h i 1 n p xi logp x i 1 kl散度 kullback leibler divergence 又稱kl距離,相對熵,用來比較...

在js函式中使用遞迴

這篇文章主要介紹遞迴在js函式中的應用,介紹函式中條件的關係 1.簡單認識關於遞迴 遞迴演算法的特點 1.在函式過程中呼叫自身。2.在遞迴過程中,必須有乙個明確的條件判斷遞迴的結束,既遞迴出口。3.遞迴演算法簡潔但效率低,通常不作為推薦演算法。一.自己呼叫自己 function fun fun 上面...

在Unity中使用LitJson解析json檔案

litjson 這個庫需要找資源,找到litjson.dll後將它放在assets資料夾下,在指令碼中使用using引入即可 測試 json檔案 這個json檔案是乙個存檔檔案,鍵 archice 對應的值是乙個陣列,這個陣列儲存每乙個存檔資料,每個存檔資料有exp,hp,level,mapid,m...