任何事件都会承载着一定的信息量,包括已经发生的事件和未发生的事件,只是他们承载的信息量会有所不同。
信息量是一个与事件发生概率相关的概念,事件发生的概率越小,其信息量越大。
定义:
假设 X X X 是一个离散型变量,其取值集合为 χ \chi χ ,概率分布函数为:
p ( x ) = P r ( X = x ) , x ∈ χ p(x)=Pr(X=x), x\in\chi p(x)=Pr(X=x),x∈χ
则事件 X = x 0 X=x_0 X=x0 的信息量为:
I ( x 0 ) = − l o g ( p ( x 0 ) ) I(x_0)=-log(p(x_0)) I(x0)=−log(p(x0))
熵就是信息量的期望,熵是对于一个概率分布来说的,而信息量是针对一件特定的事件而言的
假设事件 X X X 共有 n n n 种可能,发生 x i x_i xi 的概率为 p ( x i ) p(x_i) p(xi),则该事件的熵 H ( X ) H(X) H(X) 为:
H ( x ) = − ∑ i = 1 n p ( x i ) l o g ( p ( x i ) ) H(x)=-\sum_{i=1}^{n}p(x_i)log(p(x_i)) H(x)=−i=1∑np(xi)log(p(xi))
对于同一个随机变量 x x x 有两个单独的概率分布 p ( x ) p(x) p(x) 和 q ( x ) q(x) q(x) ,可以使用KL散度(Kullback-Leibler(KL) divergence)
来衡量这两个分布的差异
在机器学习中, p p p往往用来标识样本的真实分布, q q q用来表示模型所预测的分布,那么KL散度
就可以计算这两个分布之间的差异,也就是Loss值
D K L ( p ∣ ∣ q ) = ∑ i = 1 n p ( x i ) l o g ( p ( x i ) q ( x i ) ) D_{KL}(p||q)=\sum_{i=1}^n{p(x_i)log(\frac{p(x_i)}{q(x_i)})} DKL(p∣∣q)=i=1∑np(xi)log(q(xi)p(xi))
q q q的分布越接近 p p p,散度值越小,即损失值越小
对数函数是凸函数,所以KL散度
值为非负数
KL散度
不是对称的
KL散度
不满足三角不等式
将KL散度
公式进行变形
D K L ( p ∣ ∣ q ) = ∑ i = 1 n p ( x i ) l o g ( p ( x i ) q ( x i ) ) = ∑ i = 1 n p ( x i ) l o g ( p ( x i ) ) − ∑ i = 1 n p ( x i ) l o g ( q ( x i ) ) = − H ( p ( x ) ) + [ − ∑ i = 1 n p ( x i ) l o g ( q ( x i ) ) ] D_{KL}(p||q)=\sum_{i=1}^{n}{p(x_i)log(\frac{p(x_i)}{q(x_i)})}=\sum_{i=1}^{n}{p(x_i)log(p(x_i))}-\sum_{i=1}^{n}{p(x_i)log(q(x_i))}=-H(p(x))+[-\sum_{i=1}^{n}{p(x_i)log(q(x_i))}] DKL(p∣∣q)=i=1∑np(xi)log(q(xi)p(xi))=i=1∑np(xi)log(p(xi))−i=1∑np(xi)log(q(xi))=−H(p(x))+[−i=1∑np(xi)log(q(xi))]
上式的前一部分是 p p p的熵,后一部分就是交叉熵:
H ( p , q ) = − ∑ i = 1 n p ( x i ) l o g ( q ( x i ) ) H(p,q)=-\sum_{i=1}^{n}{p(x_i)log(q(x_i))} H(p,q)=−i=1∑np(xi)log(q(xi))
在机器学习中,需要评估label
和predicts
之间的差距,使用KL散度
刚刚好,即 D K L ( y ∣ ∣ y ^ ) D_{KL}(y||\hat{y}) DKL(y∣∣y^)。
由于KL散度
中的前一部分 − H ( y ) -H(y) −H(y)是不变的,故在优化过程中,一般直接使用交叉熵做loss
评估模型
JS散度
度量两个概率分布的相似性,是基于KL散度
的变体,解决了KL散度
非对称的问题。
一般地,JS散度
是对称的,其取值在0
到1
之间,定义为:
J S ( P 1 ∣ ∣ P 2 ) = 1 2 K L ( P 1 ∣ ∣ P 1 + P 2 2 ) + 1 2 K L ( P 2 ∣ ∣ P 1 + P 2 2 ) 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}) JS(P1∣∣P2)=21KL(P1∣∣2P1+P2)+21KL(P2∣∣2P1+P2)
KL散度
和SL散度
度量的问题:
如果两个分布 P P P、 Q Q Q离得很远,完全没有重叠的部分,那么KL散度
值是没有意义的,而JS散度
值是一个常数。这意味着这一点的梯度为0
Wasserstein距离
:度量两个概率分布之间的距离
W ( P 1 , P 2 ) = inf γ ∈ ∏ ( P 1 , P 2 ) E ( x , y ) ∼ γ [ ∣ ∣ x − y ∣ ∣ ] W(P_1,P_2)=\inf\limits_{\gamma\in\prod(P_1,P_2)}\mathbb{E_{(x,y)\sim\gamma}}[||x-y||] W(P1,P2)=γ∈∏(P1,P2)infE(x,y)∼γ[∣∣x−y∣∣]
∏ ( P 1 , P 2 ) \prod(P_1,P_2) ∏(P1,P2)是 P 1 P_1 P1和 P 2 P_2 P2两个分布组合起来的所有可能的联合分布的集合。
对于每一个可能的联合分布 γ \gamma γ,可以从中采样 ( x , y ) ∼ γ (x,y)\sim\gamma (x,y)∼γ得到一个样本 x x x和 y y y,并计算出这对样本的距离 ∣ ∣ x − y ∣ ∣ ||x-y|| ∣∣x−y∣∣,所以可以计算联合分布 γ \gamma γ下,样本对距离的期望值 E ( x , y ) ∼ γ [ ∣ ∣ x − y ∣ ∣ ] \mathbb{E_{(x,y)\sim\gamma}}[||x-y||] E(x,y)∼γ[∣∣x−y∣∣]。
在所有可能的联合分布中能够对这个期望值取到的下界 inf γ ∈ ∏ ( P 1 , P 2 ) E ( x , y ) ∼ γ [ ∣ ∣ x − y ∣ ∣ ] \inf\limits_{\gamma\in\prod(P_1,P_2)}\mathbb{E_{(x,y)\sim\gamma}}[||x-y||] γ∈∏(P1,P2)infE(x,y)∼γ[∣∣x−y∣∣]就是Wasserstein距离
直观上可以把 E ( x , y ) ∼ γ [ ∣ ∣ x − y ∣ ∣ ] \mathbb{E_{(x,y)\sim\gamma}}[||x-y||] E(x,y)∼γ[∣∣x−y∣∣]理解为在 γ \gamma γ这个路径规划下把土堆 P 1 P_1 P1挪到土堆 P 2 P_2 P2所需要的消耗,而Wasserstein距离
就是在最优路径规划下的最小消耗,所以Wasserstein距离
又叫Earth-Mover距离
(推土机距离
)。
Wasserstein距离
相比于KL散度
和SL散度
的优势在于:
即使两个分布的支撑集没有重叠或者重叠非常小,Wasserstein距离
仍然能够反映两个分布的远近,而在此情况下JS散度
是常量,KL散度
则可能没有意义。
https://zhuanlan.zhihu.com/p/74075915