最近在读一篇工作论文,涉及到自然语言处理(NLP)。自己对这块没有什么了解,决定简单地先学习下,再回过去读论文~此外感觉NLP也是机器学习(ML)在经管领域的重要应用。
一、信息熵
信息熵,先拆分为信息和熵来看。
1. 信息
从“信息”视角看,其作为一个数学模型中的概念,一般来说是可以量化的,那么问题来了“信息是不是可以量化呢?”
从直觉上应该是可以的,我们平时会感觉到有的人废话特别多,没有什么“信息量”。有的人一句话有很大的“信息量”。
那么为什么有的信息量很大,而有的又很小呢?
我们通过两条信息来看一看,如果A告诉你外面下雨了,B告诉你他见到外星人了。同样两条信息A的信息量小,因为事情的不确定性相对小,B的信息量大,因为事情的不确定性相对大。
综上,我们可以看到信息量的大小和事情的不确定性有关。这为我们量化信息提供了一个思路。
2. 熵
从“熵”的视角来看,熵的概念最早起源于物理学,用于表述热力学第二定律。波尔兹曼研究得到,热力学熵与微观状态数目的对数之间存在联系,并给出了公式:
S = k lnW
物理中用熵来度量一个热力学系统的无序程度。
我们从“不确定性”和“无序程度”能看到关联,那么信息熵即平均而言发生一个事件我们得到的信息量大小,表示的是不确定性的度量
二、不确定性
前面我们说了信息量的大小和事情的不确定性有关。那么不确定性的变化和什么有关?
-
和事情的可能结果数量有关。如讨论太阳从哪升起,其只有一个结果,不确定性很小,信息量非常少。相比而言当可能结果数量比较大时,不确定性就大,信息量大。
-
和初始的概率分布有关。例如一开始我就知道小明在电影院的有15*15个座位的A厅看电影。小明可以坐的位置有225个,可能结果数量算多了。可是假如我们一开始就知道小明坐在第一排的最左边的可能是99%,坐其它位置的可能性微乎其微,那么在大多数情况下,你再告诉我小明的什么信息也没有多大用,因为我们几乎确定小明坐第一排的最左边了。
了解不确性大小(换到本文场景中即信息量大小)和事情的可能结果数量、初始的概率分布有关,我们如何通过“数学”来具体刻画表述呢?
我们来看看手边这块等待被刻的“石头”—信息量,应该有什么特点?
- 最起码不应该是个负数
- 信息量间应该要可以相加
- 信息量是连续依赖于概率
- 假如每一个可能的结果出现的概率一样,那么对于可能结果数量多的那个事件,新信息有更大的潜力具有更大的信息量,因为初始状态下不确定性更大。
那么什么样的函数可以满足上面四个条件呢?
答案是负的对数函数,即-log(x)
我们再来具体看下用-log(x)的原因:
- 为什么不是正的?因为如果是正的,由于x≤1,log(x)≤0,不满足特点一。
- x是概率值,显然log(x)是连续依赖于x的。满足条件三。
- 假设有n个可能的结果,那么出现任意一个的概率是1/n,而-log(1/n)是n的增函数,满足特点四。
- -log(xy) = -log(x) -log(y),满足特点二。注意,这里的y可以是给定x的条件概率,当然也可以独立于x。
综上,我们知道衡量一个事件的信息量就是这件事情发生的概率的负对数。
三、公式
公式信息熵就是平均而言发生一个事件我们得到的信息量大小。所以数学上,信息熵其实是信息量的期望。公式中p(x)表示概率,-logp(x)表示信息量。
信息越少,事件(变量)的不确定性越大,其信息熵也就越大。搞明白该事件所需要的信息就越多,即弄明白小概率事件所需要的额外信息较多。总之,信息熵表示的是不确定性的度量,信息熵越大,不确定性越大。
联合熵描述的是一对随机变量X和Y的不确定性
联合熵条件熵衡量的是在一个随机变量X已知的情况下,另一个随机变量Y的不确定性
条件熵互信息是衡量两个随机变量(事件) 的相关程度,当X和Y完全相关时,它们的互信息就是 1;反之,当X和Y完全无关时,它们的互信息就是 0。
互信息点互信息可以用来表示两个具体的事件的相关度。上面的互信息其实就是对X和Y的所有可能的取值情况的点互信息PMI的加权和。
互信息和熵有如下关系:
相对熵是衡量相同事件空间里两个概率分布(函数)的差异程度(不同于前面的熵和互信息,互信息衡量的是随机变量的关系),当两个概率分布完全相同时,他们的相对熵就为 0,当他们的差异增加时,相对熵就会增加。 相对熵又叫 KL 距离,但是它不满足距离定义的三个条件中的两个: 1、非负性(满足); 2、对称性(不满足); 3、三角不等式(不满足)。它的物理意义就是如果用 Q 分布来编码 P 分布(一般就是真实分布)的话, 平均每个基本事件编码长度增加了多少比特。
相对熵KL距离和互信息
I(X;Y) = DKL(p(x,y)||p(x)p(y)) = EX[DKL(p(y|x)||p(y)] = EY[DKL(p(x|y)||p(x)]
如果X和Y不相关,即有p(x,y) = p(x)p(y),则 DKL(p||q)=0,互信息也为0,。可以看出互信息是KL距离的期望。
交叉熵表示用分布Q来表示P的熵是多少,即用分布Q来编码P需要多付出多少比特。
四、例子
互信息是衡量两个随机变量(事件)的相关程度,那么词的互信息,就是衡量两个词的相关程度, 比如, “计算机”和“硬件”的互信息就比“计算机”和“杯子”的互信息要大,因为它们更关。
那么如何在大量的语料下统计出词与词的互信息呢?公式中可以看到需要计算三个值:
**p(x)、 p(y)和p(x, y), **它们分别表示x独立出现的概率, y独立出现的概率, x 和 y同时出现的概率。 前两个很容易计算,直接统计下词频然后除以总词数就知道了,最后一个也很容易,统计一下x 和 y同时出现(通常会限定一个窗口) 的频率除以所有无序对的个数就可以了。这样,词的互信息就计算出来了。
- 衡量like的极性(正向情感还是负向情感)
可以预先挑选一些正向情感的词,比如good。然后算like跟good的PMI,即:PMI(like,good)=logp(like,good)p(like)p(good)
其中p(like)是like在语料库中出现的概率(出现次数除以总词数N),p(like,good)表示like跟good在一句话中同时出现的概率(like跟good同时出现的次数除以N2)。PMI(like,good)越大表示like的正向情感倾向就越明显。
参考资料:
- 信息熵是什么?
- 维基百科-熵 (信息论)
- 《文本上的算法》
- 什么是点互信息
网友评论