最大熵模型

1. 介绍

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

2. 原理

我们知道熵定义的实际上是一个随机变量的不确定性,熵最大的时候,说明随机变量最不确定。也就是随机变量最随机,对其行为做准确预测最困难。最大熵原理的实质就是,在已知部分知识的前提下,关于未知分布最合理的推断就是符合已知知识最不确定或最随机的推断。这是我们可以作出的唯一不偏不倚的选择,任何其它的选择都意味着我们增加了其它的约束和假设,这些约束和假设根据我们掌握的信息无法作出。(在已知若干约束的情况下,我们建模时应该让模型满足这些约束,而对其它则不作任何假设。)

3. 模型

将最大熵原理应用于分类问题,得到的就是最大熵模型。对于这样的一个问题:给定一个训练数据集:T = {(x_1,y_1), (x_2,y_2),……,(x_n,y_n)}
其中x_i\epsilon X 表示输入,y_i \epsilon Y 表示输出, X 和 Y 表示输入和输出空间, N 为样本的个数。
我们的目标是:利用最大熵原理选择一个最好的分类模型,即对于任意给定的输出入 x\epsilon X , 可以以概率 p(y|x) 输出 y \epsilon Y
按照最大熵原理,我们应该优先保证模型满足已知的所有约束。这些约束该如何定义呢?我们的思路是:从训练数据 T 中抽取若干特征,然后要求这些特征在 T 上关于经验分布 \widetilde{p} (x,y)的数学期望与它们在模型中关于p(x,y)的数学期望相等。这样,一个特征就对应一个约束。

    1. 特征函数
      f(x,y)\left\{\begin{matrix} 1, 若 x,y 满足某个事实 \\ 0 ,否则 \end{matrix}\right.
      可以认为只要出现在训练集中出现的(_i,_i),其(_i,_i)=1. 同一个训练样本可以有多个约束特征函数。
    1. 经验分布
      我们考察两个经验分布 \widetilde{p}(x,y)\widetilde{p}(x), 其定位分别为:\widetilde{p}(x,y) = \frac{count(x,y)}{N}, \widetilde{p}(x) = \frac{count(x)}{N} ,
      其中count(x,y),count(x) 分别表示 (x,y)x 在训练数据 T 中出现的次数。

有了上面定义的特征函数和经验分布,就可以进一步定义我们所需的约束条件了。

    1. 约束条件
      对于任意一个特征函数 f,记 E_\widetilde{p}(f) 表示 f 在训练数据 T 上关于 \widetilde{p}(x,y) 的数学期望, E_p(f) 表示 f 在模型上关于 p(x,y) 的数学期望。按照期望的定义,我们有
      E_\widetilde{p}(f) = \sum_{x,y} \widetilde{p}(x,y)f(x,y)
      E_p(f) = \sum_{x,y} p(x,y)f(x,y)
      需要注意的是,上式中 p(x,y) 是未知的,而建模的目标是生成 p(y|x)。因此我们希望将 p(x,y) 表示成 p(y|x)的函数,利用 Beyes 定理,有 ¥p(x,y)=p(x)p(y|x)p(x) 仍然是未知的,此时只好利用 \widetilde{p}(x) 来对 p(x) 进行近似。这样,我们可以将E_p(f) 重新定义为:
      E_p(f) = \sum_{x,y}\widetilde{p}(x)p(y|x)f(x,y)
      对于概率分布p(y|x),我们希望特征 f 的期望值应该和从训练数据中得到的特征期望值是一致的,因此,约束为:E_\widetilde{p}(f) = E_p(f) ,即:
      \sum_{x,y}\widetilde{p}(x)p(y|x)f(x,y) = \sum_{x,y} \widetilde{p}(x,y)f(x,y) )
      假设从训练数据中抽取了 n 个特征,相应的便有 n 个特征函数 f_i(i=1,2,……,n) 以及 n 个约束条件
      Ci : E_p(f_i) = E_\widetilde{p}(f_i); i = 1,2,……,n
    1. 最大熵模型
      前面已经讨论了特征函数和约束条件,要利用最大熵原理,我们还差一个熵的定义。由于我们的目标是获取一个条件分布,因此,这里我们也采用相应的条件熵:H(p(y|x)) = \sum_{x,y}\widetilde{p}(x)p(y|x)logp(y|x)
      至此,我们就可以给出最大熵模型的完整描述:对于给定的训练数据 T, 特征函数 f_i(x,y), i = 1,2,……,n 最大熵模型就是求解:
      max_{p\epsilon c} H(p) = (- \sum_{x,y}\widetilde{p}(x)p(y|x)logp(y|x)), s.t. \sum_{y} p(y|x) = 1
      这样的带约束最优化问题,其中的条件\sum_{y} p(y|x) = 1 是为了保证p(y|x)是一个条件概率分布,另外,上述最大熵模型是适定的(well-defined),即存在且唯一解。
    1. 模型求解
      TODO

优缺点

  • 优点: 建模时,只需要集中精力选择特征,不需要花费精力考虑如何使用这些特征。可以很灵活的选择特征,更换特征。每个特征 f_i对概率分布的贡献由参数\lambda_i决定,无需专门使用常规平滑算法单独考虑。
  • 缺点:由于约束函数数量和样本数目有关系,导致迭代过程计算量巨大,实际应用比较难。

你可能感兴趣的:(最大熵模型)