自然语言处理_02信息论基础

熵(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)=xXp(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(YX)=xXp(x)H(YX=x)=xXp(x)yYp(yx)log2p(yx)=xXyYp(x,y)log2p(yx)

连锁规则、联合熵

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)=xXyYp(x,y)log[p(x)p(yx)]=xXyYp(x,y)[logp(x)+logp(yx)]=xXyYp(x,y)logp(x)xXyYp(x,y)logp(yx)=xXp(x)logp(x)xXyYp(x,y)logp(yx)=H(X)+H(YX)

在这里插入图片描述

例2-3:简单的波利尼西亚语(Polynesian)是一些随机 的字符序列,其中部分字符出现的概率为:p: 1/8, t: 1/4, k: 1/8, a: 1/4, i: 1/8, u: 1/8。

  1. 那么,每个字符的熵为:
    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)=xXp(x)log2p(x)=2.5bits
    这个结果表明,我们可以设计一种编码,传输一 个字符平均只需要2.5个比特。由于比特位只能取整数,则在这里插入图片描述
    这种语言的字符分布并不是随机变量,但是,我 们可以近似地将其看作随机变量。如果将字符按元音 和辅音分成两类,元音随机变量 V={a, i, u},辅音随 机变量 C={p, t, k}。
  2. 假定所有的单词都由CV(consonant-vowel)音节序列组成,其边缘分布 P(C, ·) 和 P(·, V)如下表所示:
    在这里插入图片描述
    注意,这里的边缘概率是基于每个音节的,其值是基于每个字符的概率的两倍,因此,每个字符的概率值应该为相应边缘概率的1/2:
    在这里插入图片描述
  3. 求联合熵可以有几种方法,以下我们采用连锁规则方法:

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,kp(c)logp(c)=2×81×log8143×log43=4943log31.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(VC)=c=p,kp(C=c)H(VC=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(VC)=4943log3+8112.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)=n1x1np(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(pq)=xXp(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(pq)=xp(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)=nlimn1x1np(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)=nlimn1logq(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)2n1logq(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(XY)=xXp(x)log2p(x)+xXyYp(x,y)log2p(xy)=xXyYp(x,y)(log2p(xy)log2p(x))=xXyYp(x,y)(log2p(x)p(xy))
互信息 I (X; Y) 是在知道了 Y 的值以后 X 的不确定性的减少量,即Y 的值透露了多少关于 X 的信息量。
在这里插入图片描述由于 H ( X ∣ X ) = 0 H(X | X) =0 H(XX)=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(XX)=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(yx)

互信息值越大,表示两个汉字之间的结合越紧密,越可能成词。反之,断开的可能性越大。当两个汉字 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(cici+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)称为平均互信息,平均互信息不可能为负值。

参考资料:中国科学院大学宗成庆老师《自然语言处理》课程

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值