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

我们上次谈到用最大熵模型可以将各种信息综合在一起。我们留下一个问题没有回答,就是如何构造最大熵模型。我们已经所有的最大熵模型都是指数函数的形式,现在只需要确定指数函数的参数就可以了,这个过程称为模型的训练。

最原始的最大熵模型的训练方法是一种称为通用迭代算法 GIS(generalized iterative scaling) 的迭代算法。GIS 的原理并不复杂,大致可以概括为以下几个步骤:

1. 假定第零次迭代的初始模型为等概率的均匀分布。

2. 用第 N 次迭代的模型来估算每种信息特征在训练数据中的分布,如果超过了实际的,就把相应的模型参数变小;否则,将它们便大。

3. 重复步骤 2 直到收敛。

GIS 最早是由 Darroch 和 Ratcliff 在七十年代提出的。但是,这两人没有能对这种算法的物理含义进行很好地解释。后来是由数学家希萨(Csiszar)解释清楚的,因此,人们在谈到这个算法时,总是同时引用 Darroch 和Ratcliff 以及希萨的两篇论文。GIS 算法每次迭代的时间都很长,需要迭代很多次才能收敛,而且不太稳定,即使在 64 位计算机上都会出现溢出。因此,在实际应用中很少有人真正使用 GIS。大家只是通过它来了解最大熵模型的算法。

八十年代,很有天才的孪生兄弟的达拉皮垂(Della Pietra)在 IBM 对 GIS 算法进行了两方面的改进,提出了改进迭代算法 IIS(improved iterative scaling)。这使得最大熵模型的训练时间缩短了一到两个数量级。这样最大熵模型才有可能变得实用。即使如此,在当时也只有 IBM 有条件是用最大熵模型。

由于最大熵模型在数学上十分完美,对科学家们有很大的诱惑力,因此不少研究者试图把自己的问题用一个类似最大熵的近似模型去套。谁知这一近似,最大熵模型就变得不完美了,结果可想而知,比打补丁的凑合的方法也好不了多少。于是,不少热心人又放弃了这种方法。第一个在实际信息处理应用中验证了最大熵模型的优势的,是宾夕法尼亚大学马库斯的另一个高徒原 IBM 现微软的研究员拉纳帕提(Adwait Ratnaparkhi)。拉纳帕提的聪明之处在于他没有对最大熵模型进行近似,而是找到了几个最适合用最大熵模型、而计算量相对不太大的自然语言处理问题,比如词性标注和句法分析。拉纳帕提成功地将上下文信息、词性(名词、动词和形容词等)、句子成分(主谓宾)通过最大熵模型结合起来,做出了当时世界上最好的词性标识系统和句法分析器。拉纳帕提的论文发表后让人们耳目一新。拉纳帕提的词性标注系统,至今仍然是使用单一方法最好的系统。科学家们从拉纳帕提的成就中,又看到了用最大熵模型解决复杂的文字信息处理的希望。

但是,最大熵模型的计算量仍然是个拦路虎。我在学校时花了很长时间考虑如何简化最大熵模型的计算量。终于有一天,我对我的导师说,我发现一种数学变换,可以将大部分最大熵模型的训练时间在 IIS 的基础上减少两个数量级。我在黑板上推导了一个多小时,他没有找出我的推导中的任何破绽,接着他又回去想了两天,然后告诉我我的算法是对的。从此,我们就建造了一些很大的最大熵模型。这些模型比修修补补的凑合的方法好不少。即使在我找到了快速训练算法以后,为了训练一个包含上下文信息,主题信息和语法信息的文法模型(language model),我并行使用了 20 台当时最快的 SUN 工作站,仍然计算了三个月。由此可见最大熵模型的复杂的一面。最大熵模型快速算法的实现很复杂,到今天为止,世界上能有效实现这些算法的人也不到一百人。有兴趣实现一个最大熵模型的读者可以阅读我的论文。

最大熵模型,可以说是集简与繁于一体,形式简单,实现复杂。值得一提的是,在Google的很多产品中,比如机器翻译,都直接或间接地用到了最大熵模型。

