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

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


前言

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


一、信息量

信息量是值信息多少的度量,事件的不确定性越大,它承载的信息量就越大,反之,如果一个事件必然发生,那么它的信息量就是0。
某个事件的信息量和该事件发生的概率相关,信息量的计算公式为:
假设

X

X

X是一个离散型随机变量,取值集合为

χ

chi

χ,概率分布函数

p

(

x

)

=

P

(

X

=

x

)

,

x

χ

p(x)=P(X=x),xin 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 Pileft(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距离仍然能够反映它们的远近

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>