最大熵模型

版权声明:本文为博主原创文章,转载需注明出处。 https://blog.csdn.net/Hearthougan/article/details/81488588

本篇博客只是最近两天看最大熵模型的一个理解和简单总结,只为了阐述清楚最大熵模型,不涉及公式推导。为了怕很快忘记,特意综述一下,如有不正确之处欢迎指正。


  • 最大熵原理

熵:某种意义上说,概率是度量随机事件的确定性,熵是度量随机事件的不确定性。对于随机变量的概率分布来说,随机变量的分布越均匀,其熵越大。

最大熵原理:我们构建一个概率模型对某个随机变量的分布进行预测时,发现有很多概率模型满足给定约束条件,他们都可以准确表述随机变量的分布,那么哪个模型是最好的模型呢?在满足所有约束条件的概率模型集合中,选取熵最大的模型作为最好的模型,这就是最大熵原理。它是概率模型学习的一个准则。

经过大量的统计,在英文翻译成法文时候,英语单词in,会被翻译成法语单词 { dansenàau cours dependant } 5个中的一个,我们假设我们的翻译模型为P,选择某个法语单词x作为英语单词in的法语翻译的概率,记为:P(x)。那么该模型首要的约束条件就是:

p(dans)+p(en)+ p(\grave{a})+p(au cours de)+p(pendant) = 1

这是我们对翻译过程的一个统计信息,这是一个约束条件,我们假设只有这个约束条件,那么满足该约束条件的模型有很多。比如某个模型满足:

p(dans) = 1

p(en) = p(\grave{a}) = p(au cours de) = p(pendant) = 0

那么该翻译模型会将英文单词in一直翻译成dans。再比如某个翻译模型满足:

p(dans) = p(en) = 1/2

p(\grave{a}) = p(au cours de) = p(pendant) = 0,

当我们没有任何客观的根据时,做出了上面的两个假设,这两个模型不符合常理,因为是毫无根据的假设,我们只知道英文单词in从这5个里面选取一个,根本不知道这5个法语单词的概率分布。最明智的假设,就是让他们服从均匀分布,即:

p(dans) = 1/5

p(en)=1/5

p(\dot{a}) = 1/5

p(au cours de) = 1/5

p(pendant) = 1/5

  • 最大熵原理选取模型的准则:

  1. 知之为知之。即,模型的预测应当满足所有的已知条件,而对未知的情况不做任何主观的假设。
  2. 不知为不知。即,在没有更多信息的情况下,那些不确定部分的概率分布,都让它服从均匀分布。

根据最大熵原理从概率预测(分类)模型集合中选取出来的模型,就是最大熵模型,最大熵模型是概率预测(分类)模型集合中最好的模型。

  • 为什么最大熵模型是最好的模型?

  1. 最大熵模型满足了所有的约束条件,它可以准确的表述训练集中随机变量的分布(满足约束条件),这表示最大熵模型在训练集上,是表现最好的模型之一。
  2. 对于所有不确定的随机事件,让他们等概率发生,即服从均匀分布,其意义在于,我们没有做出任何主观假设,此时模型所携带的信息最多,模型的信息熵最大,而我们所面对的预测风险也就越小。也就是保留全部的不确定性,将风险降到最小。

综合这两点,所以说最大熵模型是最好的模型。

  • 最大熵模型

我们考虑一个随机过程,它产生一个输出Y,Y属于一个有穷集合\Upsilon。对于刚才讨论的翻译的例子,该过程输入单词in的翻译,输出值Y可以是集合 { dansenàau cours dependant } 中任何一个单词。在输出Y时,该过程可能会被上下文信息X影响,X属于有穷的集合\chi。在刚刚的例子中,这个上下文信息可能就是包括英文句子中in周围的单词。我们的任务是构造一个统计模型,该模型能够准确表示随机过程的行为。该模型任务是预测在给定上下文X的情况下,输出y的概率:p(Y|X)

给定一个训练数据集

T=\left \{ (x_{1},y_{1}), (x_{2},y_{2}),(x_{3},y_{3}),\cdot \cdot \cdot (x_{N},y_{N}) \right \}

