计算的实例:
我们抛两枚硬币,真实的概率为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.
欢迎关注!
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散度的优势在于:即使两个分布的支撑没有重叠或者重叠较少,仍然能够反映两个分布之间的远近。
信息是一个很抽象的概念,如何衡量一句话或一篇文章的信息量是一个比较难的问题。有时候,人们会说一条新闻信息量很大,或认为信息量很小,但却很难描述这条信息的信息量具体是多少,为什么?直到1948年,香农提出一个“信息熵”的概念,才解决的信息的量化问题。
熵,可以理解成不确定性。比如想很衡量某一件事的信息量是多少,设该事件发生的概率为 ,那么根据香农提出的“信息熵”,该事件的信息量可以表示成:
上面这个式子就叫做自信息。
也就是说,某件事发生的概率越小,其信息量越大。好比有人跟你说:明天太阳从东边升起。在地球上的你来说,这显然是一句废话,信息量为零。但是如果改成:明天太阳从西面升起。这信息量分分钟上微博热搜。
根据上面的定义,就可以引出一个随机变量 的平均信息熵(期望):
随机变量的熵是随机变量不确定性的度量,它是描述一个随机变量平均所需信息量的度量。
在信息论中,KL散度也叫相对熵,它用于衡量两个概率分布的差异性。定义如下:
其中 是目标分布,这个分布是不知道的,但是我们有属于这个分布的样本。 是用于近似 的分布。当这个两个分布相等时,他们的相对熵就等于0.
对KL散度做适当变形:
前面一部分就是 信息熵,而后面一部分就是 交叉熵 :
因为 来自于真是的数据分布,因此第一部分可以看成是常数。也就说在特定条件下,交叉熵等价于KL散度。