老饼讲解:一步一步上手学习
JS散度(Jensen-Shannon Divergence)其实和KL散度一样,都是用于度量两个分布之间的距离,相信大部人都是在看GAN生成神经网络时,接触到JS散度,其实它很少用,但既然GAN说到JS散度了,那今天我们就来看看JS散度到底是什么,包括JS散度的公式、特性、以及相关的证明等等。
JS散度也称为JS距离,它与KL散度一样,用于度量两个分布之间的距离。
分布 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散度在测量两个分布的距离时是对称的,即。
JS散度有好几种形式,下面我们不妨列举一些常见的形式。
JS散度的定义公式为:
其中,M是P与Q的均值:
如果把KL散度公式展开,则JS散度计算公式为:
如果 x为连续变量,则为积分形式:
也可以写为期望形式:
第一次会眼花缭乱,看多了就习惯了。
下面我们再来看看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的最大值为什么是。
证明思路是简单的,当P与Q完全不相同时,即两者完全不重叠,即P或Q至少有一个为0,

将JS公式进行分段讨论就可以了,好了,开干!
在x为连续变量时,JS的公式如下:
由于JS是的积分,而两个分布完全不重叠,则JS可以分为如下三段积分之和,如下:
即:P不为0,Q不为0,两者都为0
三段积分的结果分别如下:
1. 当时,有:
2. 当时,有:
3. 当时,有:
因此有:
好了,这就证明完了。
总的来说,JS散度就是KL的改进,它也是用来度量两个分布之间的距离,只不过它是对称性的,用来当作距离会更加贴切一些,它的取值范围在之间。值得注意的是,JS散度的公式是基于KL散度公式的,而且它具有多种形式,可以根据场景找个合适的形式来使用。
评论