第六章:信息的度量和作用

1.信息熵

我们用一个生动的例子来说明这个概念:刚好这几天举行世界杯,我们都会猜谁会获得冠军。假设有32支球队,编号从1-32。然后问:“冠军是在1-16中吗?”,不是的话就是在6-32中,一次类推。我们最多需要猜测5次就能猜出谁是冠军(log32)。但事实上,我们可能不需要5次就能猜出来,因为像巴西,德国,意大利这样的强队获得冠军的可能性比其他的要高。然后分组的时候,把少数几支强队放在一组。,以此类推,就不需要5次就能算出来。香农不用次,而是用“比特”(Bit)这个概念来衡量信息量。他指出,以上的准确信息量是:

其中pi为各个球队夺冠的概率,H我们称为信息熵。当p相等的时候,H最大,等于5,其他情况下均小于5.

我们来正式定义下熵,给定随机输入向量X(比如球队夺冠的概率),则:

2.信息的作用

故事我们就不讲了,我们知道,一个事务(比如地方的一个战略决定)内部会存在着随机性,也就是不确定性,假定为U,而从外部消除这个不确定性唯一的方法是引入信息I,I的大小取决于U的大小,即I > U。当I < U时,这些信息可以消除一部分不确定性,产生新的不确定性:U’= U - I (6.3)

在网页搜索中,本质就是从大量(几十亿)网页中找到和用户输入相关的网页。几十亿个网页,不确定性U很大,我们的目的就是要减少U,也就是尽量消除不确定性。如果提供的信息不够多,网页量还是很大,这时,正确的做法是挖掘新的隐含信息,比如网页本身的质量信息,如果还不行,就问用户。不正确的做法是在关键词上玩数字和公式游戏,甚至引入人为假设,这和蒙没什么区别。

知道的信息越多,随机事件的不确定性就越小。这些信息可以是直接的,也可以是间接(相关)的。由于这些“相关”信息的存在,在此,我们引入条件熵的概念。

假设X、Y是两个随机变量,X是我们需要了解的。假定我们知道了X的分布P(X),那么就知道了X的熵(6.2),假定我们还知道Y的一些情况,包括X和Y一起出现的概率(即联合概率)以及Y取不同值的前提下X的概率分布(条件概率)。则X在Y下的条件熵为:

我们可以证明一元模型的信息熵最大,三元最小,即三元模型最好。

综上,其实我们就是讲了信息的作用在于消除不确定性,NLP的大量问题就是找相关的信息。

3.延伸阅读:信息论在信息处理中的应用

3.1 互信息

香农在信息论中,提出了“互信息”的概念,用来量化度量两个随机事件“相关性”。假定两个随机时间X和Y,则他们的互信息定义如下:

这个公式就比较清楚了,哦~其实就是在有了Y的前提下,对消除X的不确定性所提供的信息量。

在NLP中,我们很容易就能统计出p(x,y),P(x)和p(y)。进而算出互信息。

举个实际应用的例子。美国总统布什(Bush),也可以翻译成灌木丛。我们怎么去正确翻译Bush呢?有人说,加上总统做宾语时,主语就是个人名,但是这样的话,其他多意单词也要有相关的规则,总的下来就得有无数的规则来规范我们的机器翻译结果。而且主席(总统)未必是一个国家的,很多国际组织的都有一个国家作为轮值主席。那么,最好的办法,就是使用互信息了。一般作为总统布什的时候,他总是和总统,华盛顿,美国,白宫一起出现,同样的,作为灌木丛的时候,一般和土壤,植物,野生等一起出现。有了这样的两组词,我们就可以看上下文来判断Bush的意思。

3.2 相对熵

相对熵,又名“交叉熵”。它也用来衡量相关性,但不同的是,它用来衡量两个取值为正的函数的相似性,定义如下:

  我们不用关心公式怎样,再复杂,也有电脑计算。我们只要记住下面三条结论就好:

  1.对两个完全相同的函数,相对熵为0

  2.相对熵越大,函数差异越大

  3.对于概率分布或者概率密度函数,如果取值均大于0,相对熵可以度量两个随机分布的差异性。

  相对熵应用很多,比如可以用来衡量两个常用词(在语法和语义上)在不同文本中的概率分布,以判断那他们是否同义;或者根据两篇文章中不同词的分布,看看他们的内容是否相近等。利用相对熵,可以得到信息检索中一个最重要的概念:TF-IDF。

  信息熵是对不确定性的衡量,因此可以向向它能直接衡量统计语言模型的好坏。因为有了上下文关系,所以我们应该用条件熵。若再考虑从训练语料和真实应用的文本中得到的概率函数有偏差,就要引入相对熵。贾里尼克从条件熵和信息熵出发,定义了语言模型复杂度的概念。用于衡量语言模型的好坏。

时间: 2024-10-14 23:46:22

第六章:信息的度量和作用的相关文章

数学之美札记:信息的度量和作用

