1. 程式人生 > >深度學習 lab14_2 WGAN學習筆記(KL JS divergence, improved WGAN)

深度學習 lab14_2 WGAN學習筆記(KL JS divergence, improved WGAN)

Concept

KL JS divergence

https://www.cnblogs.com/smuxiaolei/p/7400923.html

https://www.bilibili.com/video/av19193502?from=search&seid=15708729020988943650

kl divergence

使用entropy公式計算

在這裡插入圖片描述
(1)以八種天氣情況作為例子,這張圖是ground truth , entropy是2.23
在這裡插入圖片描述

(2) bits 數不同
在這裡插入圖片描述

(3)預測的結果 的 entropy 是4.58
在這裡插入圖片描述

在這裡插入圖片描述

如果 q == p(ground truth)兩分佈相同,cross entropy = entropy,KL divergence ==0。

如果q!=p(ground truth),cross entropy = entropy + KL divergence, 所以 KL divergence 必大於0。
在這裡插入圖片描述
在這裡插入圖片描述
其中 h(p) 在圖二,圖二是真正分佈。

js divergence

在這裡插入圖片描述

  • JS散度是利用KL散度來得到的。JS是對稱的而且值是有界的[0,1].

  • JS散度解決了KL不對稱的問題,JS是對稱的。
    很明顯,如果P1,P2完全相同,那麼JS =0, 如果完全不相同,那麼就是1.

但是KL和JS散度來度量時候有一個問題:
如果兩個分配P,Q離得很遠,完全沒有重疊的時候,那麼KL值是沒有意義的,而JS值是一個常數。這在學習演算法中是比較致命的,這就意味這這一點的梯度為0。梯度消失了。




WGAN

  • Pdata : real data 的分佈
  • PG : generator 生出來的 data 的分佈

在這裡插入圖片描述

要max 這個 object function,有毛病,如字幕。

所以需要一個平滑函式, 1-lipschitz

  • Ex~pdata
  • x 指 從 real data 分佈中的 data。

1-lipschitz

在這裡插入圖片描述

weight clipping

在這裡插入圖片描述

improved WGAN

WGAN-GP
在第三部加上 後面的 浪打 項, 有點像是regularization

做不到,因為D(x) 的x是所有的data。所有的imgae 太多,不管在train還是幹嘛的都做不到,所以 只拿 Pdata 和 Pg 之間的 penalty出來,即

x~penalty(noun. 處罰,罰款,沒見過的單詞,查了一下方便背誦) 指 Pdata 和 Pg 分佈之間,隨機取一點出來,因此有了以上藍色區域。

  • 實作的時候,實際做法如下,因為論文寫道 操作起來 梯度 越接近一越好,所以 替換掉
    在這裡插入圖片描述



implement(WGAN-GP)

程式碼

加 WGAN weight clip 的話,浪打項裡 使用的 (梯度-1) 的平方,效果驚人的差,換成 relu勉勉強強好一點(relu相當於 max,因為relu本書是max(x,0) ),但是也不能看。

在這裡插入圖片描述

所以再實作的時候,記得把 WGAN的weight clip去掉