从零开始-Machine Learning学习笔记(35)-最大熵模型

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/kabuto_hui/article/details/88224529

0. 前言

  假设离散随机变量X的概率分布是P(x),其熵为:
H ( P ) = x P ( x ) log P ( x ) H(P) = -\sum_{x} P(x)\log P(x)
熵满足下列的不等式:
0 H ( P ) log X 0 \leq H(P) \leq \log|X|
其中,|X|是X的取值个数,当且仅当X的分布是均匀分布的时候,右边的等号成立。而最大熵原理认为要选择的概率模型必须首先满足已有的事实,即满足约束条件。在没有更多的信息下,那些不确定的部分都是等可能的。而这种等可能,我们可以通过使其熵值最大化来实现。

1. 最大熵模型的定义

  给定一个数据集合 T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x n , y n ) } T=\{(x_1, y_1),(x_2, y_2),...,(x_n, y_n)\} ,其联合概率分布P(X,Y)和边缘分布P(X)的经验分布可以写为:
P ^ ( X = x , Y = y ) = c o u n t ( X = x , Y = y ) N P ^ ( X = x ) = c o u n t ( X = x ) N \hat P(X=x,Y=y) = \frac{count(X=x, Y=y)}{N} \\ \hat P(X=x) = \frac{count(X=x)}{N}
其中N表示样本的数量,count(X=x, Y=y)表示样本(x,y)出现的个数,count(X=x)表示输入x出现的样本个数。
  用特征函数表示输入x与输出y之间的某个事实,其定义为:
f ( x , y ) = { 1   x y 0   f(x, y) = \begin{cases} 1,\ x与y满足某一事实;\\ 0,\ 否则;\\ \end{cases}
那么特征函数f(x,y)关于经验分布 P ^ ( X , Y ) \hat P(X,Y) 的期望可以表示为:
E p ^ ( f ) = x , y P ^ ( x , y ) f ( x , y ) E_{\hat p}(f) = \sum_{x,y}\hat P(x,y)f(x,y)
特征函数f(x,y)关于模型P(Y|X)与经验分布 P ^ ( X ) \hat P(X) 的期望为:
E P ( f ) = x , y P ^ ( x ) P ( y x ) f ( x , y ) E_P(f) = \sum_{x,y}\hat P(x)P(y|x)f(x,y)

如果模型能够获取训训练数据中的信息,那么就可以假设这两个期望值相等:
E p ^ ( f ) = E P ( f ) x , y P ^ ( x , y ) f ( x , y ) = x , y P ^ ( x ) P ( y x ) f ( x , y ) E_{\hat p}(f) = E_P(f)\\ \sum_{x,y}\hat P(x,y)f(x,y) = \sum_{x,y}\hat P(x)P(y|x)f(x,y)
这可以作为模型的一个约束条件。假如有n个特征函数f(x,y),那么就有n个条件。于是最大熵模型可以等价为约束最优化问题:
max P C   H ( P ) = x , y P ^ ( x ) P ( y x ) l o g P ( y x ) s . t .    E p ( f i ) = E P ^ ( f i ) ,    i = 1 , 2 , . . . , n y P ( y x ) = 1 \max_{P \in C}\ H(P) = -\sum_{x,y}\hat P(x)P(y|x)logP(y|x) \\ s.t.\ \ E_p(f_i) = E_{\hat P}(f_i),\ \ i=1,2,...,n \\ \sum_{y}P(y|x)=1
改写为等价的求最小值问题:
min P C   H ( P ) = x , y P ^ ( x ) P ( y x ) l o g P ( y x ) s . t .    E p ( f i ) E P ^ ( f i ) = 0 ,    i = 1 , 2 , . . . , n y P ( y x ) = 1 \min_{P \in C}\ -H(P) = \sum_{x,y}\hat P(x)P(y|x)logP(y|x) \\ s.t.\ \ E_p(f_i) - E_{\hat P}(f_i) = 0,\ \ i=1,2,...,n \\ \sum_{y}P(y|x)=1

2. 求解最优化问题

  要求解这个最优化问题,我们需要使用拉格朗日乘子法:
L ( P , w ) = H ( P ) + w 0 [ 1 y P ( y x ) ] + i = 1 n w i [ E p ( f i ) E P ^ ( f i ) ] = x , y P ^ ( x ) P ( y x ) l o g P ( y x ) + w 0 [ 1 y P ( y x ) ] + i = 1 n w i [ x , y P ^ ( x ) P ( y x ) f ( x , y ) x , y P ^ ( x , y ) f ( x , y ) ] L(P,w) = -H(P) + w_0[1-\sum_{y}P(y|x)]+\sum_{i=1}^{n}w_i[E_p(f_i) - E_{\hat P}(f_i)] \\ =\sum_{x,y}\hat P(x)P(y|x)logP(y|x)+w_0[1-\sum_{y}P(y|x)] \\+\sum_{i=1}^{n}w_i[\sum_{x,y}\hat P(x)P(y|x)f(x,y) - \sum_{x,y}\hat P(x,y)f(x,y)]
原始的问题是先最大化w,再最小化P,即:
min P C   max w L ( P , w ) \min_{P \in C}\ \max_{w}L(P,w)
可以转化为对偶问题,即先最小化P,再最大化w:
max w   min P C L ( P , w ) \max_{w} \ \min_{P \in C}L(P,w)
对P(y|x)求偏导数有:
L ( P , w ) P ( y x ) = x , y P ^ ( x ) ( log P ( y x ) + 1 ) y w 0 x , y ( P ^ ( x ) i = 1 n w i f i ( x , y ) ) = x , y P ^ ( x ) ( log P ( y x ) + 1 w 0 i = 1 n w i f i ( x , y ) ) = 0 \frac{\partial L(P,w)}{\partial P(y|x)} = \sum_{x,y}\hat P(x)(\log P(y|x)+1)-\sum_{y}w_0-\sum_{x,y}(\hat P(x)\sum_{i=1}^{n}w_if_i(x,y))\\ =\sum_{x,y}\hat P(x)(\log P(y|x)+1-w_0-\sum_{i=1}^{n}w_if_i(x,y))=0
P ^ ( x ) > 0 \hat P(x)>0 的情况下,解得:
P ( y x ) = e x p ( i = 1 n w i f i ( x , y ) + w 0 1 ) = e x p ( i = 1 n w i f i ( x , y ) ) e x p ( 1 w 0 ) P(y|x)=exp(\sum_{i=1}^{n}w_if_i(x,y)+w_0-1)=\frac{exp(\sum_{i=1}^{n}w_if_i(x,y))}{exp(1-w_0)}
由于 y P ( y x ) = 1 \sum_{y}P(y|x)=1 ,即:
y P ( y x ) = y e x p ( i = 1 n w i f i ( x , y ) ) e x p ( 1 w 0 ) = 1 ; y e x p ( i = 1 n w i f i ( x , y ) ) = e x p ( 1 w 0 ) \sum_{y}P(y|x)=\sum_{y} \frac{exp(\sum_{i=1}^{n}w_if_i(x,y))}{exp(1-w_0)}=1;\\ 于是有:\sum_{y}exp(\sum_{i=1}^{n}w_if_i(x,y)) = exp(1-w_0)
将上式带回到P(y|x)中有:
P w ( y x ) = 1 Z w ( x ) e x p ( i = 1 n w i f i ( x , y ) ) Z w ( x ) = y e x p ( i = 1 n w i f i ( x , y ) ) P_w(y|x) = \frac{1}{Z_w(x)}exp(\sum_{i=1}^{n}w_if_i(x,y)) \\ Z_w(x) =\sum_{y}exp(\sum_{i=1}^{n}w_if_i(x,y))
至此,原最有话问题变成了 P w ( y x ) P_w(y|x) 关于w的函数,并求极大化的问题。

3. 改进的迭代尺度法(Improved Iterative Scaling, IIS)

  改进的迭代尺度法是一种最大熵模型的最优化算法,其步骤为:

输入: 特征函数 f i , i = 1 , 2 , . . . , n f_i, i=1,2,...,n ;经验分布 P ^ ( X , Y ) \hat P(X,Y) ;模型 P w ( y x ) P_w(y|x)

输出: 最优参数值 w w^* 和最优模型 P w P_{w^*}

(1) 初始化 w i = 0 w_i = 0 ,(i=1,2,…,n)

(2) 解出下列方程的解 δ i \delta_i
x , y P ^ ( x ) P ( y x ) f i ( x , y ) e x p ( δ i f # ( x , y ) ) = E P ^ ( f i ) f # ( x , y ) = i = 1 n f i ( x , y ) \sum_{x,y}\hat P(x)P(y|x)f_i(x,y)exp(\delta_if^{\#}(x,y))=E_{\hat P}(f_i) \\ f^{\#}(x,y) = \sum_{i=1}^{n}f_i(x,y)
(3) 更新 w i w_i 的值: w i : = w i + δ i w_i:=w_i+\delta_i

(4) 重复步骤(2),(3)直到收敛

4. 最大熵模型的总结

  最大熵模型在分类方法里算是比较优的模型,但是由于它的约束函数的数目一般来说会随着样本量的增大而增大,导致样本量很大的时候,对偶函数优化求解的迭代过程非常慢,scikit-learn甚至都没有最大熵模型对应的类库。但是理解它仍然很有意义,尤其是它和很多分类方法都有千丝万缕的联系。 
最大熵模型的优点有:
a) 最大熵统计模型获得的是所有满足约束条件的模型中信息熵极大的模型,作为经典的分类模型时准确率较高。

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

最大熵模型的缺点有:

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

5. 参考资料

最大熵模型原理小结

最大熵模型 Maximum Entropy Model

猜你喜欢

转载自blog.csdn.net/kabuto_hui/article/details/88224529