1948年,香农在著名论文"通信的数学原理"中提出了"信息熵"的概念,解决了信息的度量问题,并且量化出信息的作用. 香农使用了"比特"(Bit)这个概念来度量信息量.一个比特是一位二进制数,计算机中的一个字节是8比特.举个例子,32支球队参加世界杯,赛后猜测谁是冠军,通常只需要5五次,就可以得到答案.(把球队编号1-32,然后提问类似的问题:"冠军在1-16号中吗?",只需要提问五次),可以发现,信息量的比特数和所有情况的对数

【软件构造】第六章第一节 可维护性的度量与构造原则

第六章第一节 可维护性的度量与构造原则 本章面向另一个质量指标:可维护性--软件发生变化时,是否可以以很小的代价适应变化? 本节是宏观介绍:(1)什么是软件维护:(2)可维护性如何度量:(3)实现高可维护性的设计原则--很抽象. Outline 软件的维护和演化 可维护性的常见度量指标 聚合度与耦合度 面向对象五大原则SOLID 单一职责原则SRP(Single Responsibility Principle) 开放封闭原则OCP(Open-Close Principle) 里式替换原则LSP

APUE读书笔记-第六章 系统数据文件和信息

昨天看完了,今天来看看第六章.感觉第六章的内容不是非常重要.简单看看吧 6.2 口令文件 口令文件其实就是/etc文件夹下的passwd文件,但处于安全性的考虑,我们无法直接读取它.就是通过直接限制权限的方式对其进行保护,passwd文件具体权限如下: -rw-r--r-- 1 root root 可以看到只有root用户具有读写权限,与root同组的用户与其他用户仅具有读权限. 不过为了解决以上问题,Linux中给出了一系列数据结构与函数帮助我们操纵口令文件,首先是关键数据结构,定义位于/in

java-第六章-for-循环录入会员信息

import java.util.Scanner; public class A02 { public static void main(String[] args) { // TODO Auto-generated method stub Scanner input = new Scanner(System.in); System.out.println("MyShoPing管理系统>客户信息管理>添加客户信息\n"); int No = 0; String Birthd

java-第六章-for-验证用户登录信息

import java.util.Scanner; public class A03 { public static void main(String[] args) { // TODO Auto-generated method stub Scanner input = new Scanner(System.in); for (int i = 0; i < 3; i++) { System.out.println("请输入用户名:"); String admin = input

APUE学习笔记:第六章 系统数据文件和信息

6.1 引言 UNIX系统的正常运行需要使用大量与系统有关的数据文件,针对这些数据文件的可移植接口是本章的主题.本章还介绍了系统标识函数.时间和日期函数 6.2 口令文件 UNIX系统的口令文件包含了下列各字段,这些字段包含在<pwd.h>中定义的passwd结构中 用户名 char *pw_name 加密口令 char *pw_passwd 数值用户ID uid_t pw_uid 数值组ID gid_t pw_gid 注释字段 char *pw_gecos 初始工作目录 char *pw_d

图解 TCP/IP 第六章 TCP与UDP 笔记6.1 传输层的作用

?图解?TCP/IP? 第六章?TCP与UDP? ?笔记6.1 传输层的作用 ? 传输层必须指出这个具体的程序,为了实现这一功能,使用端口号这样一种识别码.根据端口号,就可以识别在传输层上一层的应用程序所有进行处理的具体程序. ? 6.1.1 传输层定义 6.1.2 通信处理 ? 6.1.3 两种传输层协议 TCP和UDP TCP 是面向连接的.可靠的流协议.流就是指不间断的数据结构,你可以把它想象成排水管道中的水流. UDP 是不具有可靠性的数据包协议 .细微的处理会交给上层的应用去完成.在U

第六章、情感的认知与表达

目录 第六章.情感的认知与表达 一.评估情感理解力与表达能力 二.焦虑障碍 (一)强迫症 (二)创伤后应激障碍 (三)厌学症 (四)选择性減默症 (五)社交焦虑障碍 三.抑郁症 四.愤怒 五.爱 六.认知行为疗法 (-)情感教育 (二)认知重构 (三)身体工具 (四)放松工具 (五}社会性工具 (六)思考工具 (七)特殊兴趣工具 (八)药物 (九)工具箱中的其他工具 (十)不合适的工具 (十一)练习认知行为疗法策略 七.总结和思考 本章重点及策略 ++++++ 第六章.情感的认知与表达 想要理解

第六章:异常机制

第六章:异常机制 异常的定义 异常:在程序运行过程中出现的意外事件,导致程序中断执行. 异常处理 try...catch 语法:try{ //可能出现异常的代码}catch(异常类型 异常对象名){ //处理异常的代码:}执行过程:当try中的代码异常发生时抛出一个异常对象,该异常对象与catch中异常类型进行匹配,匹配成功进入catch块,否则不执行catch中代码(相当于异常未被处理).程序只有当异常处理成功后才能继续执行. try...catch...catch 语法:try{ //可能出