Maximum entropy modeling(一)



Maximum entropy modeling (一)

0.       写在前面的话

初次接触最大熵的时候,有点觉得无厘头,因为熵是代表信息的混乱程度,那么最大熵不就是最大化信息的混乱程度?这样的模型能用吗?后来看了基本概念,最大熵是有前提的,就是要在保持我们的模型在符合已知信息的情况下,对未知信息保持最大熵。这个定义就简单明了的说明了最大熵的意义和条件。但具体如何应用呢?很多事情我们都是有个概念,但是对于具体怎么实现呢?在数学上的表现形式是什么呢?接下来根据自己的理解和部分参考文献介绍最一下大熵这个问题,争取做到既简单又明了。主要参考《a maximum entropy approach to natural language processing》。

 

1.       Introduction

要对一个随机过程或者事件进行建模,要完成两个任务:1.决定有哪些捕捉到了这个随机过程或事件的统计量;将这些得到的统计量或者说facts用模型关联起来。

 

2.       A maximum entropy overview

这里首先从一个实际的例子出发来引入maximum entropy的概念。

假定我们现在面临的任务是:把英语单词in翻译成法语。我们的模型用p(f)来表示把这个单词翻译成法语单词f的概率。为了能够更加准确的把in这个单词正确的翻译出来,我们收集了许多以前的翻译样本,这些我们收集的以前的翻译样本就构成了我们的训练集。现在我们应当做什么呢?自然是要先从收集的训练集中提取尽可能多和准确的有用的信息,然后把这个信息用来帮助我们构建我们的模型,其实就是用这个信息来合理的约束我们的模型,最后就用构建的模型来实现我们起初的任务。

现在就要从训练集中提取信息了。通过观察,我们发现在训练集中in这个单词经常会被翻译为以下5个单词中一个:{dans, en, à, au cours de, pendant }.利用这个信息,我们可以对我们的模型施加第一个约束,(一个泛泛的模型太多了,通过训练集中的信息逐步的施加约束,逐步的缩小模型的可行范围,到最后就可以确定求解出具体的模型了)。这个约束可以写成:

         Maximum <wbr>entropy <wbr>modeling(一)

           上面这个式子代表了我们从训练集中提取的第一个信息。

           接下来, 继续提取信息,施加约束,因为满足上述式子的模型也有很多啊,可以让第一项等于1,其他项都为0,即每次都把in翻译成dans。但这样显然不太合理。那假如说现在没有其他信息了,没有信息来进一步说明哪个词占得比例大一些,哪个词占得比例小一些,那怎样选择模型在这5个单词上的概率才算合理呢?这时,我们都可以想到,最保险的做法就是让in被翻译成这5个单词的概率相等,也就是

Maximum <wbr>entropy <wbr>modeling(一)

上面的这个模型就是对这5个词均匀分配,谁也不偏重,因为没有信息告诉我们要偏重谁啊,所以这个做法最保险,因为没有违背我们已知的信息(会被翻译成这5个词),也没有施加别的我们未知的假设。

         接下来,看能不能继续从训练集里挖掘信息呢?假如说我们现在有了一个新信息:在训练集中有30%的时候,in会被翻译成dans或者en。把这个信息写成概率形式施加到模型上,就得到:

Maximum <wbr>entropy <wbr>modeling(一)

           我们的模型越来越具体了,但是还是有很多分布都可以满足上面的两个式子。假如说现在没有其他信息了,只知道我们的模型必须满足上面两个约束,那如何选取各个概率值呢?答案跟第一次选择分布的时候一样,最保险的做法就是让这5个单词在满足条件的情况下均匀分配,也就得到:

Maximum <wbr>entropy <wbr>modeling(一)

           上面的是比较简单的情况。假如说我们现在又观察到一个fact,就是有一半的时候,in会被翻译成dans和à。把这个信息再加入到上述的模型中,就得到:

Maximum <wbr>entropy <wbr>modeling(一)

           理论上,有了上面这个之后,我们大可以像之前一样,选择满足条件的情况下最均匀的分配各个单词的概率就行了。但是这时候就没有那么直观了。不能一下子写出来,但是我们可以通过一定方法步骤求出来这个概率分布呀。那就遇到问题了,(1). 我们要求的是最均匀分配的那个分布,那如何衡量这个均匀性“uniform”呢?(2). 假如问题1解决了后,我们就沿着这个标准做就行了,那如何来具体找到那个most uniformmodel呢?

           大家想必也猜出来了,此时最大熵原理就应运而生了。

 

