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
在第三部加上 后面的 浪打 项, 有点像是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去掉