KL散度、JS散度、Wasserstein距离

本文介绍了三种用于衡量概率分布差异的方法:KL散度、JS散度及Wasserstein距离。KL散度是一种非对称性度量,而JS散度改进了这一特性,Wasserstein距离则能在分布支撑集不重叠时仍有效度量差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. KL散度

KL K L 散度又称为相对熵,信息散度,信息增益。 KL K L 散度是是两个概率分布P和Q 差别的非对称性的度量。 KL K L 散度是用来 度量使用基于Q的编码来编码来自P的样本平均所需的额外的位元数。 典型情况下,P表示数据的真实分布,Q表示数据的理论分布,模型分布,或P的近似分布。

定义如下:

DKL(P//Q)=xXP(x)log1P(x)+xXP(x)log1Q(x) D K L ( P / / Q ) = − ∑ x ∈ X P ( x ) l o g 1 P ( x ) + ∑ x ∈ X P ( x ) l o g 1 Q ( x )

因为对数函数是凸函数,所以 KL K L 散度的值为非负数。

有时会将 KL K L 散度称为 KL K L 距离,但它并不满足距离的性质:

1. KL散度不是对称的: KL(A,B) K L ( A , B ) KL(B,A) K L ( B , A )

2. KL散度不满足三角不等式: KL(A,B) K L ( A , B ) > > KL(A,C)+KL(C,B)

2. JS散度(Jensen-Shannon)

JS J S 散度度量了两个概率分布的相似度,基于 KL K L 散度的变体,解决了KL散度非对称的问题。一般地, JS J S 散度是对称的,其取值是0到1之间。定义如下:

这里写图片描述

KL K L 散度和 JS J S 散度度量的时候有一个问题:

如果两个分配P,Q离得很远,完全没有重叠的时候,那么KL散度值是没有意义的,而JS散度值是一个常数。这在学习算法中是比较致命的,这就意味这这一点的梯度为0。梯度消失了。

3. Wasserstein距离

Wasserstein W a s s e r s t e i n 距离度量两个概率分布之间的距离,定义如下:
这里写图片描述
Π(P1,P2) Π ( P 1 , P 2 ) P1 P 1 P2 P 2 分布组合起来的所有可能的联合分布的集合。对于每一个可能的联合分布γ,可以从中采样 (x,y)γ ( x , y ) ∼ γ 得到一个样本x和y,并计算出这对样本的距离||x−y||,所以可以计算该联合分布 γ γ 下,样本对距离的期望值 E(x,y)γ[||xy||] E ( x , y ) ∼ γ [ | | x − y | | ] 。在所有可能的联合分布中能够对这个期望值取到的下界 infγ i n f γ Π(P1,P2) Π ( P 1 , P 2 ) E(x,y) γ[||xy||] ∼ γ [ | | x − y | | ] 就是Wasserstein距离。

直观上可以把 E(x,y)γ[||xy||] E ( x , y ) ∼ γ [ | | x − y | | ] 理解为在 γ γ 这个路径规划下把土堆P1挪到土堆P2所需要的消耗。而 Wasserstein W a s s e r s t e i n 距离就是在最优路径规划下的最小消耗。所以 Wesserstein W e s s e r s t e i n 距离又叫Earth-Mover距离。

Wessertein距离相比KL散度和JS散度的优势在于:

即使两个分布的支撑集没有重叠或者重叠非常少,仍然能反映两个分布的远近。而JS散度在此情况下是常量,KL散度可能无意义。

转载自:
KL散度、JS散度、Wasserstein距离

<think>嗯,用户问的是Wasserstein距离相比传统GAN中的KL有哪些优势。我需要先回忆一下GAN的基本知识。传统的GAN使用的是JS(Jensen-Shannon divergence),而WGAN用的是Wasserstein距离。那为什么会有这种改变呢? 首先,传统GAN的问题可能在于梯消失。当生成分布和真实分布没有重叠或者重叠很少时,JS会饱和,导致梯接近于零,这样生成器无法有效更新。而Wasserstein距离即使在分布不重叠的情况下也能提供有效的梯,这应该是一个主要优势。 其次,Wasserstein距离衡量的是两个分布之间的“距离”,而不是单纯的相似KLJS都是概率分布的差异量,但Wasserstein考虑了分布之间的几何结构,比如在移动概率质量时的成本,这可能使得训练更稳定。 另外,训练过程中的指标问题。传统GAN的判别器输出经过sigmoid,得到的是概率,而Wasserstein的判别器(或者说Critic)输出的是一个实数,这可以更直接地反映分布之间的距离,从而提供更有意义的训练信号。 还有,Wasserstein距离的平滑性可能有助于模式覆盖。传统GAN容易导致模式崩溃,生成器可能只生成有限的几种样本,而Wasserstein距离可能鼓励生成分布覆盖更多的真实分布模式,因为它在计算时考虑的是最优运输成本,而不是单纯的差异。 需要确认这些点是否正确。例如,JS的问题确实在原始论文中被指出,当两个分布没有交集时,JS是常数,导致梯为零。而Wasserstein在这种情况下仍然能给出有意义的梯。因此,Wasserstein GAN在训练稳定性和避免模式崩溃上有优势。 然后,在解释的时候要分点说明优势,比如解决梯消失、提供更平滑的梯、评估指标更合理等。还要提到WGAN的改进,比如权重裁剪或者梯惩罚来满足Lipschitz约束。 可能还需要比较KLWasserstein的不同。KL不对称,而且当生成分布有零而真实分布非零时,KL会趋向无穷大,导致训练不稳定。而Wasserstein距离没有这样的问题,因为它基于最优运输理论,考虑的是分布间的“移动”成本,而不是严格的概率匹配。 最后,总结一下Wasserstein距离的优势,并确保回答结构清晰,分点说明,然后给出相关的问题,比如WGAN的实现、Lipschitz约束的处理方法等。</think><< Wasserstein距离(Earth-Mover距离)相比传统GAN中使用的KL(Kullback-Leibler divergence)具有以下核心优势: 1. **解决梯消失问题** 传统GAN在训练时可能出现梯消失,尤其是在生成分布与真实分布无重叠时。KLJS在此情况下会饱和(值为常数),导致梯接近于零。而Wasserstein距离即使分布不重叠时仍能提供有意义的梯,确保训练稳定。 2. **更合理的距离量** Wasserstein距离直接衡量两个分布之间的"最小运输成本",能反映分布之间的几何关系。而KL不对称且对分布微小变化不敏感(例如当生成分布覆盖真实分布但存在偏移时,KL可能极大)。 3. **缓解模式崩溃(Mode Collapse)** 传统GAN容易因KL/JS的缺陷导致生成器仅覆盖部分真实数据模式。Wasserstein距离通过平滑的梯引导生成器更全面地覆盖真实分布。 4. **训练过程可解释性** Wasserstein距离的值与生成质量呈负相关(值越小生成质量越高),可直接作为训练指标。而传统GAN的判别器输出概率无法直接反映生成质量。 **代码示例(WGAN-GP实现片段)** ```python # WGAN-GP的Critic(判别器)需满足Lipschitz约束,使用梯惩罚 def gradient_penalty(critic, real, fake, device): batch_size = real.size(0) epsilon = torch.rand(batch_size, 1, 1, 1).to(device) interpolates = (epsilon * real + (1 - epsilon) * fake).requires_grad_(True) critic_interpolates = critic(interpolates) gradients = torch.autograd.grad( outputs=critic_interpolates, inputs=interpolates, grad_outputs=torch.ones_like(critic_interpolates), create_graph=True, retain_graph=True )[0] gradients = gradients.view(gradients.size(0), -1) gradient_penalty = ((gradients.norm(2, dim=1) - 1) ** 2).mean() return gradient_penalty ```
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值