最大熵模型原理小结

   最大熵模型(maximum entropy model, MaxEnt)也是很典型的分类算法了,它和逻辑回归类似,都是属于对数线性分类模型。在损失函数优化的过程中,使用了和支持向量机类似的凸优化技术。而对熵的使用,让我们想起了决策树算法中的ID3和C4.5算法。理解了最大熵模型,对逻辑回归,支持向量机以及决策树算法都会加深理解。本文就对最大熵模型的原理做一个小结。

1.  熵和条件熵的回顾

  在决策树算法原理(上)一文中,我们已经讲到了熵和条件熵的概念,这里我们对它们做一个简单的回顾。

  熵度量了事物的不确定性,越不确定的事物,它的熵就越大。具体的,随机变量X的熵的表达式如下:$$H(X) = -\sum\limits_{i=1}^{n}p_i logp_i$$

  其中n代表X的n种不同的离散取值。而$p_i$代表了X取值为i的概率,log为以2或者e为底的对数。

  熟悉了一个变量X的熵,很容易推广到多个个变量的联合熵,这里给出两个变量X和Y的联合熵表达式:

$$H(X,Y) = -\sum\limits_{x_i \in X}\sum\limits_{y_i \in Y}p(x_i,y_i)logp(x_i,y_i)$$

  有了联合熵,又可以得到条件熵的表达式H(Y|X),条件熵类似于条件概率,它度量了我们的Y在知道X以后剩下的不确定性。表达式如下:

$$H(Y|X) = -\sum\limits_{x_i \in X}\sum\limits_{y_i \in Y}p(x_i,y_i)logp(y_i|x_i) = \sum\limits_{j=1}^{n}p(x_j)H(Y|x_j) $$

  用下面这个图很容易明白他们的关系。左边的椭圆代表H(X),右边的椭圆代表H(Y),中间重合的部分就是我们的互信息或者信息增益I(X,Y),左边的椭圆去掉重合部分就是H(X|Y),右边的椭圆去掉重合部分就是H(Y|X)。两个椭圆的并就是H(X,Y)。

2.  最大熵模型的定义

  最大熵模型假设分类模型是一个条件概率分布$P(Y|X)$,X为特征,Y为输出。

  给定一个训练集${(x^{(1)},y^{(1)}),(x^{(2)},y^{(2)}),... ,(x^{(m)},y^{(m)})}$,其中x为n维特征向量,y为类别输出。我们的目标就是用最大熵模型选择一个最好的分类类型。

  在给定训练集的情况下,我们可以得到总体联合分布$P(X,Y)$的经验分布$\overline{P}(X,Y)$,和边缘分布$P(X)$的经验分布$\overline{P}(X)$。$\overline{P}(X,Y)$即为训练集中X,Y同时出现的次数除以样本总数m,$\overline{P}(X)$即为训练集中X出现的次数除以样本总数m。

  用特征函数$f(x,y)$描述输入x和输出y之间的关系。定义为:

