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

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

1、最大熵模型

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

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

那么根据最大熵原来来定义最大熵模型。假设要学习的是个分类模型,表示为条件概率分布P(YX)P(Y|X),训练集T={(x1,y1),(x2,y2),...,(xn,yn)}T=\{(x_1,y_1),(x_2,y_2),...,(x_n,y_n)\}XX是输出变量,YY是输出变量表示类别。我们需要获得最佳的分类模型P(YX)P^*(Y|X)

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

  1. P(YX)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=xX=x的频数

P(YX)P(Y|X)的熵H(P)H(P)的定义和变换如下
H(P)=i=1npiH(YX=xi)=i=1npij=1np(Y=yjX=xi)logp(Y=yjX=xi)=i=1nj=1npip(Y=yjX=xi)logp(Y=yjX=xi)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(YX)P(Y|X)的熵H(P)=(x,y)P(x)P(yx)logP(yx)H(P)=-\sum\limits_{(x,y)}\overline {P}(x)P(y|x)logP(y|x)。如果看不习惯那就写成i=1nj=1nP(xi)P(yjxi)logP(yjxi)-\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=1nP(yix)=1\sum\limits_{i=1}^{n}P(y_i|x)=1

(2)、如下

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

(x,y)P(x,y)f(x,y)=(x,y)P(x)P(yx)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=x0,y=y0)(x=x_0,y=y_0)的时候为1,否则为0,所以它是一个二值函数。当有m个特征函数的时候就有mm个约束条件。

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

maxPH(P)=(x,y)P(x)P(yx)logP(yx)\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)fi(x,y)(x,y)P(x)P(yx)fi(x,y)=0,i=1,2,...,ms.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
1yP(yx)=0\quad \qquad 1-\sum\limits_{y}P(y|x)=0

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

2、最大熵模型求解

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

L(P,α)=(x,y)P(x)P(yx)logP(yx)+i=1mαi[(x,y)P(x,y)fi(x,y)(x,y)P(x)P(yx)fi(x,y)]+α0[1yP(yx)]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)]

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

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

L(P,α)P(yx)=P(x)(logP(yx)+1)i=1mP(x)αifi(x,y)α0=P(x)(logP(yx)+1i=1mαifi(x,y)α0P(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(yx)P(y|x),记Pα(yx)P_\alpha(y|x)
logP(yx)=i=1mαifi(x,y)(1α0P(x))logP(y|x)=\sum\limits_{i=1}^{m}\alpha_if_i(x,y)-(1-\frac{\alpha_0}{\overline {P}(x)})
=>Pα(yx)=exp(i=1mαifi(x,y)(1α0P(x)))=exp(i=1mαifi(x,y))exp(1α0P(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)})}

又由于yPα(yx)=1\sum\limits_{y}P_\alpha(y|x)=1,在上式两边对yy求和
=>exp(1α0P(x))=yexp(i=1mαifi(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α(yx)=exp(i=1mαifi(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)=yexp(i=1mαifi(x,y))Z_\alpha(x)=\sum\limits_{y}exp(\sum\limits_{i=1}^{m}\alpha_if_i(x,y)),称作规范化因子,注意到,是关于xx的函数,ZαZ_\alpha中的x,yx,y其实是x=xj,y=yjx=x_j,y=y_j这种形式,为了方便才写成只有x,yx,y

Pα(yx)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(yx)P(y|x)的似然函数的对数形式如下:(为什么是下面这种?移步最大熵模型中的对数似然函数的解释

L(P)=log(x,y)P(yx)P(x,y)=(x,y)P(x,y)logP(yx)=(x,y)P(x,y)[i=1mαifi(x,y)log(Zα(x))]=(x,y)P(x,y)i=1mαifi(x,y)xyP(x,y)logZα(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)只是关于xx的函数,所以可以写成xP(x)logZα(x)\sum\limits_{x}\overline {P}(x)logZ_\alpha(x),所以得到

=>(x,y)P(x,y)i=1mαifi(x,y)xP(x)logZα(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α(yx)logPα(yx)+i=1mαi[(x,y)P(x,y)fi(x,y)(x,y)P(x)Pα(yx)fi(x,y)]=i=1m(x,y)αiP(x,y)fi(x,y)+(x,y)P(x)Pα(yx)[logPα(yx)i=1mαifi(x,y)]=i=1m(x,y)αiP(x,y)fi(x,y)+(x,y)P(x)Pα(yx)[i=1mαifi(x,y)logZα(x)i=1mαifi(x,y)]=i=1m(x,y)αiP(x,y)fi(x,y)(x,y)P(x)Pα(yx)logZα(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)
又由于yP(yx)=1\sum\limits_{y}P(y|x)=1,所以(x,y)P(x)Pα(yx)logZα(x)=xP(x)logZα(x)yPα(yx)=xP(x)logZα(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=1m(x,y)αiP(x,y)fi(x,y)xP(x)logZα(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=3x+2y=3x+2),只能使用逼近的方法,在《统计学习方法》中介绍了拟牛顿法和IIS方法,关于IIS每步计算也是逐步逼近解析解,比如当前参数α\alpha(向量表示),那么下一步得到的就是α+θ\alpha+\theta,满足后者对应的似然函数值大于前者对应的似然函数值。具体的我也没看了。

展开阅读全文

没有更多推荐了,返回首页