目标就是用最大熵原理选择最好的分类模型p(Y|X)

为了清晰地表述,我们假设(x_{1},y_{1}),(x_{2},y_{2}),\cdot \cdot \cdot ,(x_{N},y_{N})是我们观察翻译模型这一随机过程一段时间,所收集的样本。每一个样本为包含in后继单词x和in被翻译成法语单词y,我们可以通过数据集来统计它的联合分布P(X,Y)的经验分布\tilde{P}(X,Y)以及边缘分布P(X)的经验分布\tilde{P}(X)

\tilde{P}(X=x,Y=y)=\frac{\nu (X=x,Y=y)}{N}

\tilde{P}(X=x) = \frac{\nu (X=x)}{N}

其中\nu (X=x,Y=y)表示,(x,y)在训练集中出现的频数。\nu (X=x)表示训练数据集中x出现的频数,N表示样本容量。

每一个样本(x,y)都表示一个事件,为了方便描述该事件,我们引入特征函数f(x,y),假设输入x的和输出y满足某一事实,那么特征函数取值为1,否则为0。即:

f(x,y)=\left\{\begin{matrix} 1, & if\, \, \, x, y\,\,\, meets\, a \, certain\, fact\\ 0 ,& others \end{matrix}\right.

比如在翻译的例子中,输入x与输出y所满足的事实是,当Aprial出现在in之后,in被翻译成en。则描述该事件的指示函数:

f(x,y)=\left\{\begin{matrix} 1, &if\, \, \, \, y = 'en'\, \; \, \, and \; \; \, 'April' \, \, \, \, follows \: \, \, \, 'in'\\ 0 ,& others \end{matrix}\right.

我们所关心的统计量是输入x与输出y满足事实关系的期望,而不只是x与y的事实关系以及数据集的概率分布,即特征函数f(x,y)关于经验分布\tilde{P}(X,Y)的期望。

\tilde{E}_{\tilde{p}}(f)=\sum_{x,y}^{ }\tilde{p}(x,y)f(x,y)

当我们发现一个统计量很有用时,我们可以通过让我们的模型来符合它,以此来确认它的重要性。刚刚说过特征函数的期望是我们认为比较重要的统计量,而特征函数关于模型p(Y|X)模拟数据(X,Y)的联合分布的期望:

E_{p}(f)=\sum_{x,y}^{ }p(x,y)f(x,y)

E_{p}(f)=\sum_{x,y}^{ }p(x)p(y|x)f(x,y)

由于当数据集给定时,样本(X,Y)的边缘分布\tilde{P}(x)是确定的,则:\tilde{P}(X)=P(X),故:

E_{p}(f)=\sum_{x,y}^{ }\tilde{p}(x)p(y|x)f(x,y)

我们说特征函数关于经验分布的期望是一个我们认为比较重要的统计量,而我们要模型符合这样的一个统计规律,也就是特征函数关于经验分布的期望要与特征函数关于模型的期望是相等的,以此来表示两者的符合,也是最大熵原理中模型要满足所有的已知条件的要求之一。即;

E_{p}(f)=\tilde{E}_{p}(f) \, \, \, \, \Leftrightarrow \, \, \, \, \sum_{x,y}^{ }\tilde{p}(x,y)f(x,y)=\sum_{x,y}^{ }\tilde{p}(x)p(y|x)f(x,y)

因此假设约束条件的所有模型集合为:

                                                   \mathbb{C}\equiv \left \{ P\in \mathbb{P}| \right E_{p}(f)=\tilde{E}_{p}(f),i=1,2,3...n\}

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

                                                 H(p) = -\sum_{x,y}^{ } \tilde{P}(x)P(y|x)log(P(y|x))

则模型集合\mathbb{C}中条件熵H(P)最大的模型称为最大熵模型。

至此最大熵模型的理论部分交代完成,剩余的就是怎么解这个最大熵模型。解法比较简单,不涉及复杂的计算,这里不再阐述和总结。

参考:

《统计学习方法》

A Maximum Entropy Approach to Natural Language Processing

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页