机器学习笔记:最大熵(模型,推导,与似然函数关系的推导,求解)

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

1、最大熵模型

最大熵原理:最大熵原理认为在学习概率模型时,在所有可能的概率模型中,熵最大的模型是最少的模型。

该原理认为要选择的概率模型首先得承认已有的现实(约束条件),对未来无偏(即不确定的部分是等可能的)。比如随机变量取值有A,B,C,另外已知 P ( A ) = 0.2 P(A)=0.2 ,那么根据最大熵原理,首先满足约束条件 P ( A ) = 0.2 , P ( B ) + P ( C ) = 0.8 P(A)=0.2,P(B)+P(C)=0.8 ,然后未知的部分即 P ( B ) P ( C ) P(B)和P(C) ,应该是等可能的,所以 P ( B ) = P ( C ) = 0.4 P(B)=P(C)=0.4 ,此时模型熵最大,被认为是最好的模型。

那么根据最大熵原来来定义最大熵模型。假设要学习的是个分类模型,表示为条件概率分布 P ( Y X ) P(Y|X) ,训练集 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)\} X X 是输出变量, Y Y 是输出变量表示类别。我们需要获得最佳的分类模型 P ( Y X ) P^*(Y|X)

根据最大熵原理,在满足约束条件下, P ( Y X ) P(Y|X) 的熵最大的模型为最佳模型。所以我定义最大熵模型就是做两件事

  1. P ( Y X ) P(Y|X) 的熵
  2. 约束条件

先给出联合分布 P ( X , Y ) P(X,Y) 和边缘分布 P ( X ) P(X) 如下:

P ( X = x , Y = y ) = c ( X = x , Y = y ) n \overline{P}(X=x,Y=y)=\frac{c(X=x,Y=y)}{n} ,分子表示(x,y)的频数
P ( X = x ) = c ( X = x ) n \overline{P}(X=x)=\frac{c(X=x)}{n} ,分子表示 X = x X=x 的频数

P ( Y X ) P(Y|X) 的熵 H ( P ) H(P) 的定义和变换如下
H ( P ) = i = 1 n p i H ( Y X = x i ) = i = 1 n p i j = 1 n p ( Y = y j X = x i ) l o g p ( Y = y j X = x i ) = i = 1 n j = 1 n p i p ( Y = y j X = x i ) l o g p ( Y = y j X = x i ) H(P)=\sum\limits_{i=1}^{n}p_iH(Y|X=x_i)\\ =-\sum\limits_{i=1}^{n}p_i\sum\limits_{j=1}^{n} p(Y=y_j|X=x_i)logp(Y=y_j|X=x_i)\\ =-\sum\limits_{i=1}^{n} \sum\limits_{j=1}^{n}p_i\cdot p(Y=y_j|X=x_i)logp(Y=y_j|X=x_i)

从而得到 P ( Y X ) P(Y|X) 的熵 H ( P ) = ( x , y ) P ( x ) P ( y x ) l o g P ( y x ) H(P)=-\sum\limits_{(x,y)}\overline {P}(x)P(y|x)logP(y|x) 。如果看不习惯那就写成 i = 1 n j = 1 n P ( x i ) P ( y j x i ) l o g P ( y j x i ) -\sum\limits_{i=1}^{n} \sum\limits_{j=1}^{n}\overline {P}(x_i)\cdot P(y_j|x_i)logP(y_j|x_i) 的形式,这两者是等价的,前面那种写法纯粹是为了方便,但是不熟悉的话还是用后面的写法,否则后面的推导可能会糊涂。

下面写出约束条件

(1)、 i = 1 n P ( y i x ) = 1 \sum\limits_{i=1}^{n}P(y_i|x)=1

(2)、如下

现在我们要求的是 P ( Y X ) P(Y|X) 模型,通过该模型是需要能够获取训练数据中的信息的,那么就应该有下面的式子成立(即约束条件(2))。

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

其中 f ( x , y ) f(x,y) 是期望函数,当 ( x = x 0 , y = y 0 ) (x=x_0,y=y_0) 的时候为1,否则为0,所以它是一个二值函数。当有m个特征函数的时候就有 m m 个约束条件。

