热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

最大熵模型与最大似然概率

(转)最大熵模型与最大似然概率2010-03-2500:26:15|分类:研究笔记|字号订阅对于自然语言处理中的各种模型来说,最大熵模型是一种在形式上最简单,但是

(转)最大熵模型与最大似然概率  

2010-03-25 00:26:15|  分类: 研究笔记|字号 订阅

     对于自然语言处理中的各种模型来说,最大熵模型是一种在形式上最简单,但是在实现上却最复杂的模型。最大熵模型就是在满足已知条件的情况下,求得使熵最大的概率模型。说起来很简单,实际上要求得这个熵最大的概率模型,计算量十分巨大,因此需要仔细设计细节。

      最大熵模型最大的难点来源于特征的选取和参数估计。其中特征选取的需要很多次迭代,在迭代的过程中逐步对参数进行估计。在最大熵模型参数的计算中,因为将特征视为已知,因此需要对已知情况进行计算,而这种计算就是最大似然概率估计算法的特长。    

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

  1. 假定第零次迭代的初始模型为等概率的均匀分布。
  2. 用第 N 次迭代的模型来估算每种信息特征在训练数据中的分布,如果超过了实际的,就把相应的模型参数变小;否则,将它们便大。
  3. 重复步骤 2 直到收敛。
   上次的文章中讲到最大熵模型最难的部分是训练,因为训练中的数据量巨大,导致计算量巨大。Darroch & Raticliff在1972年提出了GIS算 法来求解。GIS算法是一种通用的求解线性等式约束对数线性规划问题的算法,其核心思想是利用拉格朗日算子,将线性等式约束对数线性规划问题转化为对数线 性规划问题,然后使用求偏导数法将对数线性规划问题转化为迭代求解问题,最后使用梯度递减法求得最优解。GIS算法的效率不高,收敛速度慢,而且不稳定, 容易越界。

    鉴于这些缺陷,最大熵模型并未被广泛使用,但Adwait Ratnaparkhi在1994年的A Maximum Entropy Model for Parsing 论文中成功的使用了最大熵模型进行句法分析。1997年Della Pietra & Lafferty提出了IIS算 法,对GIS进行了改进。IIS算法的前两步与GIS相同,再将线性等式约束对数线性规划问题转化为迭代求解问题后,使用最大似然概率法将问题再次转化为 求最大下界问题,然后使用求偏导数法求得迭代步长,循环迭代得到最优解。Adam Berger对IIS算法进行了十分清晰的解释。

    虽然经过了两次改进,最大熵模型的计算量仍然十分巨大,在2001年吴军对最大熵模型进行了进一步改进,提出了层次训练算法。下一篇将详细介绍这一算法。

 上次的文章中讲到吴军在IIS的基础上进一步提出了层次训练算法,其核心思想是利用特征的层次化关系,避免了重复计算,从而把最大熵模型的训练效率提高了几百上千倍。

    最大熵模型的训练的计算量主要来自三个部分:模型参数、特征期望值和归一化因子。模型参数的个数等于特征的个数,可以用IIS中的办法计算 出来,计算量相比特征期望值和归一化因子算是少的,因此主要的计算量集中在后两者。层次训练算法中计算模型参数的方法与GIS和IIS是一样的,主要改进 特征期望值和归一化因子的计算方法。

    最大熵模型中的特征有很多,有些特征具有层次化关系,例如在3-gram模型中,符合一个三元特征的元组通常会符合一个二元特征,因此符合 二元特征的元组集合包含三元特征的元组集合,两者具有层次关系,以此类推,二元特征又跟一元特征具有层次关系。因此,在计算归一化因子的时候,能够将式子 划分成对一元特征、二元特征和三元特征的累加值的和,这样具有同样前向条件的二元元组和三元元组只需计算一次,以后就都能使用二元特征和三元特征的累加 值,只需计算一元特征的累加值,计算量大为下降。同样,在计算特征期望值的时候,由于符合一元特征的元组集合包含二元和三元特征的,可以将求一元特征期望 值的式子划分成一元、二元、三元三个部分,其中二元和三元的部分,只需计算一次,以后具有同样的前向条件的三元元组就不需要计算了,以此类推,二元特征期 望值和三元特征期望值,也可以简化。

    但是,有些模型的特征并不具有层次关系,吴军提出一个通用的层次化特征的办法,这样对于一些诸如主题特征、句法特征、符号特征等无层次的特征的计算也能够进行简化。在此基础上,吴军还进一步简化了归一化因子的计算,将最大熵模型转化ARPA格式,同时对常用的归一化因子和特征期望值进行缓存,计算时间进一步减少。

    以上三篇文章对最大熵模型的训练算法,做了基本介绍,下一篇将讲讲最大熵模型与最大似然概率的关系。


