KL散度、JS散度、Wassertein距离

JavaScript034

KL散度、JS散度、Wassertein距离,第1张

KL散度又称相对熵,信息散度,信息增益。KL散度是两个概率分布P和Q差别的非对称性的度量。在经典境况下,P表示数据的真实分布,Q表示数据的理论分布,模型分布。

定义如下:

对数函数为凸函数,所以KL散度的值为分复数。

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

1、KL散度不是对称的;

2、KL散度不满足三角不等式。

JS散度是度量两个概率分布的相似度,是基于KL散度的变体,解决了KL散度非对称的问题。

定义如下:

KL散度和JS散度度量的时候都有一个问题:如果两个分布P,Q距离较远,完全没有重叠的时候,KL散度是没有意义的,在学习的时候,这就意味着在这一点的梯度为0,即梯度消失了。

Wasserstein距离度量的是两个管理分布之间的距离。定义如下:

为 和 的分布组合起来的所有可能的联合分布的集合。对于每一个可能的联合分布 ,可以从中采样(x,y)~r得到一个样本x和y,并计算出这对样本的距离||x-y||,进而可以计算样本对距离的期望值。在所有可能的联合分布中能够对这个期望取到的下界就是Wasserstein距离。

直观上就是在r这个路径的规划下把土堆 挪到土堆 所需要的消耗。Wasserstein距离就是在最优的路径下的最小消耗。

Wasserstein距离相比于KL散度和JS散度的优势在于:即使两个分布的支撑没有重叠或者重叠较少,仍然能够反映两个分布之间的远近。

KL距离,即Kullback-Leibler Divergence,也被成为信息熵(Relative Entropy)。一般KL距离用来衡量同意事件中,两种概率分布的相似程度,这个值越小,则相似程度越高。

计算的实例:

我们抛两枚硬币,真实的概率为A,但是我们只能通过观察得到B和C,如下所示。

A(0) = 1/2, A(1) = 1/2

B(0) = 1/4, A(1) = 3/4

C(0) = 1/8, C(1) = 7/8

进一步计算A与B和C的KL距离:

D(A||B) = (1/2)log((1/2)/(1/4)) + (1/2)log((1/2)/(3/4)) = 1/2log(4/3)

D(A||C) = (1/2)log((1/2)/(1/8)) + (1/2)log((1/2)/(7/8)) = 1/2log(16/7)

可以看到,B比C更接近与实际的A分布。

需要注意的是,KL距离虽然叫做距离,但是并不是真正的距离,不符合距离的对称性和三角不等式。

JS散度是基于KL距离提出的改进,取值在0到1之间:

JS散度是对称的并且取值在0-1之间,另外,KL与JSD都存在一个问题,在很极端的情况下,KL值没有意义,JSD会趋于一个常数,这样在算法中梯度变为了0.

欢迎关注!