所以得到最大熵模型如下:

max P H ( P ) = ( x , y ) P ( x ) P ( y x ) l o g P ( y x ) \max \limits_{P}H(P)=-\sum\limits_{(x,y)}\overline {P}(x)P(y|x)logP(y|x)

s . t . ( x , y ) P ( x , y ) f i ( x , y ) ( x , y ) P ( x ) P ( y x ) f i ( x , y ) = 0 , i = 1 , 2 , . . . , m s.t. \quad \sum\limits_{(x,y)}\overline {P}(x,y)f_i(x,y)-\sum\limits_{(x,y)}\overline {P}(x)P(y|x)f_i(x,y)=0,i=1,2,...,m
1 y P ( y x ) = 0 \quad \qquad 1-\sum\limits_{y}P(y|x)=0

将目标函数改为极小化,后面做对偶变换以及与极大似然函数比较的时候会用得到。
min P H ( P ) = ( x , y ) P ( x ) P ( y x ) l o g P ( y x ) \min \limits_{P}-H(P)=\sum\limits_{(x,y)}\overline {P}(x)P(y|x)logP(y|x)

2、最大熵模型求解

这种带约束条件的模型求解使用拉格朗日函数即可。构造拉格朗日函数如下(为了读起来方便,还是打算用 x i , y i x_i,y_i 的形式了)

L ( P , α ) = ( x , y ) P ( x ) P ( y x ) l o g P ( y x ) + i = 1 m α i [ ( x , y ) P ( x , y ) f i ( x , y ) ( x , y ) P ( x ) P ( y x ) f i ( x , y ) ] + α 0 [ 1 y P ( y x ) ] L(P,\alpha)=\sum\limits_{(x,y)}\overline {P}(x)P(y|x)logP(y|x)+\sum\limits_{i=1}^{m}\alpha_i[\sum\limits_{(x,y)}\overline {P}(x,y)f_i(x,y)-\sum\limits_{(x,y)}\overline {P}(x)P(y|x)f_i(x,y)]+\alpha_0[1-\sum\limits_{y}P(y|x)]

原始问题变成 min P max α L ( P , α ) \min \limits_{P}\max\limits_{\alpha}L(P,\alpha) ,转换为其对偶形式为 max α min P L ( P , α ) \max\limits_{\alpha}\min\limits_{P}L(P,\alpha) L ( P , α ) L(P,\alpha) 是P的凸函数,所以两者拥有相同的最优解。现在来求解对偶问题(求偏导,并令偏导为0)

注意:是对几个具体的条件概率,即 P ( y i x i ) P(y_i|x_i) 求导,写成 p P ( y x ) pP(y|x) 只是一种通用的形式,因为我们要对所有的 i = 1 , 2 , . . . , n i=1,2,...,n 对应的 P ( y i x i ) P(y_i|x_i) 求导

L ( P , α ) P ( y x ) = P ( x ) ( l o g P ( y x ) + 1 ) i = 1 m P ( x ) α i f i ( x , y ) α 0 = P ( x ) ( l o g P ( y x ) + 1 i = 1 m α i f i ( x , y ) α 0 P ( x ) ) \frac{\partial L(P,\alpha)}{\partial P(y|x)}=\overline {P}(x)(logP(y|x)+1)-\sum\limits_{i=1}^{m}\overline {P} (x)\alpha_if_i(x,y)-\alpha_0\\=\overline {P}(x)(logP(y|x)+1-\sum\limits_{i=1}^{m}\alpha_if_i(x,y)-\frac{\alpha_0}{\overline {P}(x)})