推荐阅读
  • 结合“性能监视器”排查、处理性能瓶颈导致应用吞吐率等指标上不去的问题
    双11备战前夕,总绕不过性能压测环节,TPS一直上不去不达标,除了代码上的问题外,服务器环境、配置、网络、磁盘、CPU亦是导致性能瓶颈的重要一环,本文旨在分享最近项目性能 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • JVM 学习总结(三)——对象存活判定算法的两种实现
    本文介绍了垃圾收集器在回收堆内存前确定对象存活的两种算法:引用计数算法和可达性分析算法。引用计数算法通过计数器判定对象是否存活,虽然简单高效,但无法解决循环引用的问题;可达性分析算法通过判断对象是否可达来确定存活对象,是主流的Java虚拟机内存管理算法。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 开发笔记:计网局域网:NAT 是如何工作的?
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了计网-局域网:NAT是如何工作的?相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了操作系统的定义和功能,包括操作系统的本质、用户界面以及系统调用的分类。同时还介绍了进程和线程的区别,包括进程和线程的定义和作用。 ... [详细]
  • GPT-3发布,动动手指就能自动生成代码的神器来了!
    近日,OpenAI发布了最新的NLP模型GPT-3,该模型在GitHub趋势榜上名列前茅。GPT-3使用的数据集容量达到45TB,参数个数高达1750亿,训练好的模型需要700G的硬盘空间来存储。一位开发者根据GPT-3模型上线了一个名为debuid的网站,用户只需用英语描述需求,前端代码就能自动生成。这个神奇的功能让许多程序员感到惊讶。去年,OpenAI在与世界冠军OG战队的表演赛中展示了他们的强化学习模型,在限定条件下以2:0完胜人类冠军。 ... [详细]
  • 目录浏览漏洞与目录遍历漏洞的危害及修复方法
    本文讨论了目录浏览漏洞与目录遍历漏洞的危害,包括网站结构暴露、隐秘文件访问等。同时介绍了检测方法,如使用漏洞扫描器和搜索关键词。最后提供了针对常见中间件的修复方式,包括关闭目录浏览功能。对于保护网站安全具有一定的参考价值。 ... [详细]
  • 如何搭建服务器环境php(2023年最新解答)
    导读:本篇文章编程笔记来给大家介绍有关如何搭建服务器环境php的相关内容,希望对大家有所帮助,一起来看看吧。本文目录一览:1、怎么搭建p ... [详细]
  • 当写稿机器人真有了观点和感情,我们是该高兴还是恐惧?
    目前,写稿机器人多是撰写以数据为主的稿件,当它们能够为文章注入观点之时,这些观点真的是其所“想”吗?最近,《南 ... [详细]
  • 早晨七点半。北京初秋的凉风叫醒了住在望京西的你,睁开眼睛,一想到又要为人类的信息化事业贡献满满的正能量,你不禁哼唱起那句“早晨起来 ... [详细]
  • 武汉市正式发布促进元宇宙创新发展实施方案
    武汉市正式发布促进元宇宙创新发展实施方案 ... [详细]
  • 作为机器学习最重要的一个分支,近年来深度学习(DeepLearning)发展势头迅猛,借助庞大的数据 ... [详细]
author-avatar
徐州九七医院沁尿外科1
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有