信息量、熵、交叉熵、KL散度、JS散度、Wasserstein距离

信息量、熵、交叉熵、KL散度、JS散度

文章目录

  • 信息量、熵、交叉熵、KL散度、JS散度
  • 前言
  • 一、信息量
  • 二、熵
  • 三、交叉熵
  • 四、KL散度
  • 五、JS散度
  • 六、 Wasserstein距离
    • 1.解决的问题
    • 2.Wasserstein距离


前言

提示:该篇文章是笔者综合B站、知乎、CSDN多篇文章所整理,如果文中有错误,感谢大家指正
为了学习GAN模型、WGAN模型,笔者整理了KL散度、JS散度、和Wasserstein距离,掌握它们的定义和计算形式以便于后续的学习。


一、信息量

信息量是值信息多少的度量,事件的不确定性越大,它承载的信息量就越大,反之,如果一个事件必然发生,那么它的信息量就是0。
某个事件的信息量和该事件发生的概率相关,信息量的计算公式为:
假设 X X X是一个离散型随机变量,取值集合为 χ \chi χ,概率分布函数 p ( x ) = P ( X = x ) , x ∈ χ p(x)=P(X=x),x\in \chi p(x)=P(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))

二、熵

一个事件发生的概率为 p ( x ) p(x) p(x),那么它所承载的信息量就是 − l o g ( p ( x ) ) -log(p(x)) log(p(x))。而信息量的期望就是熵
熵的计算公式为:
假设事件X共有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=1np(xi)log(p(xi))
对于二分类问题, p ( x ) p(x) p(x)的取值只有两种情况,其熵的计算如下:
H ( X ) = − ∑ i = 1 n p ( x i ) l o g ( p ( x i ) ) = − p ( x ) l o g ( p ( x ) ) − ( 1 − p ( x ) ) l o g ( 1 − p ( x ) ) H(X)=-\sum^n_{i=1}p(x_i)log(p(x_i))=-p(x)log(p(x))-(1-p(x))log(1-p(x)) H(X)=i=1np(xi)log(p(xi))=p(x)log(p(x))(1p(x))log(1p(x))

三、交叉熵

计算公式:对于一个真实数据分布 p p p和预测 数据分布 q q q,有
H ( p , q ) = − ∑ i = 1 n p i l o g 2 q i H(p,q)=-\sum_{i=1}^n p_ilog_2q_i H(p,q)=i=1npilog2qi

四、KL散度

KL散度用于估计两个概率分布的差距。对于一个随机变量 x x x 有两个单独的概率分布 P ( x ) P(x) P(x) Q ( x ) Q(x) Q(x),可以使用KL散度用于估计两个概率分布的差距。
其计算公式为:
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^n_{i=1}p(x_i)log(\dfrac{p(x_i)}{q(x_i)}) DKL(p∣∣q)=i=1np(xi)log(q(xi)p(xi))
当分布P和Q越接近时,散度越小,损失值越小,且KL散度是非对称的。
将KL散度中 l o g log log部分打开 变形为:
D K L = ∑ 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 ) ) + H ( p , q ) D_{KL}=\sum_{i=1}^np(x_i)log(p(x_i))-\sum_{i=1}^np(x_i)log(q(x_i))=-H(p(x))+H(p,q) DKL=i=1np(xi)log(p(xi))i=1np(xi)log(q(xi))=H(p(x))+H(p,q)
KL散度是由熵和交叉熵两部分组成,而当 p p p的概率分布确实时,KL散度的值就和交叉熵的值相等,所以一般在机器学习中直接用交叉熵做损失函数

五、JS散度

JS散度也用来衡量两个概率分布的相似度,在KL散度的基础上进行变换,从而解决了KL散度非对称的问题,其计算公式为:
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)=\dfrac{1}{2}KL(P_1||\dfrac{P_1+P_2}{2})+\dfrac{1}{2}KL(P_2||\dfrac{P_1+P_2}{2}) JS(P1∣∣P2)=21KL(P1∣∣2P1+P2)+21KL(P2∣∣2P1+P2)

六、 Wasserstein距离

1.解决的问题

不管是KL散度还是JS散度,当P和Q两个分布没有重叠的时候(实际中两个分布很难相似度很高),KL散度的值为 + ∞ +\infty +,而JS散度的值为 l o g 2 log2 log2(WGAN论文中有过程),其梯度为0,这就意味这即使通过参数更新使得两个不相交概率分布更加接近,KL散度和JS散度也不能感知到。

2.Wasserstein距离

定义:
W ( P 1 , P 2 ) = inf ⁡ γ ∼ Π ( P 1 , P 2 ) E ( x , y ) ∼ γ [ ∥ x − y ∥ ] W(P_1,P_2)=\inf _{\gamma \sim \Pi\left(P_{1}, P_{2}\right)} \mathbb{E}_{(x, y) \sim \gamma}[\|x-y\|] W(P1,P2)=γΠ(P1,P2)infE(x,y)γ[xy]
π ( P 1 , P 2 ) \pi(P_1,P_2) π(P1,P2)是P1和P2分布组合起来的所有可能的联合分布的集合。对于每一个可能的联合分布 γ \gamma γ,可以从中采样 ( x , y ) ∼ γ (x,y) \sim \gamma (x,y)γ得到一个样本x和y,并计算出这对样本的距离 ∣ ∣ x − y ∣ ∣ ||x-y|| ∣∣xy∣∣,所以可以计算该联合分布 γ \gamma γ下,样本对距离的期望值 E ( x , y ) ∼ γ [ ∣ ∣ x − y ∣ ∣ ] E(x,y)\sim \gamma [||x-y||] E(x,y)γ[∣∣xy∣∣]。所有可能的联合分布中能够对这个期望值取到的下界就是Wasserstein距离。(形象理解可搜索推土机距离)
Wasserstein距离相比KL散度、JS散度的优越性在于,即便两个分布没有重叠,Wasserstein距离仍然能够反映它们的远近

你可能感兴趣的:(深度学习,机器学习,深度学习)