数学之美 系列十六(上) 不要把所有的鸡蛋放在一个篮子里 -- 谈谈最大熵模型2006年10月8日 上午 07:27:00
发表者:Google 研究员,吴军

[我们在投资时常常讲不要把所有的鸡蛋放在一个篮子里,这样可以降低风险。在信息处理中,这个原理同样适用。在数学上,这个原理称为最大熵原理(the maximum entropy principle)。这是一个非常有意思的题目,但是把它讲清楚要用两个系列的篇幅。]

前段时间,Google 中国研究院的刘骏总监谈到在网络搜索排名中,用到的信息有上百种。更普遍地讲,在自然语言处理中,我们常常知道各种各样的但是又不完全确定的信息,我们需要用一个统一的模型将这些信息综合起来。如何综合得好,是一门很大的学问。

让我们看一个拼音转汉字的简单的例子。假如输入的拼音是"wang-xiao-bo",利用语言模型,根据有限的上下文(比如前两个词),我们能给出两个最常见的名字“王小波”和“王晓波”。至于要唯一确定是哪个名字就难了,即使利用较长的上下文也做不到。当然,我们知道如果通篇文章是介绍文学的,作家王小波的可能性就较大;而在讨论两岸关系时,台湾学者王晓波的可能性会较大。在上面的例子中,我们只需要综合两类不同的信息,即主题信息和上下文信息。虽然有不少凑合的办法,比如:分成成千上万种的不同的主题单独处理,或者对每种信息的作用加权平均等等,但都不能准确而圆满地解决问题,这样好比以前我们谈到的行星运动模型中的小圆套大圆打补丁的方法。在很多应用中,我们需要综合几十甚至上百种不同的信息,这种小圆套大圆的方法显然行不通。

数学上最漂亮的办法是最大熵(maximum entropy)模型,它相当于行星运动的椭圆模型。“最大熵”这个名词听起来很深奥,但是它的原理很简单,我们每天都在用。说白了,就是要保留全部的不确定性,将风险降到最小。让我们来看一个实际例子。

有一次,我去 AT&T 实验室作关于最大熵模型的报告,我带去了一个色子。我问听众“每个面朝上的概率分别是多少”,所有人都说是等概率,即各点的概率均为1/6。这种猜测当然是对的。我问听众们为什么,得到的回答是一致的:对这个“一无所知”的色子,假定它每一个朝上概率均等是最安全的做法。(你不应该主观假设它象韦小宝的色子一样灌了铅。)从投资的角度看,就是风险最小的做法。从信息论的角度讲,就是保留了最大的不确定性,也就是说让熵达到最大。接着,我又告诉听众,我的这个色子被我特殊处理过,已知四点朝上的概率是三分之一,在这种情况下,每个面朝上的概率是多少?这次,大部分人认为除去四点的概率是 1/3,其余的均是 2/15,也就是说已知的条件(四点概率为 1/3)必须满足,而对其余各点的概率因为仍然无从知道,因此只好认为它们均等。注意,在猜测这两种不同情况下的概率分布时,大家都没有添加任何主观的假设,诸如四点的反面一定是三点等等。(事实上,有的色子四点反面不是三点而是一点。)这种基于直觉的猜测之所以准确,是因为它恰好符合了最大熵原理。

最大熵原理指出,当我们需要对一个随机事件的概率分布进行预测时,我们的预测应当满足全部已知的条件,而对未知的情况不要做任何主观假设。(不做主观假设这点很重要。)在这种情况下,概率分布最均匀,预测的风险最小。因为这时概率分布的信息熵最大,所以人们称这种模型叫“最大熵模型”。我们常说,不要把所有的鸡蛋放在一个篮子里,其实就是最大熵原理的一个朴素的说法,因为当我们遇到不确定性时,就要保留各种可能性。

回到我们刚才谈到的拼音转汉字的例子,我们已知两种信息,第一,根据语言模型,wang-xiao-bo 可以被转换成王晓波和王小波;第二,根据主题,王小波是作家,《黄金时代》的作者等等,而王晓波是台湾研究两岸关系的学者。因此,我们就可以建立一个最大熵模型,同时满足这两种信息。现在的问题是,这样一个模型是否存在。匈牙利著名数学家、信息论最高奖香农奖得主希萨(Csiszar)证明,对任何一组不自相矛盾的信息,这个最大熵模型不仅存在,而且是唯一的。而且它们都有同一个非常简单的形式 -- 指数函数。下面公式是根据上下文(前两个词)和主题预测下一个词的最大熵模型,其中 w3 是要预测的词(王晓波或者王小波)w1 和 w2 是它的前两个字(比如说它们分别是“出版”,和“”),也就是其上下文的一个大致估计,subject 表示主题。

我们看到,在上面的公式中,有几个参数 lambda 和 Z ,他们需要通过观测数据训练出来。

最大熵模型在形式上是最漂亮的统计模型,而在实现上是最复杂的模型之一。我们在将下一个系列中介绍如何训练最大熵模型的诸多参数,以及最大熵模型在自然语言处理和金融方面很多有趣的应用。

转载于:https://www.cnblogs.com/javabluesky/archive/2007/06/11/2211956.html

