一、最大熵模型的理解
最大熵模型是由最大熵原理推导而来的,最大熵原理认为在所有可能的概率模型中,熵最大的模型是最好的模型。即在满足约束条件的情况下,所有变量的取值都是等可能的。
假设有如下的离散分布:
x | 1 | 2 | ...... | k |
p | p1 | p2 | ...... | pk |
现在利用最大熵原理,证明熵最大的情况下,所有变量的概率取值是相同的。
最大熵模型将概念中的等可能性转化为了一个可以定量描述的数学式子,要想各个变量的概率值相等,只要让熵最大即可。
二、最大熵模型的定义
最大熵模思想简单,但是定义模型后比较难理解,在统计学习方法中,有特征函数的引入,不知道为什么这样引入,所以这里引入一个例子,可以帮助我们理解模型。例子来自参考资料2-语言处理技术中的最大熵模型方法。
下面举例说明,以英汉翻译为例,对于英语中的“take”,它对应汉语的翻译有:
1 “抓住”: The mother takes her child by the hand. 母亲抓住孩子的手。
2 “拿走”:Take the book home. 把书拿回家。
3 “乘坐”:to take a bus to work. 乘坐公共汽车上班。
4 “量”: Take your temperature. 量一量你的体温。
5 “装”:The suitcase wouldn't take another thing. 这个衣箱不能装别的东西了。
6 “花费”:It takes a lot of money to buy a house. 买一所房子要花一大笔钱。
7 “理解、领会”:How do you take this package? 你怎么理解这段话?
现在我们有这7个数据,对take进行翻译。
首先,我们会认为取得每一种翻译的概率相等是,但是这样实际上并不符合实际,抓住和拿走的翻译在日常生活中可能用到的比较多,假设取到这两种翻译的概率是
,则其他五种的概率为
。如果采用最大熵模型的话,表示他们取得的概率相同,即翻译为抓住和拿走的概率为
,翻译为其他5种的概率为
。加入这样的限制条件下,模型表现的会比上一个好,但是我们并没有考虑上下文的情况。take翻译为乘坐的概率比较小,但是如果后面有bus,那么这个词翻译为乘坐的概率就比较大。用数学公式表示如下:
当x中有bus,并且y翻译为乘坐是函数为1,否则为零。这个式子就叫做特征函数。特征函数的引入是为了限制最大熵模型。
假设给定训练集:
T={(x1,y1),(x2,y2),(x3,y3),...,(xn,yn)}
我们的目标就是用最大熵模型选择最好的分类模型,
首先,我们需要把数据转化为数学公式,这样才能输入模型进行训练。
引入关于P(x,y)的经验分布和边缘分布P(X)分别用和
表示:
其中,v(X=x)表示训练数据中x出现的频数,N表示样本容量。这两个函数是对样本的表达。也就是对已知事实的表达。
而特征函数的引入是为求期望,从而完成对已知事实的数学描述。使得样本的期望概率值和经验概率值相等。即:
约束就变为:
结合条件熵,最大熵模型表示如下:
三、最大熵模型结果
在上面的优化问题求解完成之后,就会得到最大熵模型的结果。
参考资料:1>机器学习-白板推导系列(八)-指数族分布(Exponential Family Distribution)
3>深度之眼-统计学习方法训练营
4>统计学习方法-第二版-李航