【机器学习】最大熵模型(Maximum Entropy Model)
最大熵模型(Maximum Entropy Model,以下简称MaxEnt),MaxEnt 是概率模型学习中一个准则,其思想为:在学习概率模型时,所有可能的模型中熵最大的模型是最好的模型;若概率模型需要满足一些约束,则最大熵原理就是在满足已知约束的条件集合中选择熵最大模型。最大熵原理指出,对一个随机事件的概率分布进行预测时,预测应当满足全部已知的约束,而对未知的情况不要做任何主观假设。在这种情况下,概率分布最均匀,预测的风险最小,因此得到的概率分布的熵是最大。
最大熵模型是由最大熵原理推导实现的,所以,在讲述最大熵模型前,我们先要讲讲最大熵原理,将它作为预备知识。
最大熵原理
最大熵原理 是 概率模型学习的一个准则, 评价一个模型的好坏是根据熵的大小,熵大说明模型越好。因此可以理解,最大熵原理就是满足一定的约束条件下,选择熵最大的模型。
计算最大熵根据两个前提去解决问题:
- 解决问题要满足一定约束
- 不做任何假设,就是在约束外的事件发生概率为等概率
举个简单的例子:
1)假设随机变量有5个取值 ,要估计各个值的概率。
从上述的已知条件,我们知道
(约束)
根据最大熵的前提条件,我们可以假定:(等概率)
所以,可以计算出来
2)假设随机变量有5个取值 ,其中,。估计各个值的概率。
如题可以知道:
(约束)
(约束)
从约束中根据等概率,我们可以推测,
现在,知道了最大熵原理,是不是觉得很简单~
接下来以统计建模的形式来描述 MaxEnt 模型,给定训练数据 ,现在要通过 Maximum Entropy 来建立一个概率判别模型,该模型的任务是对于给定的 以条件概率分布 预测 的取值。根据训练语料能得出 的经验分布, 得出部分 的概率值,或某些概率需要满足的条件,即问题变成求部分信息下的最大熵或满足一定约束的最优解,约束条件是靠特征函数来引入的,首先先回忆一下函数期望的概念。
对于随机变量 则可以得到:
随机变量期望: 对于随机变量 ,其数学期望的形式为
随机变量函数期望:若 , 则关于 的函数 的期望:
特征函数
特征函数 描述 与 之间的某一事实,其定义如下:
特征函数 是一个二值函数, 当 与 满足事实时取值为 1 ,否则取值为 0 。比如对于如下数据集:
数据集中,第一列为 ,右边为 ,可以为该数据集写出一些特征函数,数据集中得特征函数形式如下:
为每个 <feature,label> 对 都做一个如上的特征函数,用来描述数据集数学化。
约束条件
接下来看经验分布,现在把训练数据当做由随机变量 产生,则可以根据训练数据确定联合分布的经验分布 与边缘分布的经验分布 :
为计数函数。
用 表示特征函数 关于经验分布 的期望,可得:
前面已经得到了,数数 的次数就可以了,由于特征函数是对建立概率模型有益的特征,所以应该让 MaxEnt 模型来满足这一约束,所以模型 关于函数 的期望应该等于经验分布关于 的期望,模型 关于 的期望为:
为模型的实际联合分布,如果模型可以从训练集中学习,我们就可以假设这两个期望相等。也即。
简单来讲就是我们从训练集数据状况中所得到的经验分布可以一定程度上去代替模型的实际分布,当训练集很大的时候,这两者确实可以近乎认为相等,其实就是抽样估计啦~。
我们要求的是模型是,解出,我们就可以带入样本,得到输出的概率分布。
经验分布与特征函数结合便能代表概率模型需要满足的约束,只需使得两个期望项相等, 即 :
上式便为 MaxEnt 中需要满足的约束,给定 个特征函数 ,则有 个约束条件,用 表示满足约束的模型集合:
从满足约束的模型集合 中找到使得 的熵最大的即为 MaxEnt 模型了。
最大熵模型
关于条件分布 的熵为:
首先满足约束条件然后使得该熵最大即可,MaxEnt 模型 为:
或者
综上给出形式化的最大熵模型:
给定数据集 ,特征函数 ,根据经验分布得到满足约束集的模型集合 :
按照最优化的习惯,一般会将求最大问题转换为等价的求最小问题。
MaxEnt 模型的求解
MaxEnt 模型最后被形式化为带有约束条件的最优化问题,可以通过拉格朗日乘子法将其转为无约束优化的问题,引入拉格朗日乘子:,定义朗格朗日函数 :
现在问题转化为: ,拉格朗日函数 的约束是要满足的 ,如果不满足约束的话,只需另 ,则可得 ,因为需要得到极小值,所以约束必须要满足,满足约束后可得: ,现在问题可以形式化为便于拉格朗日对偶处理的极小极大的问题:(详细参见之前写的拉格朗日乘子法、KKT条件、拉格朗日对偶)
由于 是关于 的凸函数,根据拉格朗日对偶可得 的极小极大问题与极大极小问题是等价的:
现在可以先求内部的极小问题 , 得到的解为关于 的函数,可以记做 :
上式的解 可以记做:
由于求解 的最小值 ,只需对于 求导即可,令导数等于 0 即可得到 :
由于 ,可得:
进而可以得到:
这里 起到了归一化的作用,令 表示 ,便得到了 MaxEnt 模型 :
这里 代表特征函数, 代表特征函数的权值, 即为 MaxEnt 模型,现在内部的极小化求解得到关于 的函数,现在求其对偶问题的外部极大化即可,将最优解记做 :
所以现在最大熵模型转为求解 的极大化问题,求解最优的 后, 便得到了所要求的MaxEnt 模型,将 带入 ,可得:
以上推倒第二行到第三行用到以下结论:
倒数第二行到最后一行是由于:,最终通过一系列极其复杂的运算,得到了需要极大化的式子:
对 求极大化,由于它是连续可导的,所以优化方法有很多种,比如梯度下降法,牛顿法,拟牛顿法都可以。对于最大熵模型还有一种专用的优化方法,叫做改进的迭代尺度法(improved iterative scaling, IIS)。
极大化似然估计解法
这太难了,有没有简单又 work 的方式呢? 答案是有的,就是极大似然估计 MLE 了,这里有训练数据得到经验分布 , 待求解的概率模型 的似然函数为:
这里以指数的形式引入了。注意,对于给定的训练数据,都是通过统计得到的常数。至于为什么要以指数的形式引入,这么想,对应指数函数其中为常数,对于固定的而言,总是希望越大越好,求得参数能够使整体训练集的最大,就是我们要做的事情。
将 带入以下公式可以得到:
显而易见,拉格朗日对偶得到的结果与极大似然得到的结果时等价的,现在只需极大化似然函数即可,顺带优化目标中可以加入正则项,这是一个凸优化问题,一般的梯度法、牛顿法都可解之,专门的算法有GIS IIS 算法。
最优化算法
最优化算法详见最大熵学习笔记(五)最优化算法
IIS算法:
4. 最大熵模型小结
最大熵模型在分类方法里算是比较优的模型,但是由于它的约束函数的数目一般来说会随着样本量的增大而增大,导致样本量很大的时候,对偶函数优化求解的迭代过程非常慢,scikit-learn甚至都没有最大熵模型对应的类库。但是理解它仍然很有意义,尤其是它和很多分类方法都有千丝万缕的联系。
惯例,我们总结下最大熵模型作为分类方法的优缺点:
最大熵模型的优点有:
- 最大熵统计模型获得的是所有满足约束条件的模型中信息熵极大的模型,作为经典的分类模型时准确率较高。
- 可以灵活地设置约束条件,通过约束条件的多少可以调节模型对未知数据的适应度和对已知数据的拟合程度
最大熵模型的缺点有:
- 由于约束函数数量和样本数目有关系,导致迭代过程计算量巨大,实际应用比较难。
参考文章:
最大熵模型 Maximum Entropy Model
李航统计学习
最大熵学习笔记(五)最优化算法
【机器学习】最大熵模型(Maximum Entropy Model)相关推荐
- MaxEnt: 最大熵模型(Maximum Entropy Models)
转自:http://www.zhizhihu.com/html/y2011/3489.html 刚看完HMM,因为有个ME-HMM方法,所以再看看最大熵模型,最后再把CRF模型看看,这一系列理论大体消 ...
- 最大熵模型(Maximum Entropy Model)文献阅读指南
最大熵模型(Maximum Entropy Model)是一种机器学习方法,在自然语言处理的许多领域(如词性标注.中文分词.句子边界识别.浅层句法分析及文本分类等)都有比较好的应用效果.张乐博士的最大 ...
- R语言caret包构建机器学习回归模型(regression model)、使用DALEX包进行模型解释分析、特征重要度、偏依赖分析等
R语言caret包构建机器学习回归模型(regression model).使用DALEX包进行模型解释分析.特征重要度.偏依赖分析等 目录
- 机器学习--最大熵模型
参考链接:https://www.jianshu.com/p/e7c13002440d https://www.cnblogs.com/wxquare/p/5858008.html 详解机器学习中的熵 ...
- 机器学习-最大熵模型
最大熵模型是一种分类模型,它学习之后对某个x判断的结果是一个概率,即对一个自变量,它的分类分别是y1,y2,y3-yn的概率,然后概率最大的分类结果就是我们所要的结果分类ym. 最大熵原理 最大熵原理 ...
- 机器学习---最大熵模型(MEM)小结
当我们想要得到一个随机事件的概率分布时,如果没有足够的信息来完全确定其概率分布,那么最为保险的方法就是选择一个使得熵最大的分布. 最大熵模型 1.信息论知识 1.1信息熵的概念 1.2.条件熵 1 ...
- 最大熵模型(maximum entropy model)
最大熵原理 原理:在满足约束条件的模型集合中选取熵最大的模型. 思路:从训练数据T中抽取若干特征,这些特征在T上关于经验分布的期望与它们在模型中关于p(x,y)的数学期望相等,这样,一个特征就对应一个 ...
- [转] 理解各种熵最大熵模型
把各种熵的好文集中一下,希望面试少受点伤,哈哈哈 1. 条件熵 https://zhuanlan.zhihu.com/p/26551798 我们首先知道信息熵是考虑该随机变量的所有可能取值,即所有可能 ...
- 统计学习方法笔记(四)-最大熵模型原理及python实现
最大熵模型 最大熵模型 最大熵原理 最大熵模型 代码实现 案例地址 最大熵模型 最大熵模型(maximum entropy model)可以用于二分类,也可以用于多分类.其是由最大熵原理推导实现的,所 ...
最新文章
- mysql 大事务 binlog_执行大事务时出现binlog解析失败
- glutSwapBuffers函数用法
- 创建和准备Oracle样例数据库
- 【Java】泛型中 extends 和 super 的区别?
- 【Alljoyn】 Alljoyn学习笔记七 Alljoyn瘦客户端库介绍
- TensorFlow学习笔记(二十五)CNN的9大模型
- [TypeScript] vs code TSLint常见错误解决方案
- 测试通用串行总线控制器好坏软件,通用串行总线控制器出现叹号是什么情况?怎么解决?...
- 科学网—中文普通话语音识别DEMO,LilyMandarinSpeechRecognition V1.0 - 石自强的博文...
- c语言getchar的作用,c=getchar()!='\n'到底什么用呢
- 微星刀锋 无法进入bios_所有键都无法进入bios,微星主板无法进入bios-
- 北京大学计算机语言学,北京大学计算语言学教育部重点实验室
- elasticsearch(es)的安装-macOs
- 7-4 工作分配问题分数 20作者 陈晓梅单位 广东外语外贸大学
- 悦轩饼家-商品列表样式
- 时间类及数组,集合 7-14
- 画论24 郭若虛《图画见闻志》
- hugegraph图数据库索引详解
- gitlab修改时区
- Summary of Statistics for Interview
热门文章
- 某CTF比赛部分wp
- DVWA--SQL Injection (盲注)--四个级别
- linux网卡设置详解,史上最详细的Linux网卡ifcfg-eth0配置详解
- JS疑惑-2(作用域)
- greenplum配置高可用_Greenplum 的高可用是怎么做到的?
- python 特性和方法同名_Python类:方法与属性同名
- Centos 7 docker 拉取镜像慢
- 多个div并排居中显示
- Windows下安装Mysql5.7.22以及遇到的问题 + 数据库连接工具Navicat
- Ubuntu: ldconfig(解决*.so不是符号连接)