版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_37334135/article/details/85177935
1、最大熵模型
最大熵原理:最大熵原理认为在学习概率模型时,在所有可能的概率模型中,熵最大的模型是最少的模型。
该原理认为要选择的概率模型首先得承认已有的现实(约束条件),对未来无偏(即不确定的部分是等可能的)。比如随机变量取值有A,B,C,另外已知
P(A)=0.2,那么根据最大熵原理,首先满足约束条件
P(A)=0.2,P(B)+P(C)=0.8,然后未知的部分即
P(B)和P(C),应该是等可能的,所以
P(B)=P(C)=0.4,此时模型熵最大,被认为是最好的模型。
那么根据最大熵原来来定义最大熵模型。假设要学习的是个分类模型,表示为条件概率分布
P(Y∣X),训练集
T={(x1,y1),(x2,y2),...,(xn,yn)},
X是输出变量,
Y是输出变量表示类别。我们需要获得最佳的分类模型
P∗(Y∣X)
根据最大熵原理,在满足约束条件下,
P(Y∣X)的熵最大的模型为最佳模型。所以我定义最大熵模型就是做两件事
-
P(Y∣X)的熵
- 约束条件
先给出联合分布
P(X,Y) 和边缘分布
P(X)如下:
P(X=x,Y=y)=nc(X=x,Y=y),分子表示(x,y)的频数
P(X=x)=nc(X=x),分子表示
X=x的频数
P(Y∣X)的熵
H(P)的定义和变换如下
H(P)=i=1∑npiH(Y∣X=xi)=−i=1∑npij=1∑np(Y=yj∣X=xi)logp(Y=yj∣X=xi)=−i=1∑nj=1∑npi⋅p(Y=yj∣X=xi)logp(Y=yj∣X=xi)
从而得到
P(Y∣X)的熵
H(P)=−(x,y)∑P(x)P(y∣x)logP(y∣x)。如果看不习惯那就写成
−i=1∑nj=1∑nP(xi)⋅P(yj∣xi)logP(yj∣xi)的形式,这两者是等价的,前面那种写法纯粹是为了方便,但是不熟悉的话还是用后面的写法,否则后面的推导可能会糊涂。
下面写出约束条件
(1)、
i=1∑nP(yi∣x)=1
(2)、如下
现在我们要求的是
P(Y∣X)模型,通过该模型是需要能够获取训练数据中的信息的,那么就应该有下面的式子成立(即约束条件(2))。
(x,y)∑P(x,y)f(x,y)=(x,y)∑P(x)P(y∣x)f(x,y)
其中
f(x,y)是期望函数,当
(x=x0,y=y0)的时候为1,否则为0,所以它是一个二值函数。当有m个特征函数的时候就有
m个约束条件。
所以得到最大熵模型如下:
PmaxH(P)=−(x,y)∑P(x)P(y∣x)logP(y∣x)
s.t.(x,y)∑P(x,y)fi(x,y)−(x,y)∑P(x)P(y∣x)fi(x,y)=0,i=1,2,...,m
1−y∑P(y∣x)=0
将目标函数改为极小化,后面做对偶变换以及与极大似然函数比较的时候会用得到。
Pmin−H(P)=(x,y)∑P(x)P(y∣x)logP(y∣x)
2、最大熵模型求解
这种带约束条件的模型求解使用拉格朗日函数即可。构造拉格朗日函数如下(为了读起来方便,还是打算用
xi,yi的形式了)
L(P,α)=(x,y)∑P(x)P(y∣x)logP(y∣x)+i=1∑mαi[(x,y)∑P(x,y)fi(x,y)−(x,y)∑P(x)P(y∣x)fi(x,y)]+α0[1−y∑P(y∣x)]
原始问题变成
PminαmaxL(P,α) ,转换为其对偶形式为
αmaxPminL(P,α),
L(P,α)是P的凸函数,所以两者拥有相同的最优解。现在来求解对偶问题(求偏导,并令偏导为0)
注意:是对几个具体的条件概率,即
P(yi∣xi)求导,写成
pP(y∣x)只是一种通用的形式,因为我们要对所有的
i=1,2,...,n对应的
P(yi∣xi)求导
∂P(y∣x)∂L(P,α)=P(x)(logP(y∣x)+1)−i=1∑mP(x)αifi(x,y)−α0=P(x)(logP(y∣x)+1−i=1∑mαifi(x,y)−P(x)α0)
令导数为0求得
P(y∣x),记
Pα(y∣x)
logP(y∣x)=i=1∑mαifi(x,y)−(1−P(x)α0)
=>Pα(y∣x)=exp(i=1∑mαifi(x,y)−(1−P(x)α0))=exp(1−P(x)α0)exp(i=1∑mαifi(x,y))
又由于
y∑Pα(y∣x)=1,在上式两边对
y求和
=>exp(1−P(x)α0)=y∑exp(i=1∑mαifi(x,y)),再带回去,最终得到最大熵模型如下:
=>Pα(y∣x)=Zα(x)exp(i=1∑mαifi(x,y))
其中
Zα(x)=y∑exp(i=1∑mαifi(x,y)),称作规范化因子,注意到,是关于
x的函数,
Zα中的
x,y其实是
x=xj,y=yj这种形式,为了方便才写成只有
x,y。
将
Pα(y∣x)带入到拉格朗日函数中,记为
φ(α)接着我们需要求
αmaxφ(α)
3、最大熵模型与极大似然函数关系
上述问题
αmaxφ(α)其实是与最大熵模型的极大似然函数是等价的,下面就来证明。
前面已经给出了
P(x,y),那么关于条件概率
P(y∣x)的似然函数的对数形式如下:(为什么是下面这种?移步最大熵模型中的对数似然函数的解释)
L(P)=log(x,y)∏P(y∣x)P(x,y)=(x,y)∑P(x,y)logP(y∣x)=(x,y)∑P(x,y)[i=1∑mαifi(x,y)−log(Zα(x))]=(x,y)∑P(x,y)i=1∑mαifi(x,y)−x∑y∑P(x,y)logZα(x)
注意到,第二项中
Zα(x)只是关于
x的函数,所以可以写成
x∑P(x)logZα(x),所以得到
=>(x,y)∑P(x,y)i=1∑mαifi(x,y)−x∑P(x)logZα(x)
另外:
φ(α)=(x,y)∑P(x)Pα(y∣x)logPα(y∣x)+i=1∑mαi[(x,y)∑P(x,y)fi(x,y)−(x,y)∑P(x)Pα(y∣x)fi(x,y)]=i=1∑m(x,y)∑αiP(x,y)fi(x,y)+(x,y)∑P(x)Pα(y∣x)[logPα(y∣x)−i=1∑mαifi(x,y)]=i=1∑m(x,y)∑αiP(x,y)fi(x,y)+(x,y)∑P(x)Pα(y∣x)[i=1∑mαifi(x,y)−logZα(x)−i=1∑mαifi(x,y)]=i=1∑m(x,y)∑αiP(x,y)fi(x,y)−(x,y)∑P(x)Pα(y∣x)logZα(x)
又由于
y∑P(y∣x)=1,所以
(x,y)∑P(x)Pα(y∣x)logZα(x)=x∑P(x)logZα(x)y∑Pα(y∣x)=x∑P(x)logZα(x)
所以最终得到
i=1∑m(x,y)∑αiP(x,y)fi(x,y)−x∑P(x)logZα(x)
一番折腾后可以发现似然函数等于对偶函数
L(Pα)=φ(α),那么求
αmaxφ(α)问题可以转为求极大似然函数问题
4、模型的求解
关于这个问题的求解没法求出来解析解的(比如
y=3x+2),只能使用逼近的方法,在《统计学习方法》中介绍了拟牛顿法和IIS方法,关于IIS每步计算也是逐步逼近解析解,比如当前参数
α(向量表示),那么下一步得到的就是
α+θ,满足后者对应的似然函数值大于前者对应的似然函数值。具体的我也没看了。