GAN如何使用的 Jensen-Shannon 散度
GAN 在其原始形式中使用 Jensen-Shannon 散度(JS 散度) 来衡量生成器生成的分布与真实数据分布之间的差异。这是在 GAN 的对抗性损失函数设计中自然而然出现的。具体来说,GAN 的目标是让生成器 G G G 生成的分布 P g P_g Pg 尽可能接近真实数据分布 P r P_r Pr,判别器 D D D 则尝试区分生成样本和真实样本。
在原始 GAN 中,GAN 的目标可以通过以下的 min-max 博弈来描述:
min G max D V ( D , G ) = E x ∼ P r [ log D ( x ) ] + E z ∼ P z [ log ( 1 − D ( G ( z ) ) ) ] \min_G \max_D V(D, G) = \mathbb{E}_{x \sim P_r}[\log D(x)] + \mathbb{E}_{z \sim P_z}[\log (1 - D(G(z)))] GminDmaxV(D,G)=Ex∼Pr[logD(x)]+Ez∼Pz[log(1−D(G(z)))]
判别器损失和生成器损失的推导
-
判别器 D D D 的目标是最大化上述损失函数,它希望将真实样本 x x x 分类为真实 ( D ( x ) ≈ 1 D(x) \approx 1 D(x)≈1),将生成样本 G ( z ) G(z) G(z) 分类为假 ( D ( G ( z ) ) ≈ 0 D(G(z)) \approx 0 D(G(z))≈0)。
-
生成器 G G G 的目标是最小化该损失函数,使得 D ( G ( z ) ) ≈ 1 D(G(z)) \approx 1 D(G(z))≈1,也就是让判别器尽可能无法区分生成样本与真实样本。
在理论上,当判别器 D D D 最优时,它可以表达为:
D ∗ ( x ) = P r ( x ) P r ( x ) + P g ( x ) D^*(x) = \frac{P_r(x)}{P_r(x) + P_g(x)} D∗(x)=Pr(x)+Pg(x)Pr(x)
此时,生成器和判别器的损失函数 V ( D ∗ , G ) V(D^*, G) V(D∗,G) 就可以被表达为 Jensen-Shannon 散度,即:
V ( D ∗ , G ) = 2 ⋅ JS ( P r ∥ P g ) − log 4 V(D^*, G) = 2 \cdot \text{JS}(P_r \| P_g) - \log 4 V(D∗,G)=2⋅JS(Pr∥Pg)−log4
其中,JS 散度用来衡量两个分布 P r P_r Pr 和 P g P_g Pg 的相似性。当 P r = P g P_r = P_g Pr=Pg 时,JS 散度为 0,表示两个分布完全相同;当两个分布几乎没有重叠时,JS 散度达到其最大值。
JS 散度在 GAN 中的作用
JS 散度作为一种对称的概率分布差异度量方法,在 GAN 中自然地出现,用来衡量生成器生成的分布与真实分布之间的差距。然而,原始 GAN 使用 JS 散度存在一些问题:
- 梯度消失:当生成器和真实分布之间的重叠很小时,JS 散度可能不提供有效的梯度信息,导致训练过程中生成器无法得到足够的反馈来改进样本生成质量。
- 训练不稳定:由于 JS 散度在生成器和真实分布差异较大时的非连续性,这使得 GAN 的训练变得不稳定,容易出现震荡或发散的现象。
总结
- GAN 使用 Jensen-Shannon 散度 来衡量生成分布 P g P_g Pg 和真实数据分布 P r P_r Pr 的差异,这是原始 GAN 损失函数的核心。
- 然而,由于 JS 散度的梯度消失问题和训练不稳定性,后来如 WGAN(Wasserstein GAN)通过 Wasserstein 距离代替了 JS 散度,解决了这些问题。
原文地址:https://blog.csdn.net/qq_39698985/article/details/142315272
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!