最大熵原理非常简单,是一个关于最合理的概率分布的准则:

最合理的概率分布是包含已知信息,但不做任何未知假设,把未知事件当成等概率事件处理的概率分布.

利用最大熵原理求解最合理概率分布:

  1. 把约束条件列出来(即把我们从sample中观察到一些现象用等式表达出来)
  2. 把Entropy表达式写出来
  3. 利用Lagrange Multiplier进行求解

最大熵模型:

我利用Adwait Ratnaparkhi 1997年的文章A Simple Introduction to Maximum Entropy Models for Natural Language Processing来进行阐述。

NLP中的许多问题其实都可以表示成分类问题,即在给定某种观察b的情况下,判断出目标是属于哪个类别a。对该分类问题的求解,我们可以进一步认为是要去估计一个联合概率分布

在不同的NLP任务中,所谓的观察b会有不同的呈现。比如,b有可能是目标前的一个词或一个字符;也可能是目标前后的各一个词;或者再包括上这些词的某些语法特征(如POS)等等。即便对某一个相同的NLP任务,不同的技术人员也会用到不同的b。比如,我们想要在字符层面上去做NER,我们可以用目标字符的前后2个字符作为观察,也可以用前后5个字符作为观察,去判断目标字符所对应的label。

一般说来class 的可能值不会太多,但是b里出现的字,词的可能值却有很多很多(dimensionality curse),这导致即便在大规模的语料库里,我们都不可能找到足够多的(a,b)对,从而把对应所有(a,b)对的P(a,b)给准确地估计出来。

于是乎,我们现在的问题变成了如何利用在语料库中所得到的,稀疏的观察,即(a,b)对,去估计出一个最合理的联合概率分布

最大熵原理指出,在所有能够与我们从稀疏的观察里总结出的“事实(或者说信息)”相匹配的概率分布中,拥有最大熵的那个概率分布式最合理可靠的。

那么现在,我们所要考虑的问题可以进一步被分拆为:

  1. 如何在数学上去表达我们从稀疏的观察里总结出的“事实(或者说信息)”?如何从数学上去表达一个概率分布和这些“事实(或者说信息)”是相匹配的?
  2. 当我们找到与“事实(或者说信息)”相匹配的概率分布的集合后,如何在这个集合中去找到具有最大熵的那个概率分布。

该问题其实就是一个典型的,寻找条件约束下最优值的问题。

如何在数学上去表达我们从稀疏的观察里总结出的“事实(或者说信息)”?如何从数学上去表达一个概率分布和这些“事实(或者说信息)”是相匹配的?

  1. 这两个问题是关联在一起的。
  2. 假如我们在语料库里发现,当b中存在某种特征时,a等于某个值的概率很高或很低;我们就可以定义一个二值函数,然后利用

来表达概率p和该发现是想匹配的。

我们在语料库里能够找到k种发现,就定义k种二值函数和匹配等式。这些匹配等式就是优化问题里的约束条件。

有了匹配等式后,最大熵原理给出的优化问题为

到此,我们已经把最大熵模型背后的逻辑讲清楚了。下面继续讲述优化问题的理论求解过程,就是解释为啥最大熵模型的解是以这种形态出现。

这里有几个定义需要先了解清楚:

概率分布集合P:

概率分布集合Q: ,这里是一个归一化参数。这个Q就是一个exponential family prob. functions set.

KL Divergence: 

任意两个概率分布函数p和q之间的KL Divergence都是非负的;如果有,那一定有

我在这里就不去证明这个Lemma了,它的证明比较明显。

假定,而,那么 【和勾股定律类似!】

这个Lemma的证明如下,也是比较简单明了。

为了证明最大熵模型的解是以这种形态出现的,我们首先需要假设概率分布函数集合,因为如果P为空,整个任务就没有意义了。

其次,肯定是不为空的,因为至少uniform dist.就是该概率分布函数集合中的一个元素。

然后,我们需要证明。这个的证明在“Generalized Iterative Scaling for Log-Linear Models”里有。它的基本原理是说GIS算法产生的概率分布函数序列,会收敛到一个P里面的概率分布函数;同时由于GIS算法产生的概率分布函数序列都是Q里的函数,所以

证明:如果,那么

的解就是

证明过程如下,非常清晰;利用了uniform distribution,同时也证明了的唯一性。

下面来讲讲最大熵和最大log likelihood之间的关系

首先定义

如果我们给定一个概率分布函数p,然后利用语料库来计算log likelihood,那么L(p)和log likelihood是成正比的。

如果存在一个,那么exponential family里的概率分布函数中对应最大log likelihood的概率分布函数就是

的解就是

Duality: P里对应最大熵的概率分布函数 = Q里对应最大log likelihood的概率分布函数

然后来讲讲Generalized Iterative Scaling (GIS)算法:

具体迭代过程如下

GIS算法里需要计算

相对而言好计算:计算量不大。

因为b值的可能性很多,的计算量就可能很大:

为了降低计算量,我们采用一个近似方法。这样就避免了去计算所有可能的b值,而N(语料库的大小)不会太大,a值的可能性一般都不多。

后记:这篇文章清晰地阐述了最大熵模型的推导过程,以及最后的解为何是以exponential family的形式存在。在得出这个结论后,我们就能够得出条件概率。这也是网上大部分博客所提到的形式。只是我个人感觉直接利用拉格朗日方法来证明条件概率是以这种形式存在好像不够严谨,而这篇文章讲述了最大熵模型最初的推导过程,所有数学方法还是要严谨得多。

