最大熵模型原理小结

最大熵模型(maximum entropy model, MaxEnt)也是很典型的分类算法了,它和逻辑回归相似,都是属于对数线性分类模型。在损失函数优化的过程当中,使用了和支持向量机相似的凸优化技术。而对熵的使用,让咱们想起了决策树算法中的ID3和C4.5算法。理解了最大熵模型,对逻辑回归,支持向量机以及决策树算法都会加深理解。本文就对最大熵模型的原理作一个小结。html

1、熵和条件熵的回顾

    在决策树算法原理(上)一文中,咱们已经讲到了熵和条件熵的概念,这里咱们对它们作一个简单的回顾。算法

    熵度量了事物的不肯定性,越不肯定的事物,它的熵就越大。具体的,随机变量X的熵的表达式以下:微信

\[ H(X) = -\sum\limits_{i=1}^{n}p_i logp_i \]函数

    其中n表明X的n种不一样的离散取值。而\(p_i\)表明了X取值为i的几率,log为以2或者e为底的对数。post

    熟悉了一个变量X的熵,很容易推广到多个个变量的联合熵,这里给出两个变量X和Y的联合熵表达式:学习

\[ H(X,Y) = -\sum\limits_{i=1}^{n}p(x_i,y_i)logp(x_i,y_i) \]优化

    有了联合熵,又能够获得条件熵的表达式H(Y|X),条件熵相似于条件几率,它度量了咱们的Y在知道X之后剩下的不肯定性。表达式以下:ui

\[ H(Y|X) = -\sum\limits_{i=1}^{n}p(x_i,y_i)logp(y_i|x_i) = \sum\limits_{j=1}^{n}p(x_j)H(Y|x_j)  \]url

    用下面这个图很容易明白他们的关系。左边的椭圆表明H(X),右边的椭圆表明H(Y),中间重合的部分就是咱们的互信息或者信息增益I(X,Y), 左边的椭圆去掉重合部分就是H(X|Y),右边的椭圆去掉重合部分就是H(Y|X)。两个椭圆的并就是H(X,Y)。spa

2、最大熵模型的定义

    最大熵模型假设分类模型是一个条件几率分布\(P(Y|X)\),X为特征,Y为输出。

    给定一个训练集\({(x^{(1)},y^{(1)}), (x^{(2)},y^{(2)}), ... ,(x^{(m)},y^{(m)})}\),其中x为n维特征向量,y为类别输出。咱们的目标就是用最大熵模型选择一个最好的分类类型。

    在给定训练集的状况下,咱们能够获得整体联合分布\(P(X,Y)\)的经验分布\(\overline{P}(X,Y)\),和边缘分布\(P(X)\)的经验分布\(\overline{P}(X)\)\(\overline{P}(X,Y)\)即为训练集中X,Y同时出现的次数除以样本总数m,\(\overline{P}(X)\)即为训练集中X出现的次数除以样本总数m。

    用特征函数\(f(x,y)\)描述输入x和输出y之间的关系。定义为:

\[ f(x,y)= \begin{cases} 1& {x与y知足某个关系}\\ 0& {不然} \end{cases} \]

    能够认为只要出如今训练集中出现的\((x^{(i)},y^{(i)})\),其\(f(x^{(i)},y^{(i)}) = 1\). 同一个训练样本能够有多个约束特征函数。

    特征函数\(f(x,y)\)关于经验分布\(\overline{P}(X,Y)\)的指望值,用\(E_{\overline{P}}(f)\)表示为: 

\[ E_{\overline{P}}(f) = \sum\limits_{x,y}\overline{P}(x,y)f(x,y) \]
   

    特征函数\(f(x,y)\)关于条件分布\(P(Y|X)\)和经验分布\(\overline{P}(X)\)的指望值,用\(E_{P}(f)\)表示为:

\[ E_{P}(f) = \sum\limits_{x,y}\overline{P}(x)P(y|x)f(x,y) \]

    若是模型能够从训练集中学习,咱们就能够假设这两个指望相等。即:

\[ E_{\overline{P}}(f) = E_{P}(f) \]
 

    上式就是最大熵模型学习的约束条件,假如咱们有M个特征函数\(f_i(x,y) (i=1,2...,M)\)就有M个约束条件。能够理解为咱们若是训练集里有m个样本,就有和这m个样本对应的M个约束条件。

    这样咱们就获得了最大熵模型的定义以下:

    假设知足全部约束条件的模型集合为:

\[ E_{\overline{P}}(f_i) = E_{P}(f_i) (i=1,2,...M) \]
 

    定义在条件几率分布\(P(Y|X)\)上的条件熵为:

\[ H(P) = -\sum\limits_{x,y}\overline{P}(x)P(y|x)logP(y|x) \]

    咱们的目标是获得使\(H(P)\)最大的时候对应的\(P(y|x)\),这里能够对\(H(P)\)加了个负号求极小值,这样作的目的是为了使\(-H(P)\)为凸函数,方便使用凸优化的方法来求极值。

 

3、3 . 最大熵模型损失函数的优化

    在上一节咱们已经获得了最大熵模型的函数\(H(P)\)。它的损失函数\(-H(P)\)定义为:

\[ \underbrace{ min }_{P} -H(P) = \sum\limits_{x,y}\overline{P}(x)P(y|x)logP(y|x) \]

    约束条件为:

\[ E_{\overline{P}}(f_i) - E_{P}(f_i) = 0 (i=1,2,...M) \]

\[ \sum\limits_yP(y|x) = 1 \]

    因为它是一个凸函数,同时对应的约束条件为仿射函数,根据凸优化理论,这个优化问题能够用拉格朗日函数将其转化为无约束优化函数,此时损失函数对应的拉格朗日函数\(L(P,w)\)定义为:  