讲到这里,读者也许会问,当年最早改进最大熵模型算法的达拉皮垂兄弟这些年难道没有做任何事吗?他们在九十年代初贾里尼克离开 IBM 后,也退出了学术界,而到在金融界大显身手。他们两人和很多 IBM 语音识别的同事一同到了一家当时还不大,但现在是世界上最成功对冲基金(hedge fund)公司----文艺复兴技术公司 (Renaissance Technologies)。我们知道,决定股票涨落的因素可能有几十甚至上百种,而最大熵方法恰恰能找到一个同时满足成千上万种不同条件的模型。达拉皮垂兄弟等科学家在那里,用于最大熵模型和其他一些先进的数学工具对股票预测,获得了巨大的成功。从该基金 1988 年创立至今,它的净回报率高达平均每年 34%。也就是说,如果 1988 年你在该基金投入一块钱,今天你能得到 200 块钱。这个业绩,远远超过股神巴菲特的旗舰公司伯克夏哈撒韦(Berkshire Hathaway)。同期,伯克夏哈撒韦的总回报是 16 倍。

值得一提的是,信息处理的很多数学手段,包括隐含马尔可夫模型、子波变换、贝叶斯网络等等,在华尔街多有直接的应用。由此可见,数学模型的作用。

转自:http://googlechinablog.com/2006/11/blog-post.html

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

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

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

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

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

  3. 数学之美 系列十 有限状态机和地址识别

    数学之美 系列十 有限状态机和地址识别 地址的识别和分析是本地搜索必不可少的技术,尽管有许多识别和分析地址的方法,最有效的是有限状态机. 一个有限状态机是一个特殊的有向图(参见有关图论的系列),它包括 ...

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

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

  5. 数学之美系列16(转帖)

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

  6. 数学之美系列六 -- 图论和网络爬虫 (Web Crawlers)

    数学之美系列六 -- 图论和网络爬虫 (Web Crawlers) [离散数学是当代数学的一个重要分支,也是计算机科学的数学基础.它包括数理逻辑.集合论.图论和近世代数四个分支.数理逻辑基于布尔运算, ...

  7. 数学之美 系列二十 -自然语言处理的教父 马库斯

    数学之美 系列二十 -自然语言处理的教父 马库斯 2007年4月13日 下午 07:03:00 <script language=javascript> uT("time1176 ...

  8. 数学之美 系列十一 - Google 阿卡 47 的制造者阿米特.辛格博士

    数学之美 系列十一 - Google 阿卡 47 的制造者阿米特.辛格博士 枪迷或者看过尼古拉斯.凯奇(Nicolas Cage)主演的电影"战争之王"(Lord of War)的 ...

  9. 数学之美系列五 -- 简单之美:布尔代数和搜索引擎的索引

    数学之美系列五 -- 简单之美:布尔代数和搜索引擎的索引 [建立一个搜索引擎大致需要做这样几件事:自动下载尽可能多的网页:建立快速有效的索引:根据相关性对网页进行公平准确的排序.我们在介绍 Googl ...

最新文章

  1. 了解一下MongoDB中的写关注(write concern)
  2. 设计模式(19)-Observer Pattern
  3. 使用oracle和sqlserver的几点区别【转】
  4. 通过扩展RandomAccessFile类使之具备Buffer改善I/O性能--转载
  5. 德勤:95%的受访公司将在2019年投资区块链
  6. 我的世界java手机版下载1.15_我的世界java版20w16a
  7. 在 Windows 上直接运行 Linux,有命令行就是贼香
  8. oracle怎么删除lob对象,Oracle系列:LOB大对象处理
  9. (软件工程复习核心重点)第九章面向对象分析-第三节:面向对象分析之建立动态模型和功能模型
  10. JS:关于JS字面量及其容易忽略的12个小问题
  11. TUIO之TuioDemo
  12. vim中使用color_coded为c/cpp文件配色
  13. 彻底卸载360安全卫士的方法
  14. 平面解析几何----双曲线的硬解公式
  15. layer.open打开一个HTML页面的窗口和传值
  16. C# 汉字转拼音 拼音转汉字 简体繁体互转
  17. 数据库及SQL语句入门教程
  18. 老男孩python全栈开发视频教程_老男孩Python全栈开发(92天全)视频教程 自学笔记18...
  19. eps文件_如何编辑eps文件?
  20. 乐心健康QQ微信支付宝刷步网页版源码

热门文章

  1. 科大星云诗社动态20210308
  2. 科大星云诗社动态20210813
  3. [云炬python3玩转机器学习笔记] 3-8Numpy中的聚合运算
  4. php保存成乱序,PHP实现断点续传乱序合并文件的方法
  5. Linux下修改命令提示符
  6. C/C++常用宏定义,注意事项,宏中#和##的用法
  7. DELPHI 指针使用用的一篇好文 收藏
  8. 在一个JS文件中包含中文字符串,通过innerHTML输出后中文乱码?
  9. 使用cmake重写live555工程-附源码和视频教程
  10. Python 学习之作用域