$$f(x,y)=\left\{\begin{matrix}

1 & x和y满足某个关系\\
0 & 否则
\end{matrix}\right.$$ 

  可以认为只要出现在训练集中出现的$(x^{(i)},y^{(i)})$,其$f(x^{(i)},y^{(i)}) = 1$. 同一个训练样本可以有多个约束特征函数。

  特征函数$f(x,y)$关于经验分布$\overline{P}(X,Y)$的期望值,用$E_{\overline{P}}(f)$表示为:$$E_{\overline{P}}(f) = \sum\limits_{x,y}\overline{P}(x,y)f(x,y)$$   

  特征函数$f(x,y)$关于条件分布$P(Y|X)$和经验分布$\overline{P}(X)$的期望值,用$E_{P}(f)$表示为:

$$E_{P}(f) = \sum\limits_{x,y}\overline{P}(x)P(y|x)f(x,y)$$

  如果模型可以从训练集中学习,我们就可以假设这两个期望相等。即:

$$E_{\overline{P}}(f) = E_{P}(f)$$ 

  上式就是最大熵模型学习的约束条件,假如我们有M个特征函数$f_i(x,y) (i=1,2...,M)$就有M个约束条件。可以理解为我们如果训练集里有m个样本,就有和这m个样本对应的M个约束条件。

  这样我们就得到了最大熵模型的定义如下:

  假设满足所有约束条件的模型集合为:

$$E_{\overline{P}}(f_i) = E_{P}(f_i) (i=1,2,...M)$$ 

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

$$H(P) = -\sum\limits_{x,y}\overline{P}(x)P(y|x)logP(y|x)$$

  我们的目标是得到使$H(P)$最大的时候对应的$P(y|x)$,这里可以对$H(P)$加了个负号求极小值,这样做的目的是为了使$-H(P)$为凸函数,方便使用凸优化的方法来求极值。 

3.  最大熵模型损失函数的优化

  在上一节我们已经得到了最大熵模型的函数$H(P)$。它的损失函数$-H(P)$定义为:

$$ \underbrace{ min }_{P} -H(P) = \sum\limits_{x,y}\overline{P}(x)P(y|x)logP(y|x)$$

  约束条件为:

$$E_{\overline{P}}(f_i) - E_{P}(f_i) = 0 (i=1,...M) $$

$$\sum\limits_yP(y|x) = 1 $$

  由于它是一个凸函数,同时对应的约束条件为仿射函数,根据凸优化理论,这个优化问题可以用拉格朗日函数将其转化为无约束优化函数,此时损失函数对应的拉格朗日函数$L(P,w)$定义为:  

$$L(P,w) \equiv -H(P) + w_0(1 - \sum\limits_yP(y|x)) + \sum\limits_{i=1}^{M}w_i(E_{\overline{P}}(f_i) - E_{P}(f_i))$$ 

  其中$w_i(i=1,...m)$为拉格朗日乘子。如果大家也学习过支持向量机,就会发现这里用到的凸优化理论是一样的,接着用到了拉格朗日对偶也一样。、

  我们的拉格朗日函数,即为凸优化的原始问题:$\underbrace{ min }_{P} \underbrace{ max }_{w}L(P,w)$

  其对应的拉格朗日对偶问题为:$\underbrace{ max}_{w} \underbrace{ min }_{P}L(P,w)$

  由于原始问题满足凸优化理论中的KKT条件,因此原始问题的解和对偶问题的解是一致的。这样我们的损失函数的优化变成了拉格朗日对偶问题的优化。

  求解对偶问题的第一步就是求$\underbrace{ min }_{P}L(P,w)$,这可以通过求导得到。这样得到的$\underbrace{ min }_{P}L(P,w)$是关于w的函数。记为:

$$\psi(w) = \underbrace{ min }_{P}L(P,w) = L(P_w,w)$$

  $\psi(w)$即为对偶函数,将其解记为:

$$P_w = arg \underbrace{ min }_{P}L(P,w) = P_w(y|x)$$

  具体的是求$L(P,w)$关于$P(y|x)$的偏导数:

$$\frac{\partial L(P,w)}{\partial P(y|x)} = \sum\limits_{x,y}\overline{P}(x)(logP(y|x) +1) -  \sum\limits_yw_0 - \sum\limits_{x,y}(\overline{P}(x)\sum\limits_{i=1}^{M}w_if_i(x,y))$$ 

$$ = \sum\limits_{x,y}\overline{P}(x)(logP(y|x) +1- w_0 -\sum\limits_{i=1}^{M}w_if_i(x,y))$$

  令偏导数为0,可以解出$P(y|x)$关于$w$的表达式如下:

$$P(y|x) = exp(\sum\limits_{i=1}^{M}w_if_i(x,y) +w_0 -1) = \frac{exp(\sum\limits_{i=1}^{M}w_if_i(x,y))}{exp(1-w_0)}$$    

  由于$\sum\limits_yP(y|x) = 1 $,可以得到$P_w(y|x)$的表达式如下:

$$P_w(y|x) = \frac{1}{Z_w(x)}exp(\sum\limits_{i=1}^{M}w_if_i(x,y))$$ 

  其中,$Z_w(x)$为规范化因子,定义为:

$$Z_w(x) = \sum\limits_yexp(\sum\limits_{i=1}^{M}w_if_i(x,y))$$ 

  这样我们就得出了$P(y|x)$和$w$的关系,从而可以把对偶函数$\psi(w)$里面的所有的$P(y|x)$替换成用$w$表示,这样对偶函数$\psi(w)$就是全部用$w$表示了。接着我们对$\psi(w)$求极大化,就可以得到极大化时对应的w向量的取值,带入$P(y|x)$和$w$的关系式, 从而也可以得到$P(y|x)$的最终结果。

  对$\psi(w)$求极大化,由于它是连续可导的,所以优化方法有很多种,比如梯度下降法,牛顿法,拟牛顿法都可以。对于最大熵模型还有一种专用的优化方法,叫做改进的迭代尺度法(improved iterative scaling,IIS)。

  IIS也是启发式方法,它假设当前的参数向量是$w$,我们希望找到一个新的参数向量$w+\delta$,使得对偶函数$\psi(w)$增大。如果能找到这样的方法,就可以重复使用这种方法,直到找到对偶函数的最大值。

  IIS使用的方法是找到$\psi(w + \delta) - \psi(w)$的一个下界$B(w|\delta)$,通过对$B(w|\delta)$极小化来得到对应的$\delta$的值,进而来迭代求解$w$。对于$B(w|\delta)$,它的极小化是通过对$\delta$求偏导数而得到的。

  由于IIS一般只用于最大熵模型,适用范围不广泛,这里就不详述算法过程了,感兴趣的朋友可以直接参考IIS的论文The improved iterative scaling algorithm: A gentle introduction

4.  最大熵模型小结

  最大熵模型在分类方法里算是比较优的模型,但是由于它的约束函数的数目一般来说会随着样本量的增大而增大,导致样本量很大的时候,对偶函数优化求解的迭代过程非常慢,scikit-learn甚至都没有最大熵模型对应的类库。但是理解它仍然很有意义,尤其是它和很多分类方法都有千丝万缕的联系。 

  惯例,我们总结下最大熵模型作为分类方法的优缺点:

  最大熵模型的优点有:

  a) 最大熵统计模型获得的是所有满足约束条件的模型中信息熵极大的模型,作为经典的分类模型时准确率较高。

  b) 可以灵活地设置约束条件,通过约束条件的多少可以调节模型对未知数据的适应度和对已知数据的拟合程度

  最大熵模型的缺点有:

  a) 由于约束函数数量和样本数目有关系,导致迭代过程计算量巨大,实际应用比较难。

 

