最大熵原理:学习概率模型时,在所有可能的概率模型中,熵最大的模型是最好的模型。用最大熵原理推导实现的模型是最大熵模型。

1. 熵

1.1. 熵

假设离散型随机变量 X 的样本空间 X={x1,x2,,xn},概率分布 P(X=xi)=pi,那么随机变量 X 的熵为:

H(X)=i=1npilogpi

熵满足下列不等式:

0H(X)logn

当且仅当 X 服从均匀分布即 p1=p2==pn=1/n 时,右侧等号成立,熵取得最大值 logn.

1.2. 条件熵

假设离散型随机变量 X,Y 的样本空间 X={x1,x2,,xn},Y={y1,y2,,ym},那么在 X 条件下,Y 的条件熵为:

H(YX)=i=1nP(xi)H(YX=xi)=i=1nP(xi)(i=1mP(yixi)logP(yixi))=x,yP(x)P(yx)logP(yx)

2. 最大熵模型

2.1. 问题提出

对于训练数据集 D={(x1,y1),(x2,y2),,(xn,yn)},其中 xi=(xi1,xi2,,xid)TXRd,yiY.

定义特征函数 f(x,y) 描述输入 x 和输出 y 之间的某一事实:

f(x,y)={1,xy0,

我们知道对于二维离散随机变量的期望的表达式:

E=x,yp(x,y)f(x,y)

现在的问题就是如何得到 p(x,y),一种方法是用经验分布来近似表示:

p^(x,y)=count(x,y)n

其中 count(x,y) 代表在训练数据集 D(x,y) 出现的次数。

那么特征函数关于经验分布的期望值 Ep^(f) 为:

Ep^(f)=x,yp^(x,y)f(x,y)

另一种方法是使用学习到的模型 p(yx) 来表示:

p(x,y)=p(x)p(yx)

但是其中还是有未知的 p(x),我们仍然用经验分布来近似表示:

p^(x)=count(x)n

那么特征函数关于模型和经验分布的期望值 Ep(f) 为:

Ep(f)=x,yp^(x)p(yx)f(x,y)

如果模型能够获取到训练数据中的信息,那么我们可以假设 Ep^(f)Ep(f) 是相等的,即:

x,yp^(x,y)f(x,y)=x,yp^(x)p(yx)f(x,y)


对于训练数据集 D={(x1,y1),(x2,y2),,(xn,yn)},特征函数 fi(x,y),i=1,2,,n,满足所有约束条件的模型集合为 C={PPEp(fi)=Ep^(fi),i=1,2,,n},那么最大熵模型的学习就是解决以下问题:

minPCH(P)=x,yP^(x)P(yx)logP(yx)s.t.Ep(fi)Ep^(fi)=0,i=1,2,,nyP(yx)=1

2.2. 问题求解

该问题为有约束的最优化问题,通过拉格朗日乘子法先转为无约束的最优化问题。引入拉格朗日乘子 λ 写出拉格朗日函数:

L(P,λ)=H(P)+λ0(1yP(yx))+i=1nλi(Ep(fi)Ep^(fi))

那么原始问题就转换成无约束的最优化问题:

minPCmaxλL(P,λ)

转换为对偶问题:

maxλminPCL(P,λ)


首先求解内层问题,直接对 P 求导并置为 0

式中 log 的底数为 e.

L(P,λ)P(yx)=x,yP^(x)(logP(yx)+1)yλ0i=1nλix,yP^(x)fi(x,y)=x,yP^(x)(logP(yx)+1)yλ0x,yP^(x)i=1nλifi(x,y)=x,yP^(x)(logP(yx)+1λ0i=1nλifi(x,y))=0

logP(yx)+1λ0i=1nλifi(x,y)=0logP(yx)=1+λ0+i=1nλifi(x,y)P(yx)=exp(1+λ0+i=1nλifi(x,y))P(yx)=exp(i=1nλifi(x,y))exp(1λ0)

yP(yx)=1 可得:

yP(yx)=yexp(i=1nλifi(x,y))exp(1λ0)=yexp(i=1nλifi(x,y))exp(1λ0)=1exp(1λ0)=yexp(i=1nλifi(x,y))

为了式子简洁,令 Zλ(x)=yexp(i=1nλifi(x,y)),将其回代到 P(yx) 的表达式中得:

P(yx)=1Zλ(x)exp(i=1nλifi(x,y))

这样内层问题便解决了,将解出来的 P(yx) 回代到 L(P,λ),记为 Ψ(λ).


接下来就要求解外层问题:

maxλΨ(λ)

该问题解决的方法可以为改进的迭代尺度法 (Improved Iterative Scaling, IIS) 或者是拟牛顿法 (BFGS),等我学到了这两个算法后再写笔记。

文章目录