熵(entropy)
如果X是离散型随即变脸,则X的熵为:
H
(
X
)
=
−
∑
x
∈
X
p
(
x
)
log
2
p
(
x
)
H(X)=-\sum_{x \in X} p(x) \log _{2} p(x)
H(X)=−x∈X∑p(x)log2p(x)
约定
0
l
o
g
0
=
0
0log0=0
0log0=0。熵的单位为二进制比特bit。
熵又成为自信息self-information,表示信息源X每发送一个符号提供的平均信息量,也可视为信息元X不确定性的大小。
汉字的信息熵为9.71bit,汉语词的熵为11.46bit。规范文本中汉语词汇平均长度为2.5个汉字。
条件熵(conditional entropy)
给定随机变量X的条件下,随机变量Y的条件熵为:
H
(
Y
∣
X
)
=
∑
x
∈
X
p
(
x
)
H
(
Y
∣
X
=
x
)
=
∑
x
∈
X
p
(
x
)
[
−
∑
y
∈
Y
p
(
y
∣
x
)
log
2
p
(
y
∣
x
)
]
=
−
∑
x
∈
X
∑
y
∈
Y
p
(
x
,
y
)
log
2
p
(
y
∣
x
)
\begin{aligned} H(Y | X) &=\sum_{x \in X} p(x) H(Y | X=x) \\ &=\sum_{x \in X} p(x)\left[-\sum_{y \in Y} p(y | x) \log _{2} p(y | x)\right] \\ &=-\sum_{x \in X} \sum_{y \in Y} p(x, y) \log _{2} p(y | x) \end{aligned}
H(Y∣X)=x∈X∑p(x)H(Y∣X=x)=x∈X∑p(x)⎣⎡−y∈Y∑p(y∣x)log2p(y∣x)⎦⎤=−x∈X∑y∈Y∑p(x,y)log2p(y∣x)
连锁规则、联合熵
H ( X , Y ) = − ∑ x ∈ X ∑ y ∈ Y p ( x , y ) log [ p ( x ) p ( y ∣ x ) ] = − ∑ x ∈ X ∑ y ∈ Y p ( x , y ) [ log p ( x ) + log p ( y ∣ x ) ] = − ∑ x ∈ X ∑ y ∈ Y p ( x , y ) log p ( x ) − ∑ x ∈ X ∑ y ∈ Y p ( x , y ) log p ( y ∣ x ) = − ∑ x ∈ X p ( x ) log p ( x ) − ∑ x ∈ X ∑ y ∈ Y p ( x , y ) log p ( y ∣ x ) = H ( X ) + H ( Y ∣ X ) \begin{aligned} H(X, Y) &=-\sum_{x \in X} \sum_{y \in Y} p(x, y) \log [p(x) p(y | x)] \\ &=-\sum_{x \in X} \sum_{y \in Y} p(x, y)[\log p(x)+\log p(y | x)] \\ &=-\sum_{x \in X} \sum_{y \in Y} p(x, y) \log p(x)-\sum_{x \in X} \sum_{y \in Y} p(x, y) \log p(y | x) \\ &=-\sum_{x \in X} p(x) \log p(x)-\sum_{x \in X} \sum_{y \in Y} p(x, y) \log p(y | x)\\ &=H(X)+H(Y | X) \end{aligned} H(X,Y)=−x∈X∑y∈Y∑p(x,y)log[p(x)p(y∣x)]=−x∈X∑y∈Y∑p(x,y)[logp(x)+logp(y∣x)]=−x∈X∑y∈Y∑p(x,y)logp(x)−x∈X∑y∈Y∑p(x,y)logp(y∣x)=−x∈X∑p(x)logp(x)−x∈X∑y∈Y∑p(x,y)logp(y∣x)=H(X)+H(Y∣X)
例2-3:简单的波利尼西亚语(Polynesian)是一些随机 的字符序列,其中部分字符出现的概率为:p: 1/8, t: 1/4, k: 1/8, a: 1/4, i: 1/8, u: 1/8。
- 那么,每个字符的熵为:
H ( P ) = − ∑ x ∈ X p ( x ) log 2 p ( x ) = 2.5 b i t s H(P)=-\sum_{x \in X} p(x) \log _{2} p(x)=2.5bits H(P)=−x∈X∑p(x)log2p(x)=2.5bits
这个结果表明,我们可以设计一种编码,传输一 个字符平均只需要2.5个比特。由于比特位只能取整数,则
这种语言的字符分布并不是随机变量,但是,我 们可以近似地将其看作随机变量。如果将字符按元音 和辅音分成两类,元音随机变量 V={a, i, u},辅音随 机变量 C={p, t, k}。 - 假定所有的单词都由CV(consonant-vowel)音节序列组成,其边缘分布 P(C, ·) 和 P(·, V)如下表所示:
注意,这里的边缘概率是基于每个音节的,其值是基于每个字符的概率的两倍,因此,每个字符的概率值应该为相应边缘概率的1/2:
- 求联合熵可以有几种方法,以下我们采用连锁规则方法:
H ( C ) = − ∑ c = p , t , k p ( c ) log p ( c ) = − 2 × 1 8 × log 1 8 − 3 4 × log 3 4 = 9 4 − 3 4 log 3 ≈ 1.061 ( bits ) \begin{aligned} H(C) &=-\sum_{c=p, t, k} p(c) \log p(c)=-2 \times \frac{1}{8} \times \log \frac{1}{8}-\frac{3}{4} \times \log \frac{3}{4} \\ &=\frac{9}{4}-\frac{3}{4} \log 3 \approx 1.061(\text { bits }) \end{aligned} H(C)=−c=p,t,k∑p(c)logp(c)=−2×81×log81−43×log43=49−43log3≈1.061( bits )
H
(
V
∣
C
)
=
∑
c
=
p
,
k
p
(
C
=
c
)
H
(
V
∣
C
=
c
)
=
1
8
(
1
2
,
1
2
,
0
)
+
3
4
H
(
1
2
,
1
4
,
1
4
)
+
1
8
H
(
1
2
,
0
,
1
2
)
=
11
8
=
1.375
(
bits
)
\begin{aligned}H(V | C) &=\sum_{c=p, k} p(C=c) H(V | C=c) \\ &=\frac{1}{8} \left(\frac{1}{2}, \frac{1}{2}, 0\right)+\frac{3}{4} H\left(\frac{1}{2}, \frac{1}{4}, \frac{1}{4}\right)+\frac{1}{8} H\left(\frac{1}{2}, 0, \frac{1}{2}\right)=\frac{11}{8}=1.375(\text { bits }) \end{aligned}
H(V∣C)=c=p,k∑p(C=c)H(V∣C=c)=81(21,21,0)+43H(21,41,41)+81H(21,0,21)=811=1.375( bits )
根据连锁规则:
H ( C , V ) = H ( C ) + H ( V ∣ C ) = 9 4 − 3 4 log 3 + 11 8 ≈ 2.44 \begin{aligned} H(C, V) &=H(C)+H(V | C) \\ &=\frac{9}{4}-\frac{3}{4} \log 3+\frac{11}{8} \approx 2.44 \end{aligned} H(C,V)=H(C)+H(V∣C)=49−43log3+811≈2.44
一般地,对于一条长度为 n 的信息,每一个字符或字的熵为:
H
r
a
t
e
=
1
n
H
(
X
1
n
)
=
−
1
n
∑
x
1
n
p
(
x
1
n
)
log
p
(
x
1
n
)
H_{\mathrm{rate}}=\frac{1}{n} H\left(X_{1 n}\right)=-\frac{1}{n} \sum_{x_{1 n}} p\left(x_{1 n}\right) \log p\left(x_{1 n}\right)
Hrate=n1H(X1n)=−n1x1n∑p(x1n)logp(x1n)
这个数值我们也称为熵率(entropy rate)。其中,变量
X
1
n
X_{1n}
X1n表示随机变量序列 (
X
1
X_{1}
X1, …,
X
n
X_{n}
Xn),
x
1
n
x_{1n}
x1n=(
x
1
x_{1}
x1, …,
x
n
x_{n}
xn)表 示随机变量的具体取值。有时将
x
1
n
x_{1n}
x1n写成:
x
1
n
x_1^n
x1n。
相对熵
相对熵(relative entropy, 或称 Kullback-Leibler divergence, KL 距离) 。两个概率分布 p(x) 和 q(x) 的相对熵定义为:
D ( p ∥ q ) = ∑ x ∈ X p ( x ) log p ( x ) q ( x ) D(p \| q)=\sum_{x \in X} p(x) \log \frac{p(x)}{q(x)} D(p∥q)=x∈X∑p(x)logq(x)p(x)
相对熵常被用以衡量两个随机分布的差距。当两个随机分布相同时,其相对熵为0。当两个随机分布的差别增加时,其相对熵也增加。
交叉熵
如果一个随机变量 X ~ p(x),q(x)为用于近似 p(x) 的概率分布,那么,随机变量 X 和模型 q 之间的交叉熵(cross entropy) 定义为:
H
(
X
,
q
)
=
H
(
X
)
+
D
(
p
∥
q
)
=
−
∑
x
p
(
x
)
log
q
(
x
)
\begin{aligned} H(X, q) &=H(X)+D(p \| q) \\ &=-\sum_{x} p(x) \log q(x) \end{aligned}
H(X,q)=H(X)+D(p∥q)=−x∑p(x)logq(x)
交叉熵的概念用以衡量估计模型与真实概率分布之间的差异。
对于语言 L = (X) ~ p(x) 与其模型 q 的交叉熵定义为:
H
(
L
,
q
)
=
−
lim
n
→
∞
1
n
∑
x
1
n
p
(
x
1
n
)
log
q
(
x
1
n
)
H(L, q)=-\lim _{n \rightarrow \infty} \frac{1}{n} \sum_{x_{1}^{n}} p\left(x_{1}^{n}\right) \log q\left(x_{1}^{n}\right)
H(L,q)=−n→∞limn1x1n∑p(x1n)logq(x1n)
信息论中有如下定理:
假定语言 L 是稳态(stationary)遍历性(ergodic)随机过程, 为L的样本,那么有:
H
(
L
,
q
)
=
−
lim
n
→
∞
1
n
log
q
(
x
1
n
)
H(L, q)=-\lim _{n \rightarrow \infty} \frac{1}{n} \log q\left(x_{1}^{n}\right)
H(L,q)=−n→∞limn1logq(x1n)
由此,我们可以根据模型 q 和一个含有大量数据 的 L 的样本来计算交叉熵。在设计模型 q 时,目的是使交叉熵最小,从而使模型最接近真实的概率分布 p(x)。
困惑度(perplexity)
在设计语言模型时,我们通常用困惑度来代替交 叉熵衡量语言模型的好坏。给定语言L的样本 l 1 n l_1^n l1n= l 1 l_1 l1, …, l n l_n ln ,L 的困惑度 P P q PP_q PPq定义为:
语言模型设计的任务就是寻找困惑度最小 的模型,使其最接近真实的语言。
P
P
q
=
2
H
(
L
,
q
)
≈
2
−
1
n
log
q
(
l
1
n
)
=
[
q
(
l
1
n
)
]
−
1
n
P P_{q}=2^{H(L, q)} \approx 2^{-\frac{1}{n} \log q\left(l_{1}^{n}\right)}=\left[q\left(l_{1}^{n}\right)\right]^{-\frac{1}{n}}
PPq=2H(L,q)≈2−n1logq(l1n)=[q(l1n)]−n1
互信息(mutual information)
如果 (X, Y) ~ p(x, y),X, Y 之间的互信息 I(X; Y)
I
(
X
;
Y
)
=
H
(
X
)
−
H
(
X
∣
Y
)
=
−
∑
x
∈
X
p
(
x
)
log
2
p
(
x
)
+
∑
x
∈
X
∑
y
∈
Y
p
(
x
,
y
)
log
2
p
(
x
∣
y
)
=
∑
x
∈
X
∑
y
∈
Y
p
(
x
,
y
)
(
log
2
p
(
x
∣
y
)
−
log
2
p
(
x
)
)
=
∑
x
∈
X
∑
y
∈
Y
p
(
x
,
y
)
(
log
2
p
(
x
∣
y
)
p
(
x
)
)
\begin{aligned} I(X ; Y) &=H(X)-H(X | Y) \\ &=-\sum_{x \in X} p(x) \log _{2} p(x)+\sum_{x \in X} \sum_{y \in Y} p(x, y) \log _{2} p(x | y) \\ &=\sum_{x \in X} \sum_{y \in Y} p(x, y)\left(\log _{2} p(x | y)-\log _{2} p(x)\right) \\ &=\sum_{x \in X} \sum_{y \in Y} p(x, y)\left(\log _{2} \frac{p(x | y)}{p(x)}\right) \end{aligned}
I(X;Y)=H(X)−H(X∣Y)=−x∈X∑p(x)log2p(x)+x∈X∑y∈Y∑p(x,y)log2p(x∣y)=x∈X∑y∈Y∑p(x,y)(log2p(x∣y)−log2p(x))=x∈X∑y∈Y∑p(x,y)(log2p(x)p(x∣y))
互信息 I (X; Y) 是在知道了 Y 的值以后 X 的不确定性的减少量,即Y 的值透露了多少关于 X 的信息量。
由于
H
(
X
∣
X
)
=
0
H(X | X) =0
H(X∣X)=0,所以
H
(
X
)
=
H
(
X
)
−
H
(
X
∣
X
)
=
I
(
X
;
X
)
\begin{aligned} H(X)=H(X)-H(X | X) =I(X;X) \end{aligned}
H(X)=H(X)−H(X∣X)=I(X;X)
这一方面说明了为什么熵又称自信息,另 一方面说明了两个完全相互依赖的变量之间的 互信息并不是一个常量,而是取决于它们的熵。
例如:汉语分词问题
利用互信息值估计两个汉字结合的强度:
I
(
x
;
y
)
=
log
2
p
(
x
,
y
)
p
(
x
)
p
(
y
)
=
log
2
p
(
y
∣
x
)
p
(
y
)
\begin{aligned} I(x;y) =\log _{2} \frac{p(x , y)}{p(x)p(y)} =\log _{2} \frac{p(y|x)}{p(y)} \end{aligned}
I(x;y)=log2p(x)p(y)p(x,y)=log2p(y)p(y∣x)
互信息值越大,表示两个汉字之间的结合越紧密,越可能成词。反之,断开的可能性越大。当两个汉字 x 和 y 关联度较强时,其互信息值 I(x, y)>0;x 与y 关系弱时,I(x, y)≈0;而当I(x, y)<0 时,x 与 y 称为 “互补分布”。
双字耦合度
在汉语分词研究中,有学者用双字耦合度的概念代替互信息: 设 ci,ci+1是两个连续出现的汉字,统计样本中ci, ci+1连续出现在一个词中的次数和连续出现的总次数, 二者之比就是ci,ci+1的双字耦合度:
C
o
u
p
l
e
(
c
i
,
c
i
+
1
)
=
N
(
c
i
,
c
i
+
1
)
N
(
c
i
,
c
i
+
1
)
+
N
(
⋅
⋅
⋅
c
i
∣
c
i
+
1
⋅
⋅
⋅
)
\begin{aligned}Couple(c_i,c_{i+1})=\frac{N(c_i,c_{i+1})}{N(c_i,c_{i+1})+N(···c_i | c_{i+1}···)}\end{aligned}
Couple(ci,ci+1)=N(ci,ci+1)+N(⋅⋅⋅ci∣ci+1⋅⋅⋅)N(ci,ci+1)
例 如:“为人”出现5次,“为人民”出现 20次,那么, Couple(为, 人)=0.2。
例如:“教务”以连续字符串形式在统计样本中共出 现了16次,而“教”字出现了14 945次,“务”字出 现了6 015次。(教, 务) 的互信息只有-0.5119。如果 用互信息来判断该字对之间位置的切分,是要断开的。 但实际上,字对 (教, 务) 在文本集中出现的16次全部 都是“教务”、“教务长”、“教务处”这几个词。 连续字对 (教, 务) 的双字耦合度是1。因此,在判断两 个连续汉字之间的结合强度方面,双字耦合度要比互 信息更合适一些。
说明:两个单个离散事件(xi, yj)之间的互信息I(xi, yj)通 常称为点式互信息(point-wise mutual information) ,点式 互信息可能为负值。两个随机变量(X, Y)之间的互信息 I(X, Y)称为平均互信息,平均互信息不可能为负值。
参考资料:中国科学院大学宗成庆老师《自然语言处理》课程