信息熵等相关基础知识
信息熵、交叉熵
信息熵
熵的概念来源于信息论,常用来度量一个事件的复杂度,或者不确定性。
早在1948年,香农(Shannon)在他著名的《通信的数学原理》论文中指出:“信息是用来消除随机不确定性的东西”,并提出了“信息熵”的概念(借用了热力学中熵的概念),来解决信息的度量问题。
自信息
自信息 :一个事物本身所包含的信息量,由事件的不确定性决定的。
自信息(self-information)概念,是从概率角度给出,对信息量的描述:
I
(
x
)
=
−
l
o
g
(
p
(
x
)
)
I(x)=-log(p(x))
I(x)=−log(p(x))。对概率取对数,是为了满足联合概率的信息的可加性,即两个事件均发生的概率要相乘,但反映在信息量上要相加;再取负值,是因为小概率的事件信息量更大,大概率事件的信息量更小。
自信息满足的公理化条件
(1)I(x)是p的严格递减函数,概率越小,事件发生的不确定就越大,事件的自信息量就越大。
(2) 极限情况下,当概率趋近于0时,自信息量等于1。当概率趋近于1时,自信息量等于0。
(3)由两个相对独立的不同的信息所提取出的自信息量应等于它们分别提供的自信息量之和,即自信息量满足可加性。
自信息量的单位(取决于对数的底) 底为2,单位为“比特(bit)”; 底为e,单位为“奈特(nat)”; 底为10,单位为“哈特(hat)
在不加说明的情况下,我们通常选择log来表示数学中的自然对数函数ln(以e为底的log函数)。在信息论中,我们将定义的I(x)的单位成为奈特(nat)。1奈特是以1/e的概率观测到一个事件时获得的信息量。
信息熵 H(x)
熵表示信源X每发一个信息所提供的平均信息量,也可以视为描述一个随机变量的不确定性的数量。一个随机变量的熵越大,它的不确定性越大,那么正确估计其值的可能性就越小。
若X是一个离散型随机变量,其概率分布为p(x)=P(X=x), 则X的熵H(x)定义为:
H
(
x
)
=
E
x
∼
p
[
I
(
x
)
]
=
−
∑
i
=
0
∞
p
(
x
)
l
o
g
p
(
x
)
H(x) = E_{x∼p}[I(x)] = -\sum_{i=0}^\infty p(x)log p(x)
H(x)=Ex∼p[I(x)]=−i=0∑∞p(x)logp(x)
信息熵的性质:
-
非负性,概率P大于0小于1,-logP也横大于零0,故信息熵的值恒大于0。
-
极值性,当x出现的概率都一致时,不确定性最大,信息熵最大。
信息熵(Information Entropy),是自信息的期望值,是一个概率分布的自信息的加权平均。
联合熵H(X,Y)
对于服从联合分布为p(x,y)的一对离散随机变量(X,Y),其联合熵H(X,Y) (joint entropy)定义为:
H
(
x
,
y
)
=
−
∑
x
∈
X
∑
y
∈
Y
p
(
x
,
y
)
l
o
g
p
(
x
,
y
)
H(x,y) =- \sum_{x∈X} \sum_{y∈Y}p(x,y) log p(x,y)
H(x,y)=−x∈X∑y∈Y∑p(x,y)logp(x,y)
条件熵H(X|Y)
若(X,Y)~p(x,y),条件熵(Conditional entropy) H(Y|X)定义为
H
(
Y
∣
X
)
=
−
∑
x
∈
X
p
(
x
)
H
(
Y
∣
X
=
x
)
=
−
∑
x
∈
X
p
(
x
)
∑
y
∈
Y
p
(
y
∣
x
)
l
o
g
p
(
y
∣
x
)
=
−
∑
x
∈
X
∑
y
∈
Y
p
(
x
,
y
)
l
o
g
p
(
y
∣
x
)
=
−
E
[
l
o
g
p
(
Y
∣
X
)
]
H(Y|X) \\ =- \sum_{x∈X}p(x)H(Y|X=x) \\ =-\sum_{x∈X}p(x)\sum_{y∈Y}p(y|x) log p(y|x) \\ =- \sum_{x∈X}\sum_{y∈Y}p(x,y)log p(y|x) \\ = -E[log p(Y|X)]
H(Y∣X)=−x∈X∑p(x)H(Y∣X=x)=−x∈X∑p(x)y∈Y∑p(y∣x)logp(y∣x)=−x∈X∑y∈Y∑p(x,y)logp(y∣x)=−E[logp(Y∣X)]
互信息 I(X,Y)
互信息:一个事件所给出关于另一个事件的信息量,互信息就是已知事件y后所消除的关于x的不确定性。考虑两个随机变量X和Y,他们的联合概率密度函数为p(x,y),其边际概率密度函数分别为p(x)和p(y)。互信息I(X;Y)为联合分布p(x,y)和p(x)p(y)之间的相对熵,即:
I
(
X
,
Y
)
=
−
∑
x
∈
X
∑
y
∈
Y
p
(
x
,
y
)
l
o
g
p
(
x
,
y
)
p
(
x
)
p
(
y
)
I(X,Y) =- \sum_{x∈X} \sum_{y∈Y} p(x,y) log \frac{p(x,y)} {p(x)p(y)}
I(X,Y)=−x∈X∑y∈Y∑p(x,y)logp(x)p(y)p(x,y)
互信息定义为两个随机变量之间相互独立程度的衡量值。当两个随机变量之间存在相互依赖关系时,它们的互信息值是正的。反之,当两个随机变量之间没有任何依存关系时,它们的互信息值为0.
交叉熵 H(P,Q)
交叉熵刻画的是两个概率分布之间的差异信息。在信息论中,交叉熵是表示两个概率分布p,q,其中p表示真实分布(我们观察到的分布),q表示非真实分布(一般这个东西表示为理论分布),在相同的一组事件中,其中,用非真实分布q来表示某个事件发生所需要的平均比特数。
从计算的角度看,交叉熵的计算和信息熵的计算是一致的,看下图,只是把信息熵里一个概率改成了两个概率。
如果按照真实分布p来衡量识别一个样本所需的编码长度的期望,即信息熵为:
H ( p ) = ∑ i p ( i ) l o g ( 1 p ( i ) ) H(p) = \sum_{i} p(i)log {\left( \frac{1}{p(i)} \right)} H(p)=i∑p(i)log(p(i)1)
如果使用错误的分布q来标识真实分布p的平均编码长度,即交叉熵为:
H ( p , q ) = ∑ i p ( i ) l o g ( 1 q ( i ) ) H(p,q) = \sum_{i} p(i)log {\left( \frac{1}{q(i)} \right)} H(p,q)=i∑p(i)log(q(i)1)
两个概率分布间差异度量有:交叉熵、KL散度、JS散度。
相对熵 D(P||Q)、KL散度
相对熵是两个概率分布间差异的非对称性度量。在信息论中,相对熵等价于两个概率分布的信息熵的查差值。若P、Q为随机变量上的两个概率分布,相对熵的定义为:
D
K
L
(
P
∣
∣
Q
)
=
∑
x
P
(
x
)
l
o
g
P
(
x
)
Q
(
x
)
D_{KL}(P||Q)=\sum_{x} P(x)log \frac{P(x)}{Q(x)}
DKL(P∣∣Q)=x∑P(x)logQ(x)P(x)
交叉熵、相对熵与信息熵的关系:
D K L ( P ∣ ∣ Q ) = H ( P , Q ) − H ( P ) D_{KL}(P||Q)=H(P,Q) -H(P) DKL(P∣∣Q)=H(P,Q)−H(P)
D K L ( P ∣ ∣ Q ) = ∑ x P ( x ) l o g P ( x ) Q ( x ) = ∑ x P ( x ) l o g ( 1 Q ( x ) ) − ∑ x P ( x ) l o g 1 P ( x ) = H ( P , Q ) − H ( P ) D_{KL}(P||Q)=\sum_{x} P(x)log \frac{P(x)}{Q(x)} \\= \sum_{x} P(x)log {\left( \frac{1}{Q(x)} \right)}- \sum_{x} P(x)log \frac{1}{P(x)} \\=H(P,Q) -H (P) DKL(P∣∣Q)=x∑P(x)logQ(x)P(x)=x∑P(x)log(Q(x)1)−x∑P(x)logP(x)1=H(P,Q)−H(P)
P表示真实的数据分布,Q表示数据的理论分布,从信息论的角度,相对熵是用来度量使用基于Q的编码来编码来自P的样本平均所需要的额外比特数(位元数)(注意前后顺序,因为这时个非对称性度量)。
在机器学习中,P 往往用来表示样本的真实分布,Q 用来表示模型所预测的分布,那么 KL 散度就可以计算两个分布的差异,也就是 Loss 损失值。
从 KL 散度公式中可以看到 Q 的分布越接近 P(Q 分布越拟合 P),那么散度值越小,即损失值越小。
因为对数函数是凸函数,所以 KL 散度的值为非负数。
有时会将 KL 散度称为 KL 距离,但它并不满足距离的性质:
-
KL 散度不是对称的;
-
KL 散度不满足三角不等式。
相对熵具有以下性质:
- 如果p(x)和q(x)的分布相同,则其相对熵等于0
- DKL(p∥q)≠DKL(q∥p),也就是相对熵不具有对称性。
- DKL(p∥q)≥0
JS 散度
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(P1||P2)=\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)
Wasserstein 距离
KL 散度和 JS 散度度量的问题:
如果两个分配 P,Q 离得很远,完全没有重叠的时候,那么 KL 散度值是没有意义的,而 JS 散度值是一个常数。这在学习算法中是比较致命的,这就意味这这一点的梯度为 0。梯度消失了。
Wasserstein 距离度量两个概率分布之间的距离,定义如下
W ( P 1 , P 2 ) = inf γ ∼ Π ( P 1 , P 2 ) E ( x , y ) ∼ γ [ ∣ ∣ x − y ∣ ∣ ] W(P1,P2)= \inf_{γ∼Π(P1,P2)} E_{(x,y)∼γ}{\left[ ||x-y|| \right]} W(P1,P2)=γ∼Π(P1,P2)infE(x,y)∼γ[∣∣x−y∣∣]
Π(P1,P2)是 P1 和 P2 分布组合起来的所有可能的联合分布的集合。对于每一个可能的联合分布 γ,可以从中采样(x,y)∼γ 得到一个样本 x 和 y,并计算出这对样本的距离||x−y||,所以可以计算该联合分布 γ 下,样本对距离的期望值 E(x,y)∼γ[||x−y||]。在所有可能的联合分布中能够对这个期望值取到的下界 infγ∼Π(P1,P2)E(x,y)∼γ[||x−y||]就是 Wasserstein 距离。
直观上可以把 E(x,y)∼γ[||x−y||]理解为在 γ 这个路径规划下把土堆 P1 挪到土堆 P2 所需要的消耗。而 Wasserstein 距离就是在最优路径规划下的最小消耗。所以 Wesserstein 距离又叫 Earth-Mover 距离。
Wasserstein 距离相比 KL 散度、JS 散度的优越性在于,即便两个分布没有重叠,Wasserstein 距离仍然能够反映它们的远近;而 JS 散度在此情况下是常量,KL 散度可能无意义。
KL散度和JS散度是突变的,Wasserstein距离却是平滑的,如果我们要用梯度下降法优化 参数,前两者提供不了梯度,Wasserstein距离却可以。
Reference
参考:
[1]: https://blog.csdn.net/qq_41944420/article/details/116993757
[2]: https://blog.csdn.net/LEEANG121/article/details/102735241
[3]: https://blog.csdn.net/tangxianyu/article/details/105759989
[4]: https://blog.csdn.net/lgzlgz3102/article/details/122335357