“熵”不起:从熵、最大熵原理到最大熵模型(三)
By 苏剑林 | 2015-12-20 | 75853位读者 |上集回顾 #
在上一篇文章中,笔者分享了自己对最大熵原理的认识,包括最大熵原理的意义、最大熵原理的求解以及一些简单而常见的最大熵原理的应用。在上一篇的文末,我们还通过最大熵原理得到了正态分布,以此来说明最大熵原理的深刻内涵和广泛意义。
本文中,笔者将介绍基于最大熵原理的模型——最大熵模型。本文以有监督的分类问题来介绍最大熵模型,所谓有监督,就是基于已经标签好的数据进行的。
事实上,第二篇文章的最大熵原理才是主要的,最大熵模型,实质上只是最大熵原理的一个延伸,或者说应用。
最大熵模型 #
分类:意味着什么? #
在引入最大熵模型之前,我们先来多扯一点东西,谈谈分类问题意味着什么。假设我们有一批标签好的数据:
数据x123456…100标签y101010…0
所谓分类问题,就是给出一个模型,我告诉模型x,模型给能够告诉我对应的y,因此,很自然可以把分类问题看成是一个拟合问题,即找到函数y=f(x)来拟合这批数据。可用来拟合的函数有很多,简单的有线性函数(线性回归)、Logistic函数(Logistic回归),复杂的有多层神经网络,都是通过把分类问题看成拟合问题来解决。
然后,这种看法并不是唯一,我们还可以用概率的角度看待分类问题。因为世界上几乎没有什么确定的事情,因此,当我们输入x时,输出的y值并不是确定的,比如上述数据,当我们输入1时,它以一定的概率输出1或0,只不过1的概率更大一些而已。这时候,分类问题变成了已知x的情况下求y的概率分布的问题,也就是求条件分布p(Y|X)。
而在前面一篇文章已经知道,最大熵原理天生就是用来求概率分布的,因此在这里,最大熵原理自然地与分类问题结合了起来,产生了最大熵模型。
最大熵模型 #
现在,分类问题变成了求条件分布p(Y|X)的问题,我们还是用最大熵原理来求解,不同的是,由于是条件分布,因此,我们需要求极值的熵是条件熵(参考第一篇):
S(Y|X)=S[p(x,y)]−S[p(x)]
而
p(y|x)=p(x,y)p(x)
因此,求出p(x,y)和p(x)就可以求出条件分布p(Y|X)。这里的p(x,y)和p(x)均是未知的,但是我们认为,可以通过大量的统计,得出p(x)的经验分布˜p(x)(因为x仅仅是需要收集的数据,因此,这个统计是理论可行的。),因此,未知的分布仅仅是p(x,y),我们集中精力求它。这时候,求(37)式的最大值,等价于求S[p(x,y)]的最大值。
如何确定x与y的关系呢?很简单,统计!通过统计已经标签好的数据,来得出它们之间的概率关系。而如果要用数学描述的话,我们需要定义特征函数:
χ(x,y)={1,x,y满足某个事实0,x,y不满足某个事实
比如,在上面给出的标签数据表中,我们发现,当x是奇数时,给出y=1,当x是偶数时,给出y=0,因此,我们猜想,结果跟奇偶性有关,因此,可以定义特征函数
χ(x,y)={1,当x是奇数且y=1时0,其他情况
然后,我们去统计满足特征函数的个数Nχ,然后除以样本总数N,得到τ=Nχ/N。我们认为,当数据足够多时,这个“个数”就是平均意义下的结果
E[χ(x,y)]=∑x,yp(x,y)χ(x,y)=τ
我们可以定义多个特征,得到多个特征函数,然后得到多个统计结果:
{E[χ1(x,y)]=∑x,yp(x,y)χ1(x,y)=τ1⋮E[χk(x,y)]=∑x,yp(x,y)χk(x,y)=τk
这些成为了对最大熵的约束,因此,又变成了一个带有约束的极大值问题,在第二篇中,我们已经给出了结果(类似式(20)):
p(x,y)=1Zexp(−k∑i=1λiχi(x,y))
而
Z=∑x,yexp(−k∑i=1λiχi(x,y))
注意,这里求出了p(x,y),如果我们我们只关心p(y|x),最好将它变成p(y|x)的形式,即
p(y|x)=p(x,y)p(x)=1Z(x)exp(−k∑i=1λiχi(x,y))
这里的Z(x)=Z×p(x)是与x有关的归一化因子。
浅谈模型的应用 #
接下来是模型求解的问题,但是已经说过,最大熵原理相关的模型具有形式简单、适应能力强等特点,然而它却有一个致命的缺点——难于求解,一般只能够通过数值方法求解。笔者在这方面并没有自己的见解,所以就不细说了。有兴趣的读者可以参考其他文献,如这里。
我们再来仔细谈一下怎么用最大熵模型,假设我们提取了一个特征,这个特征有N个取值(比如这个特征为单词的词性,取值有动词、名词、形容词等),而我们做的是二元分类(如情感分类,积极或消极),那么事实上,可以构造2N个特征函数(动词-积极,名词-积极,动词-消极,名词-消极,等等组合)。再加上,如果提取了多个特征,那么特征函数的数目将是非常可观的。因此,最大熵模型的主要工作在于(人工)提取特征,当完成了特征提取后,最大熵模型给出了一种最佳的利用特征的方案(熵最大化的方案)。
因此,最大熵模型虽然适应能力强(适应能力强,是因为它可以在基于我们提出的任意约束的情况下,求出概率分布,约束的数目理论上没有限制),效果很好(如果能求解出来,那么效果通常是非常好的),但是应用比较窄,因为我们并没有一般的手段去很好地提取特征。所以一般的分类问题,很少直接用最大熵模型。尤其是深度学习算法流行后,多层神经网络强大的拟合能力和优良的性能,使得我们在通常的分类问题中,几乎不会再使用最大熵模型了。
那什么时候用这个最大熵模型呢?我们一般是”挑选出“适合用最大熵模型的问题(一般来说,特征的取值是二元的,或者特征不多),这时候,适合使用最大熵模型,而且作为单一的模型来说,效果一般比其他的模型好。(请回忆,最大熵的意义)
结束语 #
本系列到此算是结束了。很多网络文章或者书籍中,也讲解了最大熵模型的推导、求解等内容,但是我还是感觉,教科书上那种讲法,不够清晰明确。诸如熵的定义、熵的意义、最大熵的意义、最大熵模型的推导等,都不尽让我满意,因此,结合自己的理解,写了这三篇小文,既是自己的笔记,又是笔者与大家分享的自己的理解。如果有不当之处,请读者批评。
在本系列中,最大熵模型只是一个契机,事实上,三篇文章的重点是熵的概念和最大熵原理,它们才是值得反复琢磨的。熵量化了信息,量化了不确定性,我们可以用它来做很多事情。虽然这个系列结束了,但是关于信息、关于熵的内容,在本博客以后的文章中,仍会时常出现,因为关于熵,实在有太多美妙的不得不说的内容了。
关于最大熵模型,读者还可以参考吴军老师的《数学之美》,书中有两篇关于最大熵模型的介绍,还有很多其他的数据分析资料和故事,都很值得一看。
转载到请包括本文地址:https://spaces.ac.cn/archives/3567
更详细的转载事宜请参考:《科学空间FAQ》
如果您还有什么疑惑或建议,欢迎在下方评论区继续讨论。
如果您觉得本文还不错,欢迎分享/打赏本文。打赏并非要从中获得收益,而是希望知道科学空间获得了多少读者的真心关注。当然,如果你无视它,也不会影响你的阅读。再次表示欢迎和感谢!
如果您需要引用本文,请参考:
苏剑林. (Dec. 20, 2015). 《“熵”不起:从熵、最大熵原理到最大熵模型(三) 》[Blog post]. Retrieved from https://spaces.ac.cn/archives/3567
@online{kexuefm-3567,
title={“熵”不起:从熵、最大熵原理到最大熵模型(三)},
author={苏剑林},
year={2015},
month={Dec},
url={\url{https://spaces.ac.cn/archives/3567}},
}
December 8th, 2023
苏神写了详细的过程真厉害,有个小问题:
最大熵模型的特征函数是否可以类比神经网络中的神经元:
神经元是将特征数量以及参数w交给神经元去自动计算;
而最大熵模型是人为确定特征数量并计算相应的特征参数w?
可以这样类比吧,反正都是线性组合。