好的,这是一个非常自然的延伸问题。Jensen-Shannon Divergence (JS散度) 正是为了克服KL散度的一些主要缺点而设计的。
JS散度是KL散度的一种变体,它通过对称化和平滑处理,得到了一个对称的、总是有定义的、且值域固定的散度度量。
它的核心思想是:计算两个分布 P 和 Q 与它们的中间分布(平均分布)M 之间的KL散度的平均值。
给定两个概率分布 P 和 Q,我们首先定义一个中间分布 M:
M=21(P+Q)
即,M 是 P 和 Q 的简单算术平均。
然后,JS散度被定义为:
DJS(P∥Q)=21DKL(P∥M)+21DKL(Q∥M)
其中,DKL 是之前介绍的KL散度。
解读:
- JS散度衡量的是 P 和 Q 分别与它们的“中间人” M 的平均差异。
- 由于 M 是由 P 和 Q 混合而成,它保证了在任何 P 或 Q 有定义的点上,M 的概率都大于零(只要 P 和 Q 不是完全无处重叠)。这解决了KL散度中分母 Q(i) 可能为零的问题。
虽然JS散度的名字是“散度”(Divergence),但它的数学性质使其可以作为一个真正的距离度量(在数学上称为度量函数, Metric)。一个真正的距离度量必须满足以下四个条件:
- 非负性(Non-negativity): DJS(P,Q)≥0
- 同一性(Identity of Indiscernibles): DJS(P,Q)=0 当且仅当 P=Q
- 对称性(Symmetry): DJS(P,Q)=DJS(Q,P)
- 三角不等式(Triangle Inequality): DJS(P,R)≤DJS(P,Q)+DJS(Q,R)
让我们逐一验证JS散度是否满足这些条件:
- 非负性:KL散度本身是非负的,所以两个非负KL散度的平均值也必然非负。✅
- 同一性:如果 P=Q,那么 M=P=Q,此时 DKL(P∥M)=0,所以 DJS=0。反之,如果 DJS=0,也必然要求 P=Q。✅
- 对称性:从定义就可以直接看出,DJS(P∥Q) 和 DJS(Q∥P) 的计算方式完全一样,仅仅是 P 和 Q 在公式中的位置交换了,结果必然相同。这完美解决了KL散度的非对称性问题。 ✅
- 三角不等式:这一点证明起来较为复杂,但已经得到数学上的证明,JS散度满足三角不等式。✅
正因为JS散度同时满足了以上四个条件,所以它可以被用作一个有效的、真正的距离度量。 它的平方根 DJS 有时被用来形成一个更符合直观欧几里得空间性质的距离函数。
| 特性 | KL散度 (Kullback-Leibler Divergence) | JS散度 (Jensen-Shannon Divergence) |
|---|
| 对称性 | 非对称: DKL(P∥Q)=DKL(Q∥P) | 对称: DJS(P∥Q)=DJS(Q∥P) |
| 定义域问题 | 可能无定义:当 Q(i)=0 而 P(i)>0 时,DKL 趋于无穷。 | 总有定义:中间分布 M 平滑了 P 和 Q,避免了零概率问题。 |
| 值域 | 从 0 到 +∞ | 从 0 到 ln(2)(以2为底的对数时是 0 到 1)有界,便于解释和比较。 |
| 是否是距离度量 | 不是,因为它不对称且不满足三角不等式。 | 是,它满足距离度量的所有条件。 |
| 主要用途 | 源于信息论,衡量信息损失。常用于变分推断(VAE)。 | 衡量两个分布之间的相似性。曾是生成对抗网络(GAN)的原始损失函数。 |
假设有两个离散分布:
- P=[0.9,0.1,0.0] (90%的概率在事件1,10%在事件2,0%在事件3)
- Q=[0.0,0.1,0.9] (0%在事件1,10%在事件2,90%在事件3)
计算KL散度:
- DKL(P∥Q): 第一项 0.9∗log(0.9/0.0) 会遇到除零错误,无定义。
- DKL(Q∥P): 第三项 0.9∗log(0.9/0.0) 也会遇到除零错误,无定义。
计算JS散度:
- 首先计算中间分布 M=21(P+Q)=[0.45,0.1,0.45]
- 然后计算:
DKL(P∥M)=0.9∗log(0.9/0.45)+0.1∗log(0.1/0.1)+0∗log(0/0.45)≈0.9∗1+0+0=0.9 (这里忽略一些严格定义,但结果是合理的)
DKL(Q∥M)=0∗log(0/0.45)+0.1∗log(0.1/0.1)+0.9∗log(0.9/0.45)≈0+0+0.9=0.9 - 最终 DJS(P∥Q)=21(0.9+0.9)=0.9 (或根据对数底不同,是一个有界值)
这个例子清晰地展示了JS散度在处理零概率问题和不对称性上的巨大优势。��和不对称性上的巨大优势。