初学者在搞清楚这个三个信息论的大怪兽时,往往会晕头转向。本文将简要的对这三个概念进行理清,文章尽量通俗,有不对的地方恳请斧正。
信息熵:
香农提出信息熵主要是用来解决对信息的量化度量问题,比如说存在选项【A,B,C,D】,若每个字母都用8位Ascii码存储,则表示这个四个选项需要32位bit。 如果此时采用二进制的话,4个选项用2位bit便可表示【00,01,10,11】。于是对4个选项信息进行量化为 l o g 2 ( 4 ) = 2 {log}_2(4) =2 log2(4)=2。
值得注意的是,我们在量化这个四个选项信息是隐含了一个附加条件(A,B,C,D)出现的概率相同,各为1/4。如果出现的概率各不相同,我们不一定是将其表述为2进制【00,01,10,11】(各个事件的出现概率相同),这样在信息压缩上并不是最优。在考虑信息编码的时候,如果出现概率值不同,我们会将出现概率大的进行短编码,概率小的进行长编码,这也是哈夫曼编码的思想。
那么当事件的出现概率各不相同时,我们如何衡量信息的编码量呢?此时,需要引入数学上的期望。每个事件出现的概率为 p i p_i pi,那么这个信息量可以表示为期望 ∑ i p i l o g ( 1 / p i ) = − ∑ i p i l o g ( p i ) \sum_i p_i log(1/p_i) = -\sum_i p_i log(p_i) ∑ipilog(1/pi)=−∑ipilog(pi)
那么可以将信息熵定义为:
E
n
t
r
o
p
y
=
−
∑
i
p
i
l
o
g
(
p
i
)
Entropy = -\sum_i p_i log(p_i)
Entropy=−i∑pilog(pi)
所谓信息熵:是对每个可能性编码所需要的期望值,延伸一下,也是对信息的量化指标。香农则将信息熵用来描述信息源的不确定度, 信息熵越大,混乱度越大。
这里再衍生一下,如果有一个硬币,往上抛,落到地上猜正反。那么假如这个硬币是正常硬币的话,则正反的概率均为1/2,此时二元信源的熵达到最大,也就是说我们不知道硬币到底是正,还是反,只能靠猜,信息的混乱度很大,信息源极不确定。
考虑一下,如果这个硬币被动了手脚的,两面都是正,则反的概率为0,代入信息熵的公式可得此时的信息熵为0,也就意味着这个信息是确定的,闭着眼也能知道这个硬币最终是正的。同时,也可以描述信息源是完全确定的。
相对熵:
相对熵也称之为Kullback-Leibler散度(KL散度),是用来衡量两个信息分布的差异性。相对熵是如何去衡量数据分布的差异性呢? K L ( P ∣ ∣ Q ) KL(P||Q) KL(P∣∣Q)指的是如果用事件P代替事件Q进行描述,那么其所获得的信息增量。
数学描述为:
K
L
(
P
∣
∣
Q
)
=
∑
P
(
x
)
l
o
g
(
P
(
x
)
Q
(
x
)
)
=
−
∑
P
(
x
)
l
o
g
(
Q
(
x
)
P
(
x
)
)
KL(P||Q)=\sum P(x) log(\frac{P(x)}{Q(x)}) = -\sum P(x) log(\frac{Q(x)}{P(x)})
KL(P∣∣Q)=∑P(x)log(Q(x)P(x))=−∑P(x)log(P(x)Q(x))
Note: 当P(x) = Q(x)时,KL散度为0,当两者分布差异越大时,KL散度也越大。
此处引用维基百科上的一个例子,
存在下面两个分布P,Q。P为二项分布,Q为均匀分布。
值得注意的是相对熵并不对称,KL(P||Q)不等于KL(Q||P)。
后续为了引入对称的度量,引入了JS分布,此处不细述。
交叉熵:
交叉熵往往在机器学习的分类问题中的很多
我们将相对熵的数学公式进行拆分为:
K L ( P ∣ ∣ Q ) = ∑ P ( x ) l o g ( P ( x ) Q ( x ) ) = ∑ P ( x ) l o g ( P ( x ) ) − ∑ P ( x ) l o g ( Q ( x ) ) = − H ( P ( x ) ) + C r o s s E n t r o p ( P , Q ) KL(P||Q) =\sum P(x) log(\frac{P(x)}{Q(x)}) = \sum P(x) log(P(x)) - \sum P(x) log(Q(x)) = -H(P(x)) + Cross Entrop(P,Q) KL(P∣∣Q)=∑P(x)log(Q(x)P(x))=∑P(x)log(P(x))−∑P(x)log(Q(x))=−H(P(x))+CrossEntrop(P,Q)
交叉熵的定义:
C
r
o
s
s
E
n
t
r
o
p
(
P
,
Q
)
=
−
∑
P
(
x
)
l
o
g
(
Q
(
x
)
)
Cross Entrop(P,Q) = -\sum P(x) log(Q(x))
CrossEntrop(P,Q)=−∑P(x)log(Q(x))
在分类问题中,P(x)为label的one-hot,Q(x)为softmax的结果。由于label的熵不会改变,是一个常数。因此对相对熵进行最小化,也是对交叉熵进行最小化。