目录
老饼讲解:一步一步上手学习

【介绍】一篇入门之-JS散度是什么

作者 : 老饼 发表日期 : 2025-12-17 00:42:26 更新日期 : 2026-05-11 21:26:45
老饼讲解-简单易懂,干货满满,爽过嗦螺!


JS散度(Jensen-Shannon Divergence)其实和KL散度一样,都是用于度量两个分布之间的距离,相信大部人都是在看GAN生成神经网络时,接触到JS散度,其实它很少用,但既然GAN说到JS散度了,那今天我们就来看看JS散度到底是什么,包括JS散度的公式、特性、以及相关的证明等等。

一、什么是JS散度

JS散度也称为JS距离,它与KL散度一样,用于度量两个分布之间的距离。

1.1. JS散度-定义公式

分布 Q(X)与 P(X) 的JS散度计算公式为:

 

其中,M是P与Q的均值: 

 

KL是Kullback-Leibler散度,如下:

从公式可知,JS散度的定义基于KL散度,它可以看作是对KL散度的一种改进。

好了,既然有了KL散度,那为什么还需要JS散度呢?其实JS散度主要是解决KL散度测量分布的距离时不对称的缺点,即。相比KL散度,JS散度将两个分布P、Q与它们的"平均分布"M的KL距离均值作为PQ之间的距离,这样可以使得JS散度在测量两个分布的距离时是对称的,即

1.2. JS散度-常见形式

JS散度有好几种形式,下面我们不妨列举一些常见的形式。

JS散度的定义公式为:

 

其中,M是P与Q的均值:  

如果把KL散度公式展开,则JS散度计算公式为:

 

如果 x为连续变量,则为积分形式:

也可以写为期望形式:

 

第一次会眼花缭乱,看多了就习惯了。

二、JS散度的特性

下面我们再来看看JS散度有什么特性。

2.1. JS散度的特性

JS的特性如下:

1. 非负性

    JS是两个分布的距离,它具有非负性

    证明:因为KL>0,所以易知JS>0。

2. 对称性

     JS相比KL,它具有对称性,即

    证明:直接对定义公式进行验证即可。

3. JS散度的取值范围为 

    (1) 当P与Q完全相等时,JS取得最小值,此时

        证明:将P=Q代入JS公式,即可得证。

    (2) 当P与Q完全不相同时,JS取得最大值,此时 

        证明:当P与Q完全不相同时,即两者完全不重叠,即P或Q至少有一个为0

        按此思路,代入公式进行计算即可得到,详细证明见下文

从特性上来看,其实JS散度比KL散度作为距离更为适合,但是它的公式明显也更复杂一些。

三、JS最大取值的证明

好了,下面来证明JS的最大值为什么是

3.1. 证明思路

证明思路是简单的,当P与Q完全不相同时,即两者完全不重叠,即P或Q至少有一个为0,

将JS公式进行分段讨论就可以了,好了,开干!

3.2. 证明过程

在x为连续变量时,JS的公式如下:

 

由于JS是的积分,而两个分布完全不重叠,则JS可以分为如下三段积分之和,如下:

即:P不为0,Q不为0,两者都为0

三段积分的结果分别如下: 

1. 当时,有:

2. 当时,有:

 

3. 当时,有:

因此有:

 

好了,这就证明完了。

总结

总的来说,JS散度就是KL的改进,它也是用来度量两个分布之间的距离,只不过它是对称性的,用来当作距离会更加贴切一些,它的取值范围在之间。值得注意的是,JS散度的公式是基于KL散度公式的,而且它具有多种形式,可以根据场景找个合适的形式来使用。



图标 评论
添加评论