信息量、熵、交叉熵、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=1∑np(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=1∑np(xi)log(p(xi))=−p(x)log(p(x))−(1−p(x))log(1−p(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=1∑npilog2qi
四、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=1∑np(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=1∑np(xi)log(p(xi))−i=1∑np(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)∼γ[∥x−y∥]
π
(
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||
∣∣x−y∣∣,所以可以计算该联合分布
γ
gamma
γ下,样本对距离的期望值
E
(
x
,
y
)
∼
γ
[
∣
∣
x
−
y
∣
∣
]
E(x,y)sim gamma [||x-y||]
E(x,y)∼γ[∣∣x−y∣∣]。所有可能的联合分布中能够对这个期望值取到的下界就是Wasserstein距离。(形象理解可搜索推土机距离)
Wasserstein距离相比KL散度、JS散度的优越性在于,即便两个分布没有重叠,Wasserstein距离仍然能够反映它们的远近