1 前言
最大熵模型(maximum entropy model, MaxEnt)是典型的分类算法,和逻辑回归都是属于对数线性分类模型。在损失函数优化的过程中,使用了和支持向量机类似的凸优化技术。
2 最大熵原理
最大熵原理是概率模型学习的一个准则。最大熵原理认为:学习概率模型时,在所有可能的概率模型(分布)中,熵最大的模型是最好的模型。通常用约束条件来确定概率模型的集合,所以,最大熵原理也可以表述为在满足约束条件的模型集合中选取熵最大的模型。
假设离散随机变量 $X$ 的概率分布是 $P(X)$,则其熵是:
$H(P)=-\sum_ \limits {x}P(x)log \ P(x)$
熵满足以下不等式:
$0 \le H(P) \le log \ |X| $
式中,$|X|$ 是 $X$ 的取值个数,当且仅当 $X$ 的分布是均匀分布时右边的等号成立。这就是说,当 $X$ 服从均匀分布时,熵最大。
$H(P)=-\sum_ \limits {x} \frac{1}{|X|}\ log \frac{1}{|X|}=-log \frac{1}{|X|} =log|X|$
直观地,最大熵原理认为要选择的概率模型首先必须满足已有的事实,即约束条件。在没有更多信息的情况下,那些不确定的部分都是“等可能的”。最大熵原理通过熵的最大化来表示等可能性。“等可能”不容易操作,而熵则是一个可优化的数值指标。
2.1 例子
例6.1 假设随机变量 $X$ 有 5 个取值 {A,B,C,D,E},要估计取各个值的概率 P(A),P(B),P(C),P(D),P(E)。
解这些概率值满足以下约束条件:
$P(A)+P(B)+P(C)+P(D)+P(E) = {\large 1}$
满足这个约束条件的概率分布有无穷多个。如果没有任何其他信息,仍要对概率分布进行估计,一个办法就是认为这个分布中取各个值的概率是相等的:
$P(A)=P(B)=P(C)=P(D)=P(E)= {\large \frac{1}{5} }$
等概率表示了对事实的无知。因为没有更多的信息,这种判断是合理的。
有时,能从一些先验知识中得到一些对概率值的约束条件,例如:
$P(A)+P(B)= {\large \frac{3}{10}} $
$P(A)+P(B)+P(C)+P(D)+P(E)= {\large 1}$
满足这两个约束条件的概率分布仍然有无穷多个。在缺少其他信息的情况下,可以认为 $A$ 与 $B$ 是等概率的,$C,D$与 $E$ 是等概率的,于是
$P(A)= P(B)= {\large \frac{3}{20}} $
$P(C)=P(D)=P(E)= {\large \frac{7}{30} }$
当有更多约束条件的时候可以继续按照满足约束条件下求等概率的方法估计概率分布。以上概率模型学习的方法正是遵循了最大熵原理。
2.2 几何解释
下图提供了用最大嫡原理进行概率模型选择的几何解释。概率模型集合 $P$ 可由欧氏空间中的单纯形(simplex)$R$表示,如左图的三角形(2-单纯形)。一个点代表一个模型,整个单纯形代表模型集合。右图上的一条直线对应于一个约束条件,直线的交集对应于满足所有约束条件的模型集合。一般地,这样的模型仍有无穷多个。学习的目的是在可能的模型集合中选择最优模型,而最大嫡原理则给出最优模型选择的一个准则。
3 最大熵模型定义
3.1 模型定义须知
最大熵原理是统计学习的一般原理,将它应用到分类得到最大熵模型。
假设分类模型是一个条件概率分布 $P(Y|X)$,$X \in \mathcal{X} \subseteq R^{n}$ 表示输入,$Y \in \mathcal{Y} $ 表示输出。$\mathcal{Y} $ 和 $\mathcal{X}$ 分别表示输入和输出的集合,这个模型表示的是对于给定的输入 $X$,以条件概率 $P(Y|X)$ 输出 $Y$。
给定一个训练数据集:
$T={\large {(x_1,y_1),(x_2,y_2),...,(x_N,y_N)}} $
学习的目标是用最大熵原理选择最好的分类模型。
首先考虑模型应该满足的条件。给定训练数据集,可以确定联合分布 $P(X,Y)$ 的经验分布和边缘分布 $P(X)$ 的经验分布,分别以 $\widetilde{P}(X,Y)$ 和 $\widetilde{P}(X)$ 表示。这里,
$\widetilde{P}(X=x,Y=y)={\large \frac{v(X=x,Y=y)}{N}} $
$\widetilde{P}(X=x)={\large \frac{v(X=x)}{N}} $
- PS:采用经验分布的好处:通过获得样本的观测值,并不知道总体的理论分布函数。所以,用经验分布函数去描述总体的分布。简言之:从样本集中模拟数据分布。
其中,$v(X = x,Y =y)$ 表示训练数据中样本 $(x, y)$ 出现的频数,$v(X = x)$ 表示训练数据中输入 $x $ 出现的频数,$N$ 表示训练样本容量。
用特征函数(feature function) $f(x, y)$ 描述输入 $x$ 和输出 $y$ 之间的某一个事实。其定义是
$f(x,y)=\left\{\begin{matrix} 1 \ , &\ x\ 与\ y\ 满足某一事实 \\ 0 \ , & 否则 \end{matrix}\right.$
它是一个二值函数,当 $x$ 和 $y$ 满足这个事实时取值为 $1$,否则取值为 $0$。
特征函数 $f(x,y)$ 关于经验分布 $\widetilde{P}(X,Y)$ 的期望值,用 $E_{\widetilde{P}}(f)$ 表示:
$E_{\widetilde{P} }(f)=\sum \limits _{x,y}\widetilde{P}(x,y)f(x,y)$
- PS:期望=x*概率
特征函数 $f(x,y)$ 关于模型 $P(Y|X)$ 与经验分布 $\widetilde{P}(X)$ 的期望值,用 $E_{{P}}(f)$ 表示:
$E_{P}(f)=\sum \limits _{x,y}\widetilde{P}(x)P(y|x)f(x,y)$
- PS:1、$P(X,Y)=P(X)P(Y|X)$,联合分布=条件分布 * 边缘分布 2、这里采用经验分布$\widetilde{P}(x)$代替边缘分布$P(x)$)
如果模型能够获取训练数据中的信息,那么就可以假设这两个期望值相等,即
$E_{P}(f)=E_{\widetilde{P} }(f)$
确定对于确定 $x$ 和 $y$ 的条件熵为:
$H(y|x)=-\sum \limits _{y}P(y|x)log\ P(y|x)$
那么对于 $H(Y|X)$ 而言,就是确定条件熵取 $x$ 的期望:
$H(Y|X)=H(P)=-\sum \limits _{x,y}P(X)P(y|x)log\ P(y|x)$
3.2 最大熵模型定义
定义:(最大熵模型) 假设满足所有约束条件的模型集合为
$\mathcal{C} \equiv { P\in \mathrm{P}|E_{P}(f_i)=E_{\widetilde{P} }(f_i) },i=1,2,...,n$
定义在条件概率分布$P(Y|X)$上的条件嫡为
$H(P)=-\sum_ \limits {x,y}\widetilde{P} (x)P(y|x)log\ P(y|x)$
则模型集合 $\mathcal{C}$ 中条件熵 $H(P)$ 最大的模型称为最大熵模型。式中的对数为自然对数。
4 最大熵模型的学习
4.1 模型的学习
最大熵模型的学习过程就是求解最大熵模型的过程。最大熵模型的学习可以形式化为约束最优化问题。
对于给定的训练数据集 $T=\{(x_1,y_1),(x_2,y_2),…,(x_N,y_N)\}$ 以及特征函数 $f_i(x,y),i=1,2,…,n$ ,最大熵模型的学习等价于约束最优化问题:
$ \max \limits _{P \in \mathcal{C} } \quad H ( P ) = - \sum \limits _{x,y} \tilde{P} ( x ) P ( y | x ) \log P ( y | x ) $
$ s.t.\quad E_{ P } ( f_{i} ) = E_{ \tilde{P} } ( f_{i} ), i = 1,2, \cdots, n $
$\quad \quad \quad \sum \limits_{y} P ( y | x ) = 1 $
按照最优化问题的习惯,将求最大值问题改写为等价的求最小值问题:
$ \min \limits _{P \in \mathcal{C} } \quad -H ( P ) = \sum \limits _{x,y} \tilde{P} ( x ) P ( y | x ) \log P ( y | x ) $
$s.t.\quad E_{ P } ( f_{i} ) - E_{ \tilde{P} } ( f_{i} ) = 0, i = 1,2, \cdots, n $
$\quad \quad \quad \sum \limits_{y} P ( y | x ) = 1$
求解约束最优化问题,所得出的解就是最大熵模型学习的解。
将约束最优化的原始问题转换为无约束最优化的对偶问题。通过求解对偶问题求解原始问题。
首先,引进拉格朗日乘子 $w_0,w_1,w_2,…,w_n$ ,定义拉格朗日函数 $L(P, w)$ :
$L ( P, w) = - H ( P) + w_{0} ( 1 - \sum \limits _{y} P ( y | x)) + \sum \limits _{i=1}^{n} w_{i} ( E_{P} ( f_{i}) - E_{\tilde{P}} ( f_{i})) $
$\quad \quad \quad = \sum \limits _{x,y} \tilde{P} ( x) P ( y | x) \log P ( y | x) + w_{0} ( 1 - \sum \limits _{y} P ( y | x)) $
$\quad \quad \quad \quad \quad + \sum \limits _{i=1}^{n} w_{i} ( \sum \limits _{x, y} \tilde{P} ( x) P ( y | x) f_{i} ( x, y) - \sum \limits _{x, y} \tilde{P} ( x, y) f_{i} ( x, y)) $
此处不理解可参考:拉格朗日乘子法可以参考本博客《机器学习——最优化问题:拉格朗日乘子法、KKT条件以及对偶问题 》
$\underset{P \in \mathcal{C} }{min} \quad \underset{w}{max} \quad L(P,w)$
由于拉格朗日函数 $L(P, w)$ 是 $P$ 的凸函数,原始问题的解与对偶问题的解是等价的。这样,可以通过求解对偶问题来求解原始问题。
首先,求解对偶问题内部的极小化问题。内部的极小化问题是w的函数,将其记作
$\varPsi(w) = \underset{P \in \mathcal{C} }{min} \ L(P,w) = L(P_w,w)$
$Z_w(x)$? 称为规范化因子;$f_i(x,y)$? 是特征函数;$w_i$ 是特征的权值。由以上两个公式表示的模型 ?$P_w=P_w(y|x)$ 就是最大熵模型。这里,$w$ 是最大熵模型中的参数向量。
之后,求解对偶问题外部的极大化问题:
$\underset{w}{max}\ \varPsi(w)$
可以应用最优化算法求对偶函数的极大化,也就是说,最大熵模型的学习归结为对偶函数的极大化。
4.2 例子
以 $y_1,y_2,y_3,y_4,y_5$ 表示 $A,B,C,D,E$,于是最大熵模型学习的最优化问题是:
$\min \limits _{P \in \mathcal{C} } \quad -H ( P ) = \sum \limits _{i=1}^{5} P(y_i)\log P( y_i)$
$s.t.\quad P(y_1)+ P(y_2)=\widetilde{P} (y_1)+\widetilde{P} (y_2)=\frac{3}{10} $
$\quad \quad \quad \sum \limits_{i=1}^{5} P( y_i) = \sum \limits_{i=1}^{5} \widetilde{P} ( y_i) =1$
引进拉格朗日乘子 $w_0,w_1$ ,定义拉格朗日函数如下:
$L(P,w)=\sum \limits _{i=1}^{5} P(y_i)log\ P(y_i)+w_1(P(y_1)+P(y_2)-\frac{3}{10} )+w_0(\sum \limits _{i=1}^{5} P(y_i)-1 )$
根据拉格朗日对偶性,可以通过求解对偶最优化问题得到原始最优化问题的解,所以求解
$\underset{w}{max}\ \ \underset{P}{min} L(P,w)$
首先求解 $L(P, w)$ 关于 $P$ 的极小化问题。为此,固定 $w_0,w_1$ ,求偏导数:
$\frac{\partial L(P,w)}{\partial P(y_1)} =1+log\ P(y_1)+w_1+w_0$
$\frac{\partial L(P,w)}{\partial P(y_2)} =1+log\ P(y_2)+w_1+w_0$
$\frac{\partial L(P,w)}{\partial P(y_3)} =1+log\ P(y_3)+w_0$
$\frac{\partial L(P,w)}{\partial P(y_4)} =1+log\ P(y_4)+w_0$
$\frac{\partial L(P,w)}{\partial P(y_5)} =1+log\ P(y_5)+w_0$
令各偏导数等于0,解得
$P(y_1)=P(y_2)=e^{-w_0-w_1-1}$
$P(y_3)=P(y_4)=P(y_5)=e^{-w_0-1}$
将值代入拉格朗日函数中可得:
$\underset{P}{min} \ L(P,w)=L(P_w,w)=-2e^{-w_1-w_0-1}-3e^{-w_0-1} -\frac{3}{10} w_1-w_0$
分别求 $L(P_w,w)$ 对 $w_0,w_1$ 的偏导数并令其为0,得到
$\frac{\partial L}{\partial w_1} =-2e^{-w_0-1}e^{-w_1}(-1-\frac{3}{10} )=0$
$e^{-w_1-w_0-1}-=\frac{3}{20}$
$\frac{\partial L}{\partial w_0} =-2e^{-w_1-1}e^{-w_0}(-1)-e^{-1}e^{-w_0}(-1)-1=0$
$\frac{3}{10}+3e^{-w_0-1}-1=0 $
$e^{-w_0-1}=\frac{7}{30} $
于是得到所要求的概率分布为:
$P(y_1)=P(y_2)=\frac{3}{20} $
$P(y_3)=P(y_4)=P(y_5)=\frac{7}{30} $