博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
最大熵模型
阅读量:6590 次
发布时间:2019-06-24

本文共 1237 字,大约阅读时间需要 4 分钟。

生活中我们经常听到人们说“不要把鸡蛋放到一个篮子里”,这样可以降低风险。深究一下,这是为什么呢?其实,这里边包含了所谓的最大熵原理(The Maximum Entropy Principle)。

最大熵原理

在已知约束的情况下,我们建模时应该满足这些约束,并且对其他条件作最复杂最一般的假设。这样会得出更贴近于真实的结果。一般来说,这种假设就是最大熵原理。因为熵最大信息量最大,不确定性最大。

最大熵原理认为,学习概率模型时,在所有可能的概率分布模型中,熵最大的模型,为最好的模型。

最大熵模型

将最大熵原理应用于分类问题,我们便得到了最大熵模型。我们的目标便是:利用最大熵原理选择一个最好的分类模型,即对于任意给定的输入x∈X,可以以概率p(y|x)输出y∈Y。

特征函数

我们对于实际的特征通常会采用特征函数的方法将其量化成数,这样我们才可以进行计算。我们通常采用二值定义的方式:

这样我们便可以使用这个函数值来计算我们的经验分布

经验分布

我们首先要明确一点,我们的最大熵模型是未知目标分布的。也就是说我们对于约束条件以外的分布并不可知,所以我们才用最大熵来假设等概同分布。

那第一个条件概率分布就已经是未知了,那还如何去计算后续的熵呢?要知道熵的计算公式都离不开概率。这时候我们就引入一个经验分布,就是将已经观察的数据作为经验,来模拟一下真实分布。感觉和我们计算概率的方法很接近,但是从严格的数学意义上来说,这并不能代表真实数据的分布情况,哪怕样本足够多。

有特征函数作为数据的输入源头,我们计算经验分布: f(x,y) = 1的个数/总个数。,原计算公式为:

约束条件

如果我们选择模型能够获取真实训练集中的信息,那么我们便可以假设这两个模型的期望值相等。这样便有:

其中这两个计算公式为:

当然这只是一个默认的约束条件,也就是最终选择的目标模型一定需要满足此条约束。但是不表示仅仅是这一条约束,我们对待实际问题需要区别处理。比如说我们我们已知骰子的1和6朝上概率为3/20,(假设骰子不均匀)那么这就是一个额外的条件约束。

为了帮助大家理解约束条件,这里还有比较完整详细的约束条件几何解释

熵的计算

这是我们所要优化的目标,熵。我们的目的就是要将模型的熵提高到最大,来将此模型作为我们最终使用的模型。 假设满足所有约束条件的模型集合为:

我们将定义在概率分布P(Y|X)上的条件熵定义为:

对条件熵不太熟悉的朋友可以看维基百科中对于的描述。

最大熵模型的学习

最大熵模型的学习过程就是一个求解最大熵模型的过程。我们将此过程也可以简化称为一种约束最优化的过程,等价约束最优化问题如下:

我们首先按照一般习惯,将此求最大问题转化为求最小问题。对原式取负就可以。 转化之后的公式如下:

然后就开始求解此约束条件的最优化问题:

由于原始问题是凸问题,所以其对偶问题与原始问题同解,我们便着力求解其对偶问题。这里我贴上《统计学习方法》里面的解法,帮助大家理解:

一个例子

转载地址:http://aqkio.baihongyu.com/

你可能感兴趣的文章
ERP计划参数如何在线更新
查看>>
3.8Python数据处理篇之Numpy系列(八)---Numpy的梯度函数
查看>>
LVS+Keepalived实现高可用集群
查看>>
我的友情链接
查看>>
hadoop管理命令——fsck
查看>>
我的友情链接
查看>>
unbantu安装 mysql --- 百度云
查看>>
sql2008性能计数器注册表配置单元一致性失败
查看>>
LNMP环境搭建
查看>>
我的友情链接
查看>>
学习linux—— 磁盘相关指令
查看>>
词法分析与语法分析简介
查看>>
JS中的默认行为
查看>>
我的友情链接
查看>>
Checkio代码闯关小计
查看>>
从oracle到mysql,主从到分库,一个普通项目数据库架构的变迁
查看>>
从零开始学wordpress 之四
查看>>
Newtonsoft 反序列化字符串
查看>>
[LeetCode] Course Schedule
查看>>
selenium层级定位及鼠标键盘操作
查看>>