最大熵原理与最大熵模型相关推荐

  1. 最大熵原理-最低风险模型

    奥卡姆剃刀法则的核心是简单原则,当我们找到基函数时,而且找到了对一个事物最根本规律的认识时,我们可以得到对它最简单.最有效的描述.但是在我们寻找到基函数之前,我们需要有很多过渡性模型,用来解决当下问题 ...

  2. matlab 最大熵谱估计,最大熵原理

    最大熵原理 最大熵原理是在1957 年由E.T.Jaynes 提出的,其主要思想是,在只掌握关于未知分布的部分知识时,应该选取符合这些知识但熵值最大的概率分布.因为在这种情况下,符合已知知识的概率分布 ...

  3. 统计学习方法笔记(九)-最大熵原理及python实现

    最大熵模型 最大熵模型介绍 最大熵模型原理 代码案例 案例地址 最大熵模型介绍 最大熵模型(maximum entropy model)可以用于二分类,也可以用于多分类.其是由最大熵原理推导实现的,所 ...

  4. sigmoid函数是如何诞生的(最大熵原理)

    由于工作的原因没有在学校里那么多学习的时间,对于很多基础知识纠结好久还是觉得应该记录下来,于是就打开了好多年没用的csdn,开始记录下自己的偶尔的学习过程,希望能以此勉励自己.当然第一篇博客,自然逼格 ...

  5. 【机器学习算法专题(蓄力计划)】十五、机器学习中玄乎的最大熵原理及模型

    文章目录 玄乎的"最大熵原理" 最大熵原理 最大熵模型 对特征函数的进一步理解 一种简单的特征函数设计 最大熵模型小结 玄乎的"最大熵原理" 下面我来尝试解释一 ...

  6. 机器学习笔记(十九)——最大熵原理和模型定义

    一.最大熵原理 最大熵原理是概率模型学习的一个准则.最大熵原理认为,在学习概率模型时,在所有可能的概率分布中,熵最大的模型是最好的模型.通常用约束条件来确定概率模型的集合,所以,最大熵模型也可以表述为 ...

  7. 信息论通识课程:建立过渡性的模型时应遵循最大熵原理(过犹不及)

    文章目录 引言 I 最大熵原理 1.1 含义 1.2 最大熵模型的优势 1.3 弊端 1.4 结论 II 最大熵原理的应用 2.1 自然语言处理 2.2 对冲基金 引言 要把道理总结得简单易懂,自己需 ...

  8. 最大熵(一)| 最大熵原理+模型 | 《统计学习方法》学习笔记(二十三)

    最大熵模型(maximum entropy model )由最大熵原理推导出来. 1. 最大熵原理 最大熵原理是概率模型学习的一个准则.最大熵原理认为,学习概率模型时,在所有可能的概率模型(分布)中, ...

  9. 细讲逻辑斯蒂回归与朴素贝叶斯、最大熵原理的爱恨交织(长文)

    好早之前就发现逻辑斯蒂回归好像和朴素贝叶斯里面的后验概率公式还有最大似然.信息熵.交叉熵.伯努利分布.回归分析.几率(odds)等等有着千丝万缕CZFZ(错综复杂).PSML(扑朔迷离)的关系.一直感 ...

最新文章

  1. 23 个优秀的机器学习训练公共数据集
  2. 小技巧-取消新版outlook中应用商店加载项
  3. Java实现话术词槽匹配_桔子互动|百度UNIT操作详解(上篇)
  4. labview将产生数据存入数组 并保存成Excel
  5. DynamipsGUI
  6. mysql referential_constraints_hibernate4.3.8与spring mvc结合遇到的问题
  7. Micro Average vs Macro average Performance in a Multiclass classification setting
  8. 2021江苏南通名师高考成绩查询,2021南通市地区高考成绩排名查询,南通市高考各高中成绩喜报榜单...
  9. jdbc连接池连不上mysql80_JDBC MySql连接池实践可避免连接池耗尽-问答-阿里云开发者社区-阿里云...
  10. java基础入门之数组循环初始化
  11. roseha-mirror oracle数据库同步 可靠性,RoseHA集群:RHEL+RoseMirror+Oracle【1】
  12. Android network基础知识 — IPv4和IPv6的区别
  13. nat64 dns64 linux 内核支持,NAT64与DNS64
  14. [OpenAirInterface实战-18] :OAI 软件无线电USRP B200/B210/X300/X310/N300/N310/E310比较
  15. Li feifei How we're teaching computers to understand pictures
  16. vtk医学图形提取骨骼模型的算法思路
  17. m277打印机 重置_惠普M277n说明书
  18. 小米盒子显示服务器断开,【当贝市场】小米盒子4网络掉线怎么办?解决办法...
  19. 手机安装python的步骤_手机安装python环境
  20. 高仿知乎的php源码,高仿百度知乎问答系统

热门文章

  1. 比较3个开源数据库:PostgreSQL,MariaDB和SQLite
  2. 京东天猫数据查询与分析:2023年厨电细分市场数据分析
  3. 【摆脱CRUD,大厂进阶之路】Java架构师学习指引
  4. 【算法分析】分治法详解+范例+习题解答
  5. Unity shader入门精要(学习总结)
  6. useCallback的使用背景
  7. 【Unity,C#】控制方向光模拟昼夜变化的脚本
  8. VM501套件单振弦式传感器采集模块应用于支坑支护自动化监测岩土工程监测地质灾害监测
  9. 【Aseprite】像素画配色套路
  10. 【linux运维】用户管理并赋管理员权限