MaxEnt

最大熵原理

当我们需要对一个随机事件的概率分布进行预测时,我们的预测应当满足全部已知的条件,而对未知的情况不要做任何主观假设。(不做主观假设这点很重要。)

在这种情况下,概率分布最均匀,预测的风险最小。因为这时概率分布的信息熵最大,所以人们称这种模型叫"最大熵模型"。

我们常说,不要把所有 的鸡蛋放在一个篮子里,其实就是最大熵原理的一个朴素的说法,因为当我们遇到不确定性时,就要保留各种可能性。[数学之美


例子

一个军事、政治和科技的3类文本分类问题,我们得知,出现“飞机”这个词的80%的文档属于军事类别,对于“飞机”这个词在其他两类中的分布未知”根据最大熵原则,如果给定一个包含“飞机”这个词文档,那么认为文档以0.8的概率属于军事类别,分别以0.1的概率属于其他两类;如果文档中不包含“飞机”这个词,那么认为文档分别以相同的1/3的概率属于每一个类”,即在符合已知约束的情况下,使未知事件的分布尽可能均匀。


模型定义:

目标函数就是给定特征X下该样本属于类别Y的条件概率,实际是一个条件熵H(P)。 我们要在约束条件下,最大化H(P)。

学习:

学习过程:(为了先求出拉格朗日乘子,我们要将原始问题变为 min问题)

1、将最大值问题改写成等价的最小值问题;

2、将约束最优化的原始问题转换成无约束最优化的对偶问题:

     a、引入拉格朗日乘子,定义拉格朗日函数L(P,w)

     

      b、

      c、通过求偏导数,求出P、w。

      d、w带入P的公式中,即可得到对偶问题的解,也是原始问题的解。



算法:

最大熵模型学习归结为以似然函数为目标函数的最优化问题。如果是光滑的凸函数,有:

1、改进的迭代尺度法 (IIS)

2、梯度下降法 (SGD)

3、牛顿法或拟牛顿法(一般收敛速度更快)L-BFGS

这些方法,保证可以找到全局最优解。

IIS:

思想:通过每次迭代新的参数向量w+a,使得模型的对数似然函数值增大(极大似然估计)。

1、建立对数似然函数该变量的下界:

如果能找到适合的迭代步长a,使得下界A(a|w)提高,那么对数似然函数也会提高。IIS试图一次只优化a向量的一个变量ai,而固定其他变量aj,i <> j

IIS对下界进一步优化:

实现:

Python:

工具包:http://ir.hit.edu.cn/~taozi/ME.htm

案例:

http://blog.csdn.net/on_1y/article/details/9769919

https://github.com/minixalpha/PyCWS/blob/master/src/cwsMaxEn-13f.py


R语言:

https://github.com/txHe/R-TextClassification


优缺点:

优点:模型形式简单

缺点:训练复杂


总结:

最大熵模型是一个概率模型,而且它对于未知数据有自己的假设,即未知情况的分布情况是均匀的。

特征工程之后,找到一些特征函数f,利用拉格朗日函数进行转换对偶问题求解,或者 利用极大似然函数转换为最大值优化问题。

机器学习算法很难说一个模型一定优于另一个模型,只能说某些任务上某个模型可能更加适合。然而,实际上很多系统的提升不在模型上而是在特征提取上,这也就是为何深度学习能突然火起来的原因之一吧,因为它能自主学习到抽象的特征表示,不再需要费劲的构建特征了。


参考文献:

http://homepages.inf.ed.ac.uk/lzhang10/maxent.html

http://homepages.inf.ed.ac.uk/lzhang10/maxent_toolkit.html

http://glacier.iego.net/%E6%9C%80%E5%A4%A7%E7%86%B5%E6%A8%A1%E5%9E%8B%E5%8F%8A%E5%BA%94%E7%94%A8%E7%AE%80%E4%BB%8B/

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值