本文转载自:https://www.cnblogs.com/pinard/p/6093948.html

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


python方向·数据分析   ·自然语言处理nlp   案例:中文分词·社交网络分析      案例:人物关系分析·人工智能·深度学习·计算机视觉案例:行人检测·网络爬虫·量化交易          案例:多因子策略模型 
原文地址http://blog.sina.com.cn/s/blog_574a437f01019poo.html昨天实验室一位刚进组的同学发邮件来问我如何查找学术论文,这让我想起自己刚读研究生时茫然四顾的情形:看着学长们高谈阔论领域动态,却不知如何入门。经过研究生几年的耳濡目染,现在终于能自信地知道去哪儿了解最新科研
ptb数据集是语言模型学习中应用最广泛的数据集,常用该数据集训练RNN神经网络作为语言预测,tensorflow对于ptb数据集的读取也定义了自己的函数库用于读取,在python1.0定义了models文件用于导入ptb库函数,然而当python升级后,导入models文件时就会出现:ModuleNotFountError错误,这时需
 Newtonsoft.JsonNewtonsoft.Json是.Net平台操作Json的工具,他的介绍就不多说了,笔者最近在弄接口,需要操作Json。以某个云计算平台的Token为例,边操作边讲解。Json转为Model将Model转为Json将LINQ转为JSONLinq操作命名空间、类型、方法大全 Json转为Model 
