在学习信息熵时,一直不太理解它到底有什么含义,所以写一点笔记来稍微记录一下。
以下仅为个人理解,如有错误欢迎指正。
信息是个很抽象的概念,人们常常说信息很多,或者信息较少,但却很难说清楚信息到底有多少。比如一本五十万字的中文书到底有多少信息量。
信息熵就是用来度量某条信息中信息量的多少(或者说信息中的不确定性的多少)的概念。
信息的传递
在通信时,存在一个信息发送方和信息接受方,我们通常认为发送方发出的信息是不确定的,只有当接受方收到并检查信息时才能确定信息的内容。
在发送方发出信息后,接受方检查信息前,这条信息对于接收方来说都是不确定的。从接收方的视角来看,这条信息的产生可以看作是从一个包含信息中全部符号的符号池(其中每个符号都有自己的出现概率)中随机挑选符号的过程。比如接收方收到了一条长度为5个符号的信息,可以看做从符号池中依次挑选5个符号来填充这条信息。
如果符号池中包含多个符号,那么我们每一次从符号池中挑选符号的时候并不知道会选出什么符号来,这就造成了不确定性。当挑选过程完成时,这个不确定性就消除了。消除这种不确定性就是通信的目的和结果。
如果符号池中只包含一个符号,那么我们并没有选择,每次只能挑选同一个符号。这时接收方不需要检查发送方的信息就可以预测出信息的内容。
信息的不确定性
来看一个问题,假设我们现在用数字0和1来表示符号,那么:
- 如果这个信息长度为1,那么可能的信息有2( 2 1 2^1 21)条
- 如果这个信息长度为2,那么可能的信息有4( 2 2 2^2 22)条
- 如果这个信息长度为3,那么可能的信息有8( 2 3 2^3 23)条
- 如果这个信息长度为4,那么可能的信息有16( 2 4 2^4 24)条
所以对于长度为4的信息,我们最多需要16次检测就可以确定这条信息的内容,那么我们可以使用可能产生的信息总数来衡量某条信息的不确定性吗?
再来回顾一下信息的产生过程,我们从符号池中随机挑选一个符号来填充信息的一个位置,换言之,如果信息长度为4,那么只需要4次挑选过程就可以确定一条信息。所以我们应该使用信息长度而非所有可能的信息总数来衡量信息的不确定性。
信息熵
在信息论中,我们用信息熵来衡量信息的不确定性。信息熵是按位(bit)来度量的。在前面我们用数字来充当符号,那么熵的单位就是bits per digits;如果我们用字母来充当符号,那么熵的单位就是bits per letter。这里的符号就是指信息中最小的填充单位。
信息熵的计算公式为:
H
=
−
∑
i
=
1
n
p
i
l
o
g
p
i
b
i
t
s
p
e
r
s
y
m
b
o
l
H = - \sum^n_{i=1}p_i\mathrm{log}p_i\ \mathrm{bits\ per\ symbol}
H=−i=1∑npilogpi bits per symbol
信息熵会随着接收方收到信息的不确定性的增加而增加,随着收方收到信息的不确定性的减少而减少。
先用一个简单的例子来了解信息熵:
假设现在符号池中有两个符号X和Y,挑选任意一个都不会影响另外一个被挑选的概率。并且我们知道X被挑选的概率为
p
0
p_0
p0,Y被挑选的概率为
p
1
p_1
p1。这时的熵写为:
H
=
−
(
p
0
l
o
g
p
0
+
p
1
l
o
g
p
1
)
b
i
t
s
p
e
r
s
y
m
b
o
l
H = -(p_0\ \mathrm{log}\ p_0 + p_1\ \mathrm{log}\ p_1) \ \mathrm{bits\ per\ symbol}
H=−(p0 log p0+p1 log p1) bits per symbol
假设现在有一枚硬币,抛出后正面朝上和反面朝上的概率都是0.5。我们可以令X=正面朝上,Y=反面朝上,
p
0
=
p
1
=
0.5
p_0 = p_1 = 0.5
p0=p1=0.5。根据公式可得信息熵为:
H
=
−
(
1
2
l
o
g
1
2
+
1
2
l
o
g
1
2
)
H
=
1
b
i
t
s
p
e
r
t
o
s
s
\begin{aligned} H &= -(\frac{1}{2} \mathrm{log}\frac{1}{2} + \frac{1}{2} \mathrm{log}\frac{1}{2}) \\ H &= 1\ \mathrm{bits\ per\ toss} \end{aligned}
HH=−(21log21+21log21)=1 bits per toss
也就是说,如果我们连续抛投这枚硬币,每一次只需要1位信息就可以表示结果。
假设现在这枚硬币正面朝上的概率为0.75,反面朝上的概率为0.25,那么:
p
0
=
0.75
p
1
=
0.25
H
=
−
(
3
4
l
o
g
3
4
+
1
4
l
o
g
1
4
)
H
=
0.811
b
i
t
s
p
e
r
t
o
s
s
\begin{aligned} p_0 &= 0.75 \\ p_1 &= 0.25 \\ H &= -(\frac{3}{4} \mathrm{log}\frac{3}{4} + \frac{1}{4} \mathrm{log}\frac{1}{4}) \\ H &= 0.811\ \mathrm{bits\ per\ toss} \end{aligned}
p0p1HH=0.75=0.25=−(43log43+41log41)=0.811 bits per toss
此时的熵小于1,也就是说在理想情况下,我们只需要0.811位信息就可以表示结果。
在第二种情况下,硬币正面朝上和反面朝上的概率是不相等的,我们有更大的概率得到正面朝上的结果。换句话说,此时我们从符号池中挑选符号时,有更大的概率挑出正面朝上的结果,结果的不确定性降低了。