3.       最大熵建模(Maximum Entropy Modeling

有了上面比较直观的例子后,接下来以比较正式的方式介绍最大熵建模。

对于建模来说,我们的任务可以认为是要考虑一个输出为Maximum <wbr>entropy <wbr>modeling(一)的随机过程,然后构建一个可以准确表示这个过程的模型。具体到上面翻译的那个例子中,这个过程就是要产生一个in的对应翻译输出Maximum <wbr>entropy <wbr>modeling(一)Maximum <wbr>entropy <wbr>modeling(一). 而产生y的这个过程可能会利用到别的context信息(例如上边我们发现的in后面跟着什么词有可能会被翻译成什么等)假定为Maximum <wbr>entropy <wbr>modeling(一)可以看出这样一个模型其实就是在估计给定context x时,所估计的随机过程会输出y的条件概率p(y|x)Maximum <wbr>entropy <wbr>modeling(一).(其中Maximum <wbr>entropy <wbr>modeling(一)就是所有的对应元素y,x,p组成的集合)

给了一堆训练数据,要构建一个模型,直接面临的两个问题就是0. 如何找到在训练集中有用的信息?1.怎么来表达训练集中的这些信息?2.怎么样让我们的模型来体现这个找到的信息,下面3.13.2就是解决1.2.这两个问题的。也就是假设我们已经知道了哪些是有用的信息。关于如何找到这些信息,可以参考接下来的第4部分。(这里是按照文章结构顺序来写的,还请大家多多包涵哈)。

3.1   训练数据

我们把训练数据用(x_1,y_1), (x_2,y_2),…, (x_n,y_n)来表示。具体到翻译的例子中,x就是在in周边的单词,y就是过程的输出量。得到这些训练数据后,要通过一种数学的形式把它们表现出来,对于生成式模型而言,莫过于就是用概率来表示。于是我们用训练数据的经验分布来表示他们,也就是频率构建的分布:

Maximum <wbr>entropy <wbr>modeling(一)

3.2   统计量,特征和约束

有了上面的对训练数据的表示,我们的模型的任务自然就是要能够产生generate这些训练数据Maximum <wbr>entropy <wbr>modeling(一),并把已知的信息利用上去,比如in被翻译成dansen的频率是30%,被翻译成dansau cours de的频率是50%等。这些信息是独立于in的应用环境的,是一个总体上的统计,我们还可以发现一些与应用环境上下文有关的信息,比如in后面跟着April时,它有90%的时候会被翻译成en

          为了表达这个上下文信息,我们可以引入指示函数f(x,y)(这里也称为特征函数)来表达这个事件/信息:

Maximum <wbr>entropy <wbr>modeling(一)

F相对于经验分布的期望值就可以认为是在大量样本中平均来说应当观察到f的次数,可以用这个期望来表示在训练样本中的f的信息,即:

Maximum <wbr>entropy <wbr>modeling(一)(1)

类似于上面的表示方法,我们可以把其他的观察量也表示为指示函数的期望的形式。

当我们构建模型是,毫无疑问,最好是f通过模型所体现的信息和f在训练样本中体现的信息相同,于是可以得到我们要求f相对于模型的期望应当等于f相对于经验分布的期望。而f相对于模型的期望可以表达为:

Maximum <wbr>entropy <wbr>modeling(一)(2)

Maximum <wbr>entropy <wbr>modeling(一)(3)

联立(1)(2)(3)就可以得到对模型的一个约束,即为:

Maximum <wbr>entropy <wbr>modeling(一)

3.3   最大熵原理The Maximum Entropy Principle

假如我们按照3.1,3.2的方式得到了n个特征函数f_i,对应的也会有n个对模型p的约束条件:

Maximum <wbr>entropy <wbr>modeling(一)

C的作用就如下图所示:

Maximum <wbr>entropy <wbr>modeling(一)

Maximum <wbr>entropy <wbr>modeling(一)

上述部分相当于给出了所设计的模型应当满足哪些条件,从训练数据中提取出了一些信息来对模型进行约束,接下来要解决的是在满足约束条件的所有模型中又应当如何具体选择呢?最大熵原理是要选择哪些最均匀分配最uniform的分布。但是什么是uniformdistribution呢?(这里不是特指均匀分布,请注意哈)。对于一个分布的均匀性的一个数学衡量标准是熵,而对于一个条件分布(我们的模型是要求p(y|x)哦),衡量它的均匀性的标注就是条件熵,表示为:

Maximum <wbr>entropy <wbr>modeling(一)

其推导过程为:

Maximum <wbr>entropy <wbr>modeling(一)

由上面条件熵的表达式(5)可以很容易的推出:0Hlog|Y|,当条件分布p(y|x)是均匀分布时,H取最大值,可以代入验证。

有了条件熵的定义,就可以得到最大熵原理:

         最大熵原理就是要从满足约束条件集合C的分布中选择熵最大的模型Maximum <wbr>entropy <wbr>modeling(一)Maximum <wbr>entropy <wbr>modeling(一)

最大熵的一个优点是通常情况下,上面的最优化问题都是有唯一解的。但是不排除个别个别的例外。

3.4   参数形式

得到了最优化表达式,接下来就是求解了,可以用拉格朗日乘子法求解。

0.       原问题:

Maximum <wbr>entropy <wbr>modeling(一)

1.     拉格朗日乘子:

Maximum <wbr>entropy <wbr>modeling(一)

2.        固定λ,计算上述无约束的Λ的最大值,假定p=Maximum <wbr>entropy <wbr>modeling(一)时,Λ达到最大值,用Maximum <wbr>entropy <wbr>modeling(一)表示这个最大值,即有

Maximum <wbr>entropy <wbr>modeling(一)

具体表达式可以求出为:

Maximum <wbr>entropy <wbr>modeling(一)

其中Maximum <wbr>entropy <wbr>modeling(一)

3.     3可以得到无约束的对偶优化问题,即Maximum <wbr>entropy <wbr>modeling(一)

4.        最重要的来了,得到这个对偶优化有什么用呢?KT条件告诉你。在拉格朗日乘子理论中,KT定理表明了在满足一定的假设条件下,上述原问题与对偶问题的解有如下关系:假如Maximum <wbr>entropy <wbr>modeling(一)是对偶问题的解,那么Maximum <wbr>entropy <wbr>modeling(一)就是原问题的解。这样就可以先求解4,即最大化Maximum <wbr>entropy <wbr>modeling(一)求出最优解Maximum <wbr>entropy <wbr>modeling(一),然后结合3中的表达式求解原问题1的最优解Maximum <wbr>entropy <wbr>modeling(一)

3.5   参数计算

上一个部分3.4讲解了求出问题4的最优解lambda,就可以求出原问题的最优解p。那么如何求lambda呢?这一部分就解决这个问题。

因为问题4就是一个无约束优化问题,可以用最表上升,梯度上升等方法求解。这里就不细讲了,嘻嘻。

4.       特征选择Feature Selection

至此其实最大熵已经介绍完了,就是上面的第三部分。只是了解一下最大熵的,下面的不看也行。但是为了应用的完整性,我们还是忠实于原文加入接下来的内容。但也正因为不是主要部分,所以接下来也不会特别详细介绍。

上面第三部分解决了加入我们知道了要利用的训练样本中的信息,那么如何去表达和如何让模型去体现这个信息,以及怎样求解这个模型。接下来,这一部分解决的问题是最开始的一步,即如何找到那些训练集中所谓‘有用’的信息呢?(这里只是这篇文章针对于上面的那个例子的做法,如果我们自己应用是可以用别的方法来得到我们需要的features的。)

           本文的办法呢,就是首先指定一个大的集合F,这个集合包含了所有可能的特征,这些特征我们称为初始特征,他们不一定要求跟我们的任务相关,或者有用,大可以是有很多无关信息,关键是要让这个集合足够大,最后只会有一小部分会被用到我们的模型中。得到这个大集合后,如何选择呢?我们的策略是通过建立一定的标准,一个一个的逐渐把满足标准的特征增加我们最终的特征集合S(开始肯定是空集了),与每一步的S对应的合适的模型记为C(S)S是空集的时候,相当于没有约束,这个时候可以认为所有的概率分布都有可能,也就是所有的模型的可以选。随着按照一定标准加入的特征数目的增多,模型的可选范围也逐渐缩小,直到最后已经选择了所有达到标准的特征。在这其中,很关键的问题是,这个选择新特征f是否加入S的标准是什么呢?就是我们在前面提到的约束条件Maximum <wbr>entropy <wbr>modeling(一),也就是要所选择的特征在目前的模型上的期望要与数据期望相等,在与S对应的模型C(S)中肯定只有一部分满足条件,我们记为C(Sf),用图来表达如下:

Maximum <wbr>entropy <wbr>modeling(一)

Maximum <wbr>entropy <wbr>modeling(一)


(这一部分讲的比较大略,因为与本文的主题最大熵并没有直接的关系,只是对应于本文的一个具体例子的一部分。详情可看参考文献原文哈)

5.       后记:

         总结起来,其实最大熵原理的准则非常的直观,就是对所有已知的进行建模,而对未知的不做任何假设和额外处理。换句话说,就是已知了一系列facts后,我们要选择的模型是符合所有这些已知的facts,而其他未知方面就让它尽可能均匀(uniform)。最后用最大熵的先驱之一E.T.Jaynes的话来结尾:

         … the fact that a certain probability distribution maximize entropy subject to certain constraints representing our incomplete information, is the fundamental property which justifies use of that distribution for inference; it agrees with everything that is known, but carefully avoids assuming anything that is not known. It is a transcription into mathematics of an ancient principle of wisdom…

 

参考文献:《a maximum entropy approach to natural language processing》。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值