最大熵模型
最大熵模型(Maximum Entropy Model,以下简称MaxEnt),最大熵模型是什么意思呢?
熵,最初是一个热力学的概念。表示的是混乱的程度,熵越高,表示越混乱;熵越低,表示越整齐,越有规律。宇宙中的事物都有自发变得更混乱的倾向,也就是说熵会不断增加,这就是 熵增原理 。例如一根线会折叠穿插越来越乱,一股烟最终会弥漫到整个瓶子,或者说熵不断增大。
在历史的发展中,熵的概念进入了很多学科的视野。上世纪40年代,香农首先在信息论中引入了信息熵的概念。这里信息熵用来表示随机变量不确定度的度量,不确定度越大,熵值越大。极限情况,当一个随机变量均匀分布时,熵值最大;完全确定时,熵值为0。
例如这里有两个区域,你完全不知道这两个区域的所有信息,那么你认为这一只蜂后最后在哪里筑巢呢?你凭什么认为这只蜂后在 A A A区域筑巢的概率是 1 3 \frac{1}{3} 31,而在 B B B区域筑巢的概率是 2 3 \frac{2}{3} 32?因为你不知道两个区域的任何信息,你只能认为这只蜂后在这两个区域筑巢的概率都是 1 2 \frac{1}{2} 21,而两个区域筑巢概率都是 1 2 \frac{1}{2} 21的这个模型就是最大熵模型。因此在求解概率模型时,当没有任何约束条件则只需找到熵最大的模型。
如果模型有一些约束条件后,例如 A A A区域芳草鲜美,而 B B B区域则寸草不生,你这时候可能估计蜂后在 A A A区域筑巢的概率是 2 3 \frac{2}{3} 32,在 B B B区域筑巢的概率是 1 3 \frac{1}{3} 31,也就是说,我们在这时候设计模型就必须考虑这个约束了,我们很明确知道蜂后更倾向于在 A A A区域筑巢,在 A A A区域筑巢的概率比在 B B B区域筑巢的概率大,那么蜂后在 A A A区域筑巢的概率究竟是多大呢?根据最大熵理论,我们只要在满足约束的条件下找熵最大的模型就可以了,在最大熵模型下的蜂后在 A A A区域筑巢的概率就是我们要求的概率。
信息论之父克劳德·艾尔伍德·香农第一次用数学语言阐明了概率与信息熵的关系:
H
(
X
)
=
−
∑
i
=
1
n
p
(
x
i
)
log
p
(
x
i
)
H(X)=-\sum^n_{i=1}p(x_i)\log p(x_i)
H(X)=−i=1∑np(xi)logp(xi)
其中 n n n代表 X X X的 n n n种不同的离散取值。而 p ( x i ) p(x_i) p(xi)代表了 X X X取值为 x i x_i xi的概率, log \log log为以 2 2 2或者 e e e为底的对数。
从公式中我们可以知道,信息熵描述的是这个随机变量的平均不确定度,为了满足两个独立随机变量所产生的不确定性应等于各自不确定性之和,即可加性,因此对概率取对数,又添加了一个负号使最终结果恒为正。从这个例子我们知道,如果这个随机变量十分确定,例如其概率恒为0或恒为1,那么这个式子的最终结果是0;如果这个随机变量完全不确定,即其分布是均匀分布,这时候就是最大值,符合熵的定义。
熟悉了一个变量
X
X
X的熵,很容易推广到多个变量的联合熵,这里给出两个变量
X
X
X和
Y
Y
Y的联合熵表达式:
H
(
X
,
Y
)
=
−
∑
i
=
1
n
p
(
x
i
,
y
i
)
log
p
(
x
i
,
y
i
)
H(X,Y)=-\sum_{i=1}^np(x_i,y_i)\log p(x_i,y_i)
H(X,Y)=−i=1∑np(xi,yi)logp(xi,yi)
有了联合熵,又可以得到条件熵的表达式
H
(
Y
∣
X
)
H(Y|X)
H(Y∣X),条件熵类似于条件概率,它度量了我们的Y在知道X以后剩下的不确定性(例如我们已经知道这两个区域是否水草丰茂,接下来我们想知道蜂后在哪里筑巢的概率)。表达式如下:
H
(
X
∣
Y
)
=
∑
x
∈
X
p
(
x
)
H
(
Y
∣
X
=
x
)
=
−
∑
x
∈
X
p
(
x
)
∑
y
∈
Y
p
(
y
∣
x
)
log
p
(
y
∣
x
)
=
−
∑
x
∈
X
∑
y
∈
Y
p
(
x
,
y
)
log
p
(
y
∣
x
)
H(X|Y)=\sum_{x\in X}p(x)H(Y|X=x) \\ =-\sum_{x\in X}p(x)\sum_{y\in Y}p(y|x)\log p(y|x) \\ =-\sum_{x\in X}\sum_{y\in Y}p(x,y)\log p(y|x)
H(X∣Y)=x∈X∑p(x)H(Y∣X=x)=−x∈X∑p(x)y∈Y∑p(y∣x)logp(y∣x)=−x∈X∑y∈Y∑p(x,y)logp(y∣x)
在这里我们的最大熵模型假设分类模型是一个以环境参数(例如温度,湿度,风速)为特征,以黄蜂种群是否存在作为输出的模型,因此这是一个条件概率分布 P ( Y ∣ X ) P(Y|X) P(Y∣X)( X X X为特征,即环境参数, Y Y Y为输出,即黄蜂出现概率)。
在这里,我们的最大熵模型的约束条件就是环境参数,我们在worldclim网站下载了华盛顿州12个月的月最高温度,月最低温度,月平均风速等等,作为已知的信息,又用机器视觉的方法挑选了3000多张照片并找到了相当数量的目击黄蜂事件的位置坐标,这些已知的信息就是约束条件,我们的目标就是在这些约束条件下,用最大熵模型选择一个最好的分类类型。
我们将这些数据组成训练集 ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x m , y m ) (x_1,y_1),(x_2,y_2),...,(x_m,y_m) (x1,y1),(x2,y2),...,(xm,ym),其中 x x x为 n n n维特征向量(即环境参数,用温度,湿度,风速等信息组成的一个 n n n维向量), y y y为类别输出(黄蜂是否出现)。组成这个训练集后,我们可以得到总体联合分布 P ( X , Y ) P(X,Y) P(X,Y)的经验分布 P ‾ ( X , Y ) \overline P(X,Y) P(X,Y), P ‾ ( X , Y ) \overline P(X,Y) P(X,Y)即为训练集中 X , Y X,Y X,Y同时出现的次数除以样本总数 m m m。同样,我们也可以计算出边缘分布 P ( X ) P(X) P(X)的经验分布 P ‾ ( X ) \overline P(X) P(X), P ‾ ( X ) \overline P(X) P(X)即为训练集中 X X X出现的次数除以样本总数 m m m。
约束条件还可以用一个特征函数
f
(
x
,
y
)
f(x,y)
f(x,y)表示。可以认为只要出现在训练集中出现的
(
x
i
,
y
i
)
(x_i,y_i)
(xi,yi),其
f
(
x
i
,
y
i
)
=
1
f(x_i,y_i)=1
f(xi,yi)=1,即:
f
(
x
,
y
)
=
{
1
x
,
y
在
训
练
集
中
出
现
0
否
则
f(x,y)=\left\{\begin{array}{l} 1 &x,y在训练集中出现\\ 0 &否则 \end{array}\right.
f(x,y)={10x,y在训练集中出现否则
同一个训练样本可以有多个约束特征函数,不同约束特征函数实际上就是不同环境参数(例如温度,湿度)对模型的约束作用。模型不管训练到什么地步都需要时时刻刻满足这个约束关系,特征函数
f
(
x
,
y
)
f(x,y)
f(x,y)关于经验分布
P
‾
(
X
,
Y
)
\overline P(X,Y)
P(X,Y)的期望值应该时时刻刻都是相同的,用
E
P
‾
(
f
)
E_{\overline P}(f)
EP(f)表示为:
E
P
‾
(
f
)
=
∑
x
,
y
P
‾
(
x
,
y
)
f
(
x
,
y
)
E
P
‾
(
f
)
=
E
P
(
f
)
E_{\overline P}(f)=\sum_{x,y}\overline P(x,y)f(x,y) \\ E_{\overline P}(f)=E_P(f)
EP(f)=x,y∑P(x,y)f(x,y)EP(f)=EP(f)
上式就是最大熵模型学习的约束条件,假如我们有 M M M个特征函数 f i ( x , y ) ( i = 1 , 2... , M ) f_i(x,y)(i=1,2...,M) fi(x,y)(i=1,2...,M)就有 M M M个约束条件。
而我们的最大熵模型的优化公式实际上就是一个条件熵公式:
H
(
P
)
=
−
∑
x
,
y
p
(
x
,
y
)
log
p
(
y
∣
x
)
=
−
∑
x
,
y
p
‾
(
x
)
p
(
y
∣
x
)
log
p
(
y
∣
x
)
H(P)=-\sum_{x,y}p(x,y)\log p(y|x) \\ =-\sum_{x,y}\overline p(x)p(y|x)\log p(y|x)
H(P)=−x,y∑p(x,y)logp(y∣x)=−x,y∑p(x)p(y∣x)logp(y∣x)满足约束条件然后使得该熵最大即可,最大熵模型为
P
∗
=
a
r
g
max
P
∈
C
H
(
P
)
P^*=arg\max_{P\in C}H(P)
P∗=argmaxP∈CH(P),综合给出形式化的最大熵模型:
给定数据集
{
{
x
i
,
y
i
}
}
i
=
1
N
\{\{x_i,y_i\}\}^N_{i=1}
{{xi,yi}}i=1N,特征函数
f
i
(
x
,
y
)
,
i
=
1
,
2
,
.
.
.
,
n
f_i(x,y), i=1,2,...,n
fi(x,y),i=1,2,...,n,根据经验分布得到满足约束集的模型集合C:
max
P
∈
C
H
(
P
)
=
min
P
∈
C
−
H
(
P
)
=
min
P
∈
C
∑
x
,
y
P
‾
(
x
)
P
(
y
∣
x
)
log
P
(
y
∣
x
)
s
.
t
.
E
p
(
f
i
)
=
E
P
‾
(
f
i
)
(
i
=
1
,
2
,
.
.
.
M
)
∑
y
P
(
y
∣
x
)
=
1
\max_{P\in C}H(P)=\min_{P\in C}-H(P)\\ =\min_{P\in C}\sum_{x,y}\overline P(x)P(y|x)\log P(y|x) \\ s.t. \quad E_p(f_i)=E_{\overline P}(f_i)\quad (i=1,2,...M) \\ \sum_y P(y|x)=1
P∈CmaxH(P)=P∈Cmin−H(P)=P∈Cminx,y∑P(x)P(y∣x)logP(y∣x)s.t.Ep(fi)=EP(fi)(i=1,2,...M)y∑P(y∣x)=1
这是一个带有约束条件的最优化问题,由于它是一个凸函数,同时对应的约束条件为仿射函数,根据凸优化理论,这个优化问题可以用拉格朗日函数将其转化为无约束优化函数:
L
(
P
,
w
)
=
−
H
(
P
)
+
w
0
(
1
−
∑
y
P
(
y
∣
x
)
)
+
∑
i
=
1
M
w
i
(
E
P
‾
(
f
i
)
−
E
p
(
f
i
)
)
L(P,w)=-H(P)+w_0(1-\sum_yP(y|x))+\sum^M_{i=1}w_i(E_{\overline P}(f_i)-E_p(f_i))
L(P,w)=−H(P)+w0(1−y∑P(y∣x))+i=1∑Mwi(EP(fi)−Ep(fi))
其中
w
i
(
i
=
1
,
2
,
.
.
,
m
)
w_i(i=1,2,..,m)
wi(i=1,2,..,m)为拉格朗日乘子,根据拉格朗日对偶,凸优化的原始问题:
min
P
∈
C
max
w
L
(
P
,
w
)
\min_{P\in C}\max_{w}L(P,w)
minP∈CmaxwL(P,w),其对应的拉格朗日对偶问题为:
max
w
min
P
∈
C
L
(
P
,
w
)
\max_{w}\min_{P\in C}L(P,w)
maxwminP∈CL(P,w)。由于原始问题满足凸优化理论中的KKT条件,因此原始问题的解和对偶问题的解是一致的。这样我们的损失函数的优化变成了拉格朗日对偶问题的优化。
求解对偶问题的第一步就是求
min
P
L
(
P
,
w
)
\min_PL(P,w)
minPL(P,w),这可以通过求导得到。
min
P
L
(
P
,
w
)
\min_PL(P,w)
minPL(P,w)是关于
w
w
w的函数,记为:
φ
(
w
)
=
min
P
∈
C
L
(
P
,
w
)
=
L
(
P
w
,
w
)
\varphi(w)=\min_{P\in C}L(P,w)=L(P_w,w)
φ(w)=P∈CminL(P,w)=L(Pw,w)
求
L
(
P
,
w
)
L(P,w)
L(P,w)关于
P
(
y
∣
x
)
P(y|x)
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
M
w
i
f
i
(
x
,
y
)
)
=
∑
x
,
y
P
‾
(
x
)
(
log
P
(
y
∣
x
)
+
1
−
w
0
−
∑
i
=
1
M
w
i
f
i
(
x
,
y
)
)
\frac{\partial L(P,w)}{\partial P(y|x)}=\sum_{x,y}\overline P(x)(\log P(y|x)+1)-\sum_yw_0-\sum_{x,y}(\overline P(x)\sum^M_{i=1}w_if_i(x,y)) \\ =\sum_{x,y}\overline P(x)(\log P(y|x)+1-w_0-\sum^M_{i=1}w_if_i(x,y))
∂P(y∣x)∂L(P,w)=x,y∑P(x)(logP(y∣x)+1)−y∑w0−x,y∑(P(x)i=1∑Mwifi(x,y))=x,y∑P(x)(logP(y∣x)+1−w0−i=1∑Mwifi(x,y))
令偏导数为0,可以解出
P
(
y
∣
x
)
P(y|x)
P(y∣x)关于
w
w
w的表达式如下:
P
(
y
∣
x
)
=
exp
(
∑
i
=
1
M
w
i
f
i
(
x
,
y
)
+
w
0
−
1
)
=
exp
(
∑
i
=
1
M
w
i
f
i
(
x
,
y
)
)
exp
(
1
−
w
0
)
P(y|x)=\exp(\sum^M_{i=1}w_if_i(x,y)+w_0-1)=\frac{\exp(\sum^M_{i=1}w_if_i(x,y))}{\exp(1-w_0)}
P(y∣x)=exp(i=1∑Mwifi(x,y)+w0−1)=exp(1−w0)exp(∑i=1Mwifi(x,y))
由于
∑
y
P
(
y
∣
x
)
=
1
\sum_yP(y|x)=1
∑yP(y∣x)=1,可以得到
P
w
(
y
∣
x
)
P_w(y|x)
Pw(y∣x)的表达式如下:
P
w
(
y
∣
x
)
=
1
Z
w
(
x
)
exp
(
∑
i
=
1
M
w
i
f
i
(
x
,
y
)
)
P_w(y|x)=\frac{1}{Z_w(x)}\exp(\sum^M_{i=1}w_if_i(x,y))
Pw(y∣x)=Zw(x)1exp(i=1∑Mwifi(x,y))
其中,Z_w(x)为规范化因子,定义为:
Z
w
(
x
)
=
∑
y
exp
(
∑
i
=
1
M
w
i
f
i
(
x
,
y
)
)
Z_w(x)=\sum_y\exp(\sum^M_{i=1}w_if_i(x,y))
Zw(x)=y∑exp(i=1∑Mwifi(x,y))
这样我们便得到了最大熵模型,这里的
w
i
w_i
wi代表特征函数
f
i
(
x
,
y
)
f_i(x,y)
fi(x,y)的权值,现在求其对偶问题的外部极大化即可,将最优解记作
w
∗
w^*
w∗:
w
∗
=
a
r
g
max
w
φ
(
w
)
w^*=arg\max_w\varphi(w)
w∗=argwmaxφ(w)
所以现在最大化模型转为求解
φ
(
w
)
\varphi(w)
φ(w)的极大化问题,求解出最优
w
∗
w^*
w∗后,便得到了所要求的最大熵模型,将
P
w
(
y
∣
x
)
P_w(y|x)
Pw(y∣x)带入
φ
(
w
)
\varphi(w)
φ(w),最终通过一系列极其复杂的运算,得到了需要极大化的式子:
max
P
∈
C
∑
x
,
y
P
‾
(
x
,
y
)
∑
i
=
1
n
w
i
f
i
(
x
,
y
)
+
∑
x
P
‾
(
x
)
log
Z
w
(
x
)
\max_{P\in C}\sum_{x,y}\overline P(x,y)\sum^n_{i=1}w_if_i(x,y)+\sum_x\overline P(x)\log Z_w(x)
P∈Cmaxx,y∑P(x,y)i=1∑nwifi(x,y)+x∑P(x)logZw(x)
这是一个凸优化问题,一般的梯度法、牛顿法都可解之,专门的算法有GIS IIS 算法。最后可以得到 P ( y ∣ x ) P(y|x) P(y∣x)的最终结果。
总之告诉你,这个太难了,你学不会~