1、最大熵模型
最大熵模型描述的是这么一种情况,即在有约束条件的情况下,如何得到最好的模型。我们先来考虑如果没有约束的条件下,如何获得最好的模型,举个栗子,比如一个骰子,有6个面,转一次,求每个面的概率,根据经验,每个面的概率是1/6,这其实就是我们让整个系统熵最大。
那么什么是在有约束条件下概率最大呢,比如这时告诉你其中点数为4的概率为1/3,那么现在这种情况下,每个面的概率是多少呢?\(p(点数=4) = 1/ 3\),\(p(点数=1) = p(点数=2) = p(点数=3) = p(点数=5) = p(点数=6) = (2/3) / 5\),这种就是在约束条件下熵最大。本文介绍将最大熵模型如何用于分类任务。
给定一个训练数据集
\[ {(x_{1},y_{1}), (x_{2},y_{2}),(x_{3},y_{3}) .........(x_{n},y_{n})} \]
我们的目标是得到条件概率\(p(y|x)\)即我们对于给定未知的一个变量\(X\),我们会得到在每个标签上最大的概率值,我们取最大的概率值所对应的标签作为最终的标签。计算条件概率\(p(y|x)\)的方法有很多,其中,朴素贝叶斯是一种方法,当然,我们也可以利用最大熵模型来得到这个概率值。首先,根据熵最大的模型是最好的模型,我们这里定义条件熵。即
\[ H(p(y|x)) = - \sum\limits_{x,y} \tilde{p}(x) p(y|x) \log p(y|x) \tag{1} \]
如果在没有约束的条件下,我们直接求式子(1)即可,但是这样算下来所有的条件概率是均等的,没有意义,所以我们想有哪些约束条件呢?首先,我们肯定希望得到的模型和能够和数据集的整体分布是一样的。我们先定义一个特征函数
\[ f(x,y) = \left \{ \begin{array}{**lr**} 1 , x,y满足某些条件 & \\ 0 否则 & \end{array} \right. \]
这里满足某些条件听起来不知道是在干什么,当我看来GIS用于文本分类的代码后,才发现,其实如果一条数据中,如果\((x_{i},y_{j})\)出现,那么f(x,y)就为1,不出现,则为0。我们的约束条件是希望得到的模型可以很好的表现数据集,那用什么表示呢,我们用特征函数关于经验分布\(\tilde{p}(X|Y)\)的期望值和特征函数关于模型\(P(Y|X)\)的期望来表示,先给出特征函数关于经验分布\(\tilde{p}(X|Y)\)的期望值
\[ E_{\tilde{p}}(f) = \sum\limits_{x,y} \tilde{P}(y|x) f(x,y) \tag{2} \]
这个经验分布的数学期望是一个定值,我们可以根据数据集来求出,对于文本分类来说,$E_{\tilde{p}} (f_{i}) = $ x,y出现的个数/文档总数。接着我们给出特征函数关于模型的的期望值
\[ E_{p}(f) = \sum\limits_{x,y} P(y|x) f(x,y) \\ = \sum\limits_{x,y} p(x,y)f(x,y) \\ = \sum\limits_{x,y} p(x)p(y|x) f(x,y) \\ = \sum\limits_{x,y} \tilde{p}(x)p(y|x) f(x,y) \tag{3} \]
由于\(p(x),p(x,y)\)不好求,所以用\(p(x,y) = \tilde{p}(x) p(y|x)\)来代替。那么,我们的期望是将两者划等号,即
\[ E_{\tilde{p}}(f) = E_{p}(f) \tag{4} \]
那么根据上述公式,我们可以得到最大熵模型的公式和其约束条件
\[ \max \limits_{P \in C } H(p(y|x)) = - \sum\limits_{x,y} \tilde{p}(x) p(y|x) \log p(y|x) \\ s.t E_{\tilde{p}}(f) = E_{p}(f) i=1,2,3....n \\ \sum\limits_{y} p(y|x) = 1 \]
至此我们得到最大熵模型的公式,接下来,我们就求解p(y|x)
2、最大熵模型推导
我们将公式进行转换,将最大值改为求最小值,这样我们就能引入拉格朗日乘子
\[ \min \limits_{P \in C } - H(p(y|x)) = \sum\limits_{x,y} \tilde{p}(x) p(y|x) \log p(y|x) \\ s.t E_{\tilde{p}}(f) = E_{p}(f) i=1,2,3....n \\ \sum\limits_{y} p(y|x) = 1 \]
引入拉格朗日乘子得到
\[ L(p,w) = \sum\limits_{x,y} \tilde{p}(x) p(y|x) \log p(y|x) + w_{0}(\sum\limits_{y} p(y|x) - 1) + \sum\limits_{i=1}{n} w_{i}(E_{\tilde{p}}(f) - E_{p}(f)) \tag{5} \]
最优化的原始问题是
\[ \min \limits_{P \in C } \max \limits_{w} L(p,w) \tag{6} \]
对偶问题是
\[ \max \limits_{w} \min \limits_{P \in C } L(p,w) \tag{7} \]
首先对p(y|x)进行求导
\[ \frac {\partial L(p)}{p(y|x)} = \sum\limits_{x,y} \tilde{p}(x) (\log p(y|x) + 1) + \sum\limits_{y} w_{0} - \sum\limits_{i=1}{n} w_{i} \sum \limits_{x,y} \tilde{p}(x) f_{i}(x,y) \]
由于\(\sum\limits_{x} \tilde{p}(x) = 1\),所以原式等于
\[ \frac {\partial L(p)}{p(y|x)} = \sum\limits_{x,y} \tilde{p}(x) (\log p(y|x) + 1) + \sum\limits_{x} \tilde{p}(x) \sum\limits_{y} w_{0} - \sum \limits_{x,y} \tilde{p}(x) \sum\limits_{i=1}^{n} w_{i} f_{i}(x,y) \\ = \sum\limits_{x,y} \tilde{p}(x) ( \log p(y|x) + 1 + w_{0} - \sum\limits_{i=1}^{n} w_{i} f_{i}(x,y) ) \tag{8} \]
由于\(\sum\limits_{x,y} \tilde{p}(x) > 0\)那么我们令后面部分为0
\[ \log p(y|x) + 1 + w_{0} - \sum\limits_{i=1}^{n} w_{i} f_{i}(x,y) = 0 \\ \log p(y|x) = \sum\limits_{i=1}^{n} w_{i} f_{i}(x,y) - w_{0} - 1 \\ p(y|x) = \frac {\exp \sum\limits_{i=1}^{n} w_{i} f_{i}(x,y)} {\exp (w_{0} + 1)} \\ 由于 \sum\limits_{y} p(y|x) = 1 \\ 所以 \exp (w_{0} + 1) = \sum\limits_{y} \exp \sum\limits_{i=1}^{n} w_{i} f_{i}(x,y) \\ 带入得 \\ p(y|x) = \frac{1} {Z_{w}(x)} * \exp \sum\limits_{i=1}^{n} w_{i} f_{i}(x,y) \\ Z_{w}(x) = \sum\limits_{y} \exp \sum\limits_{i=1}^{n} w_{i} f_{i}(x,y) \]