概率距离度量方式
- 信息熵
信息熵是信息论中用于度量信息量的一个概念。一个系统越是有序,信息熵就越低;反之,一个系统越是混乱,信息熵就越高。所以,信息熵也可以说是系统有序化程度的一个度量。信息量是对信息的度量,就跟时间的度量是秒一样,当我们考虑一个离散的随机变量 x 的时候,当我们观察到的这个变量的一个具体值的时候,我们接收到了多少信息呢?多少信息用信息量来衡量,我们接受到的信息量跟具体发生的事件有关。信息的大小跟随机事件的概率有关。越小概率的事情发生了产生的信息量越大,如湖南产生 的地震了;越大概率的事情发生了产生的信息量越小,如太阳从东边升起来了(肯定发生嘛, 没什么信息量)。这很好理解!因此一个具体事件的信息量应该是随着其发生概率而递减的,且不能为负
\[H(x)=-\sum p(x)\log p(x)
\]
1.KL散度(相对熵)
KL散度又称为相对熵,信息散度,信息增益。KL散度是是两个概率分布P和Q 差别的非对称性的度量。常用于衡量两个概率分布之间的差异或相似度,或衡量利用Q拟合P时的能量消耗 KL散度是用来 度量使用基于Q的编码来编码来自P的样本平均所需的额外的位元数。 典型情况下,P表示数据的真实分布,Q表示数据的理论分布,模型分布,或P的近似分布。其定义如下:
\[D_{KL}(P|Q)=\sum_{x\in i}P(x_i) \log \frac{P(x_i)}{Q(x_i)}
\]
\[D_{KL}(P|Q)=\sum_{x\in i}P(x_i)*\log P(x_i)-P(x_i)\log Q(x_i)
\]
此处我们可以看到, 等号左边是熵, 右边就是交叉熵
有时会将KL散度称为KL距离,但它并不满足距离的性质:
- KL散度不是对称的: \(D(P|Q)!=D(Q|P)\)
- KL散度不满足三角不等式。
2.JS散度
JS散度度量了两个概率分布的相似度,基于KL散度的变体,解决了KL散度非对称的问题。一般地,JS散度是对称的,其取值是0到1之间,一般地,JS散度是对称的,其取值是0到1之间。若两个分布完全没有交集,那么JS散度取最大值1;若两个分布完全一样,那么 JS 散度取最小值 0。
定义如下:
\[JS(P_1|P_2)=\frac{1}{2}KL(P_1||\frac{P_1+P_2}{2})+\frac{1}{2}KL(P_2||\frac{P_1+P_2}{2})
\]
KL散度和JS散度度量的时候有一个问题:
如果两个分配P,Q离得很远,完全没有重叠的时候,那么KL散度值是没有意义的,而JS散度值是一个常数。这在学习算法中是比较致命的,这就意味这这一点的梯度为0。梯度消失了。
- Wasserstein距离(EM距离):解决JS和KL距离的缺点
Wessertein距离相比KL散度和JS散度的优势在于:即使两个分布的支撑集没有重叠或者重叠非常少,仍然能反映两个分布的远近。而JS散度在此情况下是常量,KL散度可能无意义。
wasserstein距离就是衡量把概率分布q“搬到” p的最小代价。
Wasserstein距离度量两个概率分布之间的距离,定义如下:
\[W(P_1,P_2)=\inf\limits_{\gamma-\prod(P_1,P_2)}E_{(x,y)-\gamma}[||x-y||]
\]
其中, \(\prod(P_1,P_2)\)是\(P_1,P_2\)组合起来的,所有可能的联合分布, 对于每一个可能的分布\(\gamma\)而言, 我们都可以采样到\(x,y\), 并计算他们的距离的期望值, 一般, 在代码实现的时候, 会直接取平均值