NLP(NaturalLanguageProcessing)自然语言处理是人工智能的一个子领域,它是能够让人类与智能机器进行沟通交流的重要技术手段,同时也是人工智能中最为困难的问题之一。因此,NLP的研究处处充满魅力和挑战,也因此被称为人工智能“皇冠上的明珠”。目前各家主流深度学习框架,都开放了相应
做一个中文文本分类任务,首先要做的是文本的预处理,对文本进行分词和去停用词操作,来把字符串分割成词与词组合而成的字符串集合并去掉其中的一些非关键词汇(像是:的、地、得等)。再就是对预处理过后的文本进行特征提取。最后将提取到的特征送进分类器进行训练。一、什么是自然语言处
NLP(NaturalLanguageProcessing)自然语言处理是人工智能的一个子领域,它是能够让人类与智能机器进行沟通交流的重要技术手段,同时也是人工智能中最为困难的问题之一。因此,NLP的研究处处充满魅力和挑战,也因此被称为人工智能“皇冠上的明珠”。目前各家主流深度学习框架,都开放了相应
编者注:文中超链接如果不能访问可以点击“阅读原文”访问本文原页面;可以参考2018年5月21-24日伦敦Strata数据会议上的教学辅导课《使用spaCy和SparkNLP进行自然语言理解》。本系列博客的目地是通过使用两个领先的生产级语言处理库(JohnSnowLabs的ApacheSparkNLP和Explosion
NLP文本相似度相似度相似度度量:计算个体间相似程度相似度值越小,距离越大,相似度值越大,距离越小最常用--余弦相似度:​一个向量空间中两个向量夹角的余弦值作为衡量两个个体之间差异的大小余弦值接近1,夹角趋于0,表明两个向量越相似如果向量a和b不是二维而是n维​
0.原文NLP系列(6)_从NLP反作弊技术看马蜂窝注水事件-寒小阳-CSDN博客https://blog.csdn.net/han_xiaoyang/article/details/842057011.马蜂窝是否有大量抄袭点评1.1先用词袋模型快速筛选一批相似点评词袋子模型是一种非常经典的文本表示。顾名思义,它就是将字符串视为
地址:https://gitbook.cn/books/5c7888e1a19247277cb5c313/index.html深度学习优势总结:手工特征耗时耗力,还不易拓展自动特征学习快,方便拓展深度学习提供了一种通用的学习框架,可用来表示世界、视觉和语言学信息深度学习既可以无监督学习,也可以监督学习在DeepNLP
本文将分享发表在2018年的NAACL上,outstandingpaper。论文链接ELMo。该论文旨在提出一种新的词表征方法,并且超越以往的方法,例如word2vec、glove等。论文贡献点能捕捉到更复杂的语法、语义信息。能更好的结合上下文内容,对多义词做更好的表征。(以往的词表征方法,例如word2ve
时间:2016年1月。出处:http://blog.csdn.net/longxinchen_ml/article/details/50597149http://blog.csdn.net/han_xiaoyang/article/details/50616559声明:版权所有,转载请联系作者并注明出处##1.引言贝叶斯方法是一个历史悠久,有着坚实的理论基础的方法,同时处理很多问题时
NLP的工程化,不是一个个算法的累积,也不是一个个任务的独立优化,而应该是系统工程,综合考虑语言、计算、场景等多种因素,不断演进融合,寻求效果满意解的过程。根据赫伯特.西蒙(图灵奖和诺贝尔奖双料得主)的有限理性模型,受到所处环境的高度复杂性和有限的信息加工能力限制,因此NLP应用
继NLP之后,我又开了ML这个大坑。这是因为NLP涉及到太多的ML模型,仅仅拿过来用的话,我实现的HanLP已经快到个人极限了。而模型背后的原理、如何优化、如何并行化等问题,都需要寻根求源才能解决。所以我找了个书单自学,电子书为主,顺便分享出来。 ML书单│  李航.统计学习方法.
少玩ai,人工智能,nlp,tensorflow之类的玄学,多学学基础,三大浪漫,C++,搞开发,千万不要变成调参侠
 0.introductionGAN模型最早由IanGoodfellowetal于2014年提出,之后主要用于signalprocessing和naturaldocumentprocessing两方面,包含图片、视频、诗歌、一些简单对话的生成等。由于文字在高维空间上不连续的问题(即任取一个wordembedding向量不一定能找到其所对应的文字),GA
自然语言处理Firstatall 因为本人换系统之前都在用oneNote,在ubuntu上部署不便,所以将一些常用的信息写成博客 本文主要引用Ruder大神的NLP-proress做了一下翻译和提取原文地址:传送门1.前沿技术StateoftheArt 机器学习和自然语言处理(NLP)的研究近来发展
北风网-人工智能就业班培训链接:https://pan.baidu.com/s/128DJgMY9G-fjzRAxq1QO-w  提取码:ngwi课程体系阶段一、人工智能基础-高等数学必知必会本阶段主要从数据分析、概率论和线性代数及矩阵和凸优化这四大块讲解基础,旨在训练大家逻辑能力,分析能力。拥有良好的数学基础,有利