\[ L(P,w) \equiv -H(P) + w_0(1 - \sum\limits_yP(y|x)) + \sum\limits_{i=1}^{M}w_i(E_{\overline{P}}(f_i) - E_{P}(f_i)) \]
 

    其中\(w_i(i=1,2,...m)\)为拉格朗日乘子。若是你们也学习过支持向量机,就会发现这里用到的凸优化理论是同样的,接着用到了拉格朗日对偶也同样。、

    咱们的拉格朗日函数,即为凸优化的原始问题:\(\underbrace{ min }_{P} \underbrace{ max }_{w}L(P, w)\)

    其对应的拉格朗日对偶问题为:\(\underbrace{ max}_{w} \underbrace{ min }_{P}L(P, w)\)

    因为原始问题知足凸优化理论中的KKT条件,所以原始问题的解和对偶问题的解是一致的。这样咱们的损失函数的优化变成了拉格朗日对偶问题的优化。

    求解对偶问题的第一步就是求\(\underbrace{ min }_{P}L(P, w)\), 这能够经过求导获得。这样获得的\(\underbrace{ min }_{P}L(P, w)\)是关于w的函数。记为:

\[ \psi(w) = \underbrace{ min }_{P}L(P, w) = L(P_w, w) \]

    \(\psi(w)\)即为对偶函数,将其解记为:

\[ P_w = arg \underbrace{ min }_{P}L(P, w) = P_w(y|x) \]

    具体的是求\(L(P, w)\)关于\(P(y|x)\)的偏导数:

\[ \frac{\partial L(P, w)}{\partial P(y|x)} = \sum\limits_{x,y}\overline{P}(x)(logP(y|x) +1) -  \sum\limits_yw_0 - \sum\limits_{x,y}(\overline{P}(x)\sum\limits_{i=1}^{M}w_if_i(x,y)) \]
 

\[ = \sum\limits_{x,y}\overline{P}(x)(logP(y|x) +1- w_0 -\sum\limits_{i=1}^{M}w_if_i(x,y)) \]

    令偏导数为0,能够解出\(P(y|x)\)关于\(w\)的表达式以下:

\[ P(y|x) = exp(\sum\limits_{i=1}^{M}w_if_i(x,y) +w_0 -1) = \frac{exp(\sum\limits_{i=1}^{M}w_if_i(x,y))}{exp(1-w_0)} \]
    

    因为$\sum\limits_yP(y|x) = 1 \(,能够获得\)P_w(y|x)$的表达式以下:

\[ P_w(y|x) = \frac{1}{Z_w(x)}exp(\sum\limits_{i=1}^{M}w_if_i(x,y)) \]
 

    其中,\(Z_w(x)\)为规范化因子,定义为:

\[ Z_w(x) = \sum\limits_yexp(\sum\limits_{i=1}^{M}w_if_i(x,y)) \]
 

    这样咱们就得出了\(P(y|x)\)\(w\)的关系,从而能够把对偶函数\(\psi(w)\)里面的全部的\(P(y|x)\)替换成用\(w\)表示,这样对偶函数\(\psi(w)\)就是所有用\(w\)表示了。接着咱们对\(\psi(w)\)求极大化,就能够获得极大化时对应的w向量的取值,带入\(P(y|x)\)\(w\)的关系式, 从而也能够获得\(P(y|x)\)的最终结果。

    对\(\psi(w)\)求极大化,因为它是连续可导的,因此优化方法有不少种,好比梯度降低法,牛顿法,拟牛顿法均可以。对于最大熵模型还有一种专用的优化方法,叫作改进的迭代尺度法(improved iterative scaling, IIS)。

    IIS也是启发式方法,它假设当前的参数向量是\(w\),咱们但愿找到一个新的参数向量\(w+\delta\),使得对偶函数\(\psi(w)\)增大。若是能找到这样的方法,就能够重复使用这种方法,直到找到对偶函数的最大值。

    IIS使用的方法是找到\(\psi(w + \delta) - \psi(w)\)的一个下界\(B(w|\delta)\),经过对\(B(w|\delta)\)极小化来获得对应的\(\delta\)的值,进而来迭代求解\(w\)。对于\(B(w|\delta)\),它的极小化是经过对\(\delta\)求偏导数而获得的。

    因为IIS通常只用于最大熵模型,适用范围不普遍,这里就不详述算法过程了,感兴趣的朋友能够直接参考IIS的论文The improved iterative scaling algorithm: A gentle introduction

4、最大熵模型小结

    最大熵模型在分类方法里算是比较优的模型,可是因为它的约束函数的数目通常来讲会随着样本量的增大而增大,致使样本量很大的时候,对偶函数优化求解的迭代过程很是慢,scikit-learn甚至都没有最大熵模型对应的类库。可是理解它仍然颇有意义,尤为是它和不少分类方法都有千丝万缕的联系。 

    惯例,咱们总结下最大熵模型做为分类方法的优缺点:

    最大熵模型的优势有:

    a) 最大熵统计模型得到的是全部知足约束条件的模型中信息熵极大的模型,做为经典的分类模型时准确率较高。

    b) 能够灵活地设置约束条件,经过约束条件的多少能够调节模型对未知数据的适应度和对已知数据的拟合程度

    最大熵模型的缺点有:

    a) 因为约束函数数量和样本数目有关系,致使迭代过程计算量巨大,实际应用比较难。

 

 (欢迎转载,转载请注明出处。欢迎沟通交流: 微信:nickchen121)

相关文章
相关标签/搜索