数学之美系列16(转帖)相关推荐

  1. 数学之美系列14(转帖)

    数学之美 十四 谈谈数学模型的重要性2006年8月9日 上午 09:12:00 发表者:吴军,Google 研究员 [注:一直关注数学之美系列的读者可能已经发现,我们对任何问题总是在找相应的准确的数学 ...

  2. 数学之美系列12(转帖)

    数学之美 系列 12 - 余弦定理和新闻的分类2006年7月20日 上午 10:12:00 发表者:吴军,Google 研究员 余弦定理和新闻的分类似乎是两件八杆子打不着的事,但是它们确有紧密的联系. ...

  3. 数学之美 系列十六 (下)- 不要把所有的鸡蛋放在一个篮子里 最大熵模型

    数学之美 系列十六 (下)- 不要把所有的鸡蛋放在一个篮子里 最大熵模型 我们上次谈到用最大熵模型可以将各种信息综合在一起.我们留下一个问题没有回答,就是如何构造最大熵模型.我们已经所有的最大熵模型都 ...

  4. 数学之美 系列十三 信息指纹及其应用

    数学之美 系列十三 信息指纹及其应用 任何一段信息文字,都可以对应一个不太长的随机数,作为区别它和其它信息的指纹(Fingerprint).只要算法设计的好,任何两段信息的指纹都很难重复,就如同人类的 ...

  5. 数学之美 系列十六 (下)- 不要把所有的鸡蛋放在一个篮子里 最大熵模型...

    数学之美 系列十六 (下)- 不要把所有的鸡蛋放在一个篮子里 最大熵模型 我们上次谈到用最大熵模型可以将各种信息综合在一起.我们留下一个问题没有回答,就是如何构造最大熵模型.我们已经所有的最大熵模型都 ...

  6. 数学之美 系列一 -- 统计语言模型

    数学之美 系列一 -- 统计语言模型 Posted on 2009-09-11 14:54 小y 阅读(576) 评论(0) 编辑 收藏  发表者: 吴军, Google 研究员 前言 也许大家不相信 ...

  7. 数学之美 系列十六(上) 不要把所有的鸡蛋放在一个篮子里 -- 谈谈最大熵模型

    数学之美 系列十六(上) 不要把所有的鸡蛋放在一个篮子里 -- 谈谈最大熵模型 [我们在投资时常常讲不要把所有的鸡蛋放在一个篮子里,这样可以降低风险.在信息处理中,这个原理同样适用.在数学上,这个原理 ...

  8. 数学之美 系列十五 繁与简 自然语言处理的几位精英

    数学之美 系列十五 繁与简 自然语言处理的几位精英 我在数学之美系列中一直强调的一个好方法就是简单.但是,事实上,自然语言处理中也有一些特例,比如有些学者将一个问题研究到极致,执著追求完善甚至可以说完 ...

  9. 数学之美 系列 12 - 余弦定理和新闻的分类

    数学之美 系列 12 - 余弦定理和新闻的分类 余弦定理和新闻的分类似乎是两件八杆子打不着的事,但是它们确有紧密的联系.具体说,新闻的分类很大程度上依靠余弦定理. Google 的新闻是自动分类和整理 ...

最新文章

  1. Android studio怎么找到当前文件在电脑路径位置
  2. 免费数学神器有了手机版,再复杂的公式,拍照就能转成LaTeX
  3. JDK各版本内容和新特性
  4. 简单搜索(多位自幂数)+数列网站
  5. linux x和s 的区别,Hadoop1.x和2.X的HDFS fsimage和edits文件运行机制对比
  6. nginx http子模块conf的初始化
  7. python每隔半个小时执行一次_一篇文章教你用Python抓取微博评论
  8. 黑马程序员--IO【1】
  9. 记录一次uni-app页面跳转无效 来回跳转问题
  10. dhcp服务器能为客户端提供哪些信息,为DHCP客户端提供DHCP服务器的MAC [关闭]
  11. HTML+CSS+JS实现 ❤️九宫格图片悬停遮罩层特效❤️
  12. 进程的创建-fork(python版)
  13. 工业路由器和家用路由器有什么区别?
  14. 如何屏蔽 iOS 软件自动更新,去除更新通知和标记
  15. Swift4.0 实现底部弹出框
  16. java pdf转png
  17. 安装mysql提示oxc000007b_Win7出现oxc000007b怎么办?解决win7重装系统出现oxc000007b的方法...
  18. anaconda下使用python怎样实现图像增强_如何用anaconda进行python开发
  19. 法官批准离婚申请 布兰妮正式恢复“单身”(图)
  20. android 行车记录仪分析,基于Android的智能行车记录仪的设计与实现.doc

热门文章

  1. 找出两列表共有的元素python,两个列表之间的公共元素未在Python中使用集
  2. 笔记-信息系统安全管理-信息安全保障系统
  3. JS中调用本地Winform程序并传递参数
  4. 若依前后端分离版怎样去掉登录验证码
  5. 若依微服务版手把手教你本地搭建环境并运行前后端项目
  6. linux 上删除docker 虚悬镜像
  7. Vue实现仿音乐播放器11-实现访问百度音乐API实现播放音乐功能
  8. springboot启动流程,手把手打断点一步步看运行步骤
  9. 什么是重载or重写,二者的区别是?
  10. 启动rocketmq_RocketMQ 部署启动指南-Docker 版