令导数为0求得 P ( y x ) P(y|x) ,记 P α ( y x ) P_\alpha(y|x)
l o g P ( y x ) = i = 1 m α i f i ( x , y ) ( 1 α 0 P ( x ) ) logP(y|x)=\sum\limits_{i=1}^{m}\alpha_if_i(x,y)-(1-\frac{\alpha_0}{\overline {P}(x)})
= > P α ( y x ) = e x p ( i = 1 m α i f i ( x , y ) ( 1 α 0 P ( x ) ) ) = e x p ( i = 1 m α i f i ( x , y ) ) e x p ( 1 α 0 P ( x ) ) =>P_\alpha(y|x)=exp(\sum\limits_{i=1}^{m}\alpha_if_i(x,y)-(1-\frac{\alpha_0}{\overline {P}(x)}))=\frac{exp(\sum\limits_{i=1}^{m}\alpha_if_i(x,y))}{exp(1-\frac{\alpha_0}{\overline {P}(x)})}

又由于 y P α ( y x ) = 1 \sum\limits_{y}P_\alpha(y|x)=1 ,在上式两边对 y y 求和
= > e x p ( 1 α 0 P ( x ) ) = y e x p ( i = 1 m α i f i ( x , y ) ) =>exp(1-\frac{\alpha_0}{\overline {P}(x)})=\sum\limits_{y}exp(\sum\limits_{i=1}^{m}\alpha_if_i(x,y)) ,再带回去,最终得到最大熵模型如下:
= > P α ( y x ) = e x p ( i = 1 m α i f i ( x , y ) ) Z α ( x ) =>P_\alpha(y|x)=\frac{exp(\sum\limits_{i=1}^{m}\alpha_if_i(x,y))}{Z_\alpha(x)}
其中 Z α ( x ) = y e x p ( i = 1 m α i f i ( x , y ) ) Z_\alpha(x)=\sum\limits_{y}exp(\sum\limits_{i=1}^{m}\alpha_if_i(x,y)) ,称作规范化因子,注意到,是关于 x x 的函数, Z α Z_\alpha 中的 x , y x,y 其实是 x = x j , y = y j x=x_j,y=y_j 这种形式,为了方便才写成只有 x , y x,y

P α ( y x ) P_\alpha(y|x) 带入到拉格朗日函数中,记为 φ ( α ) \varphi(\alpha) 接着我们需要求 max α φ ( α ) \max \limits_{\alpha}\varphi(\alpha)

3、最大熵模型与极大似然函数关系

上述问题 max α φ ( α ) \max \limits_{\alpha}\varphi(\alpha) 其实是与最大熵模型的极大似然函数是等价的,下面就来证明。

