[200908] 熵,交叉熵,KL散度
信息熵(Entropy)
信息熵(Entropy)是衡量分布的混乱程度或分散程度的一种度量。分布越分散(或者说分布越平均),信息熵就越大。分布越有序(或者说分布越集中),信息熵就越小。(https://www.cnblogs.com/soyo/p/6893551.html)
信息熵用bit位数来定量表示。
H
(
p
)
=
−
∑
p
i
∗
log
2
p
i
H(p) = -\sum{p_i*\log_2{p_i}}
H(p)=−∑pi∗log2pi
其中
p
i
p_i
pi为X中第i个元素的发生概率,范围是[0,1]
信息熵越大表明样本集S分类越分散,信息熵越小则表明样本集X分类越集中。。当S中n个分类出现的概率一样大时(都是1/n),信息熵取最大值log2(n)。当X只有一个分类时,信息熵取最小值0
交叉熵(Cross Entropy)
交叉熵(Cross Entropy)是Shannon信息论中一个重要概念,主要用于度量两个概率分布间的差异性信息。(https://baike.baidu.com/item/%E4%BA%A4%E5%8F%89%E7%86%B5/8983241)
在机器学习中,经常被用作损失函数。损失最小,则学习到的概率分布就越接近真实分布。
假设现在有一个样本集中两个概率分布p,q,其中p为真实分布,q为预测分布,则交叉熵可以表示为:
H
(
p
,
q
)
=
−
∑
p
i
∗
log
2
q
i
H(p,q) = -\sum{p_i*\log_2{q_i}}
H(p,q)=−∑pi∗log2qi
H(p,q) >= H§
在信息论里,直观理解为采用预测分布q来表示来自真实分布p的平均编码长度。
在监督学习的分类任务中,经常用自然对数的形式。即
L
o
s
s
(
p
,
q
)
=
−
∑
p
i
∗
log
q
i
Loss(p,q) = -\sum{p_i*\log{q_i}}
Loss(p,q)=−∑pi∗logqi
两者实际上是类似的,因为有如下比例关系:
L
o
s
s
(
p
,
q
)
=
l
o
g
10
l
o
g
2
H
(
p
,
q
)
Loss(p,q) = \frac{log10}{log2} H(p,q)
Loss(p,q)=log2log10H(p,q)
KL散度
Kullback-Leibler Divergence,即K-L散度,是一种量化两种概率分布P和Q之间差异的方式,又叫相对熵。在概率学和统计学上,我们经常会使用一种更简单的、近似的分布来替代观察数据或太复杂的分布。K-L散度能帮助我们度量使用一个分布来近似另一个分布时所损失的信息量。(https://www.jianshu.com/p/43318a3dc715)
简单一点,就是KL散度表征了两个分布之间的差异。散度越大,两个分布的差异也越大。KL散度和熵,以及交叉熵之间有如下关系:
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)
因为H(p,q) >= H§,所以KL散度为正数。
同样以监督学习为例:如果预测分布越接近真是分布,则KL散度值越接近0.
很自然地,一些同学把K-L散度看作是不同分布之间距离的度量。这是不对的,因为从K-L散度的计算公式就可以看出它不符合对称性(距离度量应该满足对称性)。
D K L ( p , q ) = H ( p , q ) − H ( p ) ≠ H ( q , p ) − H ( q ) = D K L ( q , p ) D_{KL}(p,q) = H(p,q) - H(p) \not ={H(q,p)-H(q) = D_{KL}(q,p)} DKL(p,q)=H(p,q)−H(p)=H(q,p)−H(q)=DKL(q,p)