一直对自然语言处理中的各种模型一知半解。总是抓不住它们的思想。
今天看了一下这个“最大熵模型”(A Maximum Entropy Approach to Natural Language Processing),写写自己的想法吧。呵呵。
就像论文中所说的:希望找到一个最佳的uniform。也就是在模型的建立时,将所有已知的事实建入模型中,而对于未知的则尽量的使它们一致。
比如我们目前只知道的事实是某个随机变量取值的概率分布具有约束条件:
(1) P(A+B)=0.2,
(2) P(C+D+E+F)=0.8。
那么我们在预测P(A),P(B),P(C),P(D),P(E),P(F)的各个值时,按照直觉应该对(A,B)和(C,D,E,F)平均分配概率。
P(A)=0.1;
P(B)=0.1;
P(C)=0.2;
P(D)=0.2;
P(E)=0.2;
P(F)=0.2。
那么这样的一种uniform应该在公式上面怎样体现呢,文章随之就引入了最大熵的思想。
最大化条件熵:
H(p)=-∑{x,y}{~p(x)p(y|x)log p(y|x)}即能够满足我们所需要的uniform条件。
而我们的事实应该怎么表达呢?
原文文章中的公式1,2,3的综合给了我们他的表示方法。
《文本挖掘》中所写的式子感觉更加容易理解。
p(f)=∑{x,y}p(x,y)f(x,y)=P(f)=∑{x,y}P(x,y)f(x,y)
在实际中由于不好计算真实的期望值,因此使用经验值,只在训练样本熵进行求和,则有:
pE(f)=∑{i=1...N}∑{y∈Y}p(y|xi)f(xi,y)/N=PE(f)=∑{i=1...N}f(xi,yi)/N
由于对于每个f都有一个公式,这组公式很像上面例子中给出的(1),(2)两个公式。公式的右边已知,而我们希望公式左边的概率p(y|x)能够服从这个约束条件。该公式可以理解为特征函数f生成的约束条件。在这个特征函数下的概率和满足右边式子的值。
其中引入了一个特征函数f(x,y)。这个特征函数的取值要么为1,要么为0。表示了我们希望考虑的一些条件,而我们不想考虑的条件则由于=0的原因而没有考虑到等式中。因此被叫做特征函数,他表示我们感兴趣的特征。
最大上模型的大概思想我感觉就是这个样子了。当然,具体的寻找最优解的算法还是很复杂的。