前面已经给出了 P ( x , y ) \overline {P}(x,y) ,那么关于条件概率 P ( y x ) P(y|x) 的似然函数的对数形式如下:(为什么是下面这种?移步最大熵模型中的对数似然函数的解释

L ( P ) = l o g ( x , y ) P ( y x ) P ( x , y ) = ( x , y ) P ( x , y ) l o g P ( y x ) = ( x , y ) P ( x , y ) [ i = 1 m α i f i ( x , y ) l o g ( Z α ( x ) ) ] = ( x , y ) P ( x , y ) i = 1 m α i f i ( x , y ) x y P ( x , y ) l o g Z α ( x ) L(P)=log\prod\limits_{(x,y)}P(y|x)^{\overline P(x,y)}\\=\sum\limits_{(x,y)}\overline P(x,y)logP(y|x)\\=\sum\limits_{(x,y)}\overline P(x,y)[\sum\limits_{i=1}^{m}\alpha_if_i(x,y)-log(Z_\alpha(x))]\\=\sum\limits_{(x,y)}\overline P(x,y)\sum\limits_{i=1}^{m}\alpha_if_i(x,y)-\sum\limits_{x}\sum\limits_{y}\overline P(x,y)logZ_\alpha(x)

注意到,第二项中 Z α ( x ) Z_\alpha(x) 只是关于 x x 的函数,所以可以写成 x P ( x ) l o g Z α ( x ) \sum\limits_{x}\overline {P}(x)logZ_\alpha(x) ,所以得到

= > ( x , y ) P ( x , y ) i = 1 m α i f i ( x , y ) x P ( x ) l o g Z α ( x ) =>\sum\limits_{(x,y)}\overline P(x,y)\sum\limits_{i=1}^{m}\alpha_if_i(x,y)-\sum\limits_{x}\overline {P}(x)logZ_\alpha(x)

另外:
φ ( α ) = ( x , y ) P ( x ) P α ( y x ) l o g P α ( y x ) + i = 1 m α i [ ( x , y ) P ( x , y ) f i ( x , y ) ( x , y ) P ( x ) P α ( y x ) f i ( x , y ) ] = i = 1 m ( x , y ) α i P ( x , y ) f i ( x , y ) + ( x , y ) P ( x ) P α ( y x ) [ l o g P α ( y x ) i = 1 m α i f i ( x , y ) ] = i = 1 m ( x , y ) α i P ( x , y ) f i ( x , y ) + ( x , y ) P ( x ) P α ( y x ) [ i = 1 m α i f i ( x , y ) l o g Z α ( x ) i = 1 m α i f i ( x , y ) ] = i = 1 m ( x , y ) α i P ( x , y ) f i ( x , y ) ( x , y ) P ( x ) P α ( y x ) l o g Z α ( x ) \varphi(\alpha)=\sum\limits_{(x,y)}\overline {P}(x)P_\alpha(y|x)logP_\alpha(y|x)+\sum\limits_{i=1}^{m}\alpha_i[\sum\limits_{(x,y)}\overline {P}(x,y)f_i(x,y)-\sum\limits_{(x,y)}\overline {P}(x)P_\alpha(y|x)f_i(x,y)]\\=\sum\limits_{i=1}^{m}\sum\limits_{(x,y)}\alpha_i\overline {P}(x,y)f_i(x,y)+\sum\limits_{(x,y)}\overline {P}(x)P_\alpha(y|x)[logP_\alpha(y|x)-\sum\limits_{i=1}^{m}\alpha_if_i(x,y)]\\=\sum\limits_{i=1}^{m}\sum\limits_{(x,y)}\alpha_i\overline {P}(x,y)f_i(x,y)+\sum\limits_{(x,y)}\overline {P}(x)P_\alpha(y|x)[\sum\limits_{i=1}^{m}\alpha_if_i(x,y)-logZ_\alpha(x)-\sum\limits_{i=1}^{m}\alpha_if_i(x,y)]\\=\sum\limits_{i=1}^{m}\sum\limits_{(x,y)}\alpha_i\overline {P}(x,y)f_i(x,y)-\sum\limits_{(x,y)}\overline {P}(x)P_\alpha(y|x)logZ_\alpha(x)
又由于 y P ( y x ) = 1 \sum\limits_{y}P(y|x)=1 ,所以 ( x , y ) P ( x ) P α ( y x ) l o g Z α ( x ) = x P ( x ) l o g Z α ( x ) y P α ( y x ) = x P ( x ) l o g Z α ( x ) \sum\limits_{(x,y)}\overline {P}(x)P_\alpha(y|x)logZ_\alpha(x)=\sum\limits_{x}\overline {P}(x)logZ_\alpha(x) \sum\limits_{y}P_\alpha(y|x)=\sum\limits_{x}\overline {P}(x)logZ_\alpha(x)
所以最终得到
i = 1 m ( x , y ) α i P ( x , y ) f i ( x , y ) x P ( x ) l o g Z α ( x ) \sum\limits_{i=1}^{m}\sum\limits_{(x,y)}\alpha_i\overline {P}(x,y)f_i(x,y)-\sum\limits_{x}\overline {P}(x)logZ_\alpha(x)

一番折腾后可以发现似然函数等于对偶函数 L ( P α ) = φ ( α ) L(P_\alpha)=\varphi(\alpha) ,那么求 max α φ ( α ) \max \limits_{\alpha}\varphi(\alpha) 问题可以转为求极大似然函数问题

4、模型的求解

关于这个问题的求解没法求出来解析解的(比如 y = 3 x + 2 y=3x+2 ),只能使用逼近的方法,在《统计学习方法》中介绍了拟牛顿法和IIS方法,关于IIS每步计算也是逐步逼近解析解,比如当前参数 α \alpha (向量表示),那么下一步得到的就是 α + θ \alpha+\theta ,满足后者对应的似然函数值大于前者对应的似然函数值。具体的我也没看了。

猜你喜欢

转载自blog.csdn.net/qq_37334135/article/details/85177935