上一篇文章中详细介绍最大熵模型,这里我们讲一下其求解
最大熵模型的求解可以形式化为约束最优化问题:
m
a
x
H
(
P
)
=
−
∑
x
,
y
P
~
(
x
)
P
(
y
∣
x
)
l
o
g
P
(
y
∣
x
)
P
∈
C
\begin{matrix} max H(P)=-\sum_{x,y}\tilde{P}(x)P(y|x)logP(y|x)\\ P\in C\qquad\qquad\qquad\qquad\qquad\qquad\qquad \end{matrix}
maxH(P)=−∑x,yP~(x)P(y∣x)logP(y∣x)P∈C 约束
s
.
t
.
E
P
(
f
i
)
=
E
P
~
(
f
i
)
,
i
=
1
,
2
,
3..
n
∑
y
P
(
y
∣
x
)
=
1
s.t. \qquad\begin{matrix} E_{P}(f_i)=E_{\tilde{P}}(f_i),i=1,2,3..n \\ \sum_{y}P(y|x)=1 \end{matrix}
s.t.EP(fi)=EP~(fi),i=1,2,3..n∑yP(y∣x)=1
改为求解最小值问题:
m
i
n
−
H
(
P
)
=
∑
x
,
y
P
~
(
x
)
P
(
y
∣
x
)
l
o
g
P
(
y
∣
x
)
P
∈
C
\begin{matrix} min -H(P)=\sum_{x,y}\tilde{P}(x)P(y|x)logP(y|x)\\ P\in C\qquad\qquad\qquad\qquad\qquad\qquad\qquad \end{matrix}
min−H(P)=∑x,yP~(x)P(y∣x)logP(y∣x)P∈C
使用拉格朗日乘子法来解决这个问题,引入拉格朗日乘子
λ
0
,
λ
1
,
λ
2
.
.
.
λ
n
\lambda_0,\lambda_1,\lambda_2...\lambda_n
λ0,λ1,λ2...λn,定义拉格朗日函数为
L
(
P
,
λ
)
L(P,\lambda)
L(P,λ):
L
(
P
,
λ
)
=
−
H
(
P
)
+
λ
0
(
1
−
∑
y
P
(
y
∣
x
)
)
+
∑
i
=
1
n
λ
i
(
E
P
~
(
f
i
)
−
E
P
(
f
i
)
)
L(P,\lambda)=-H(P)+\lambda_0\left(1-\sum_yP(y|x)\right)+\sum_{i=1}^n\lambda_i\left(E_{\tilde{P}}(f_i)-E_{P}(f_i)\right)
L(P,λ)=−H(P)+λ0(1−y∑P(y∣x))+i=1∑nλi(EP~(fi)−EP(fi))带入上一篇文章
E
P
~
(
f
)
=
∑
x
,
y
P
~
(
x
,
y
)
f
(
x
,
y
)
E_{\tilde{P}}(f)=\sum_{x,y}\tilde{P}(x,y)f(x,y)
EP~(f)=∑x,yP~(x,y)f(x,y)和
E
p
(
f
)
=
∑
x
,
y
P
~
(
x
)
P
(
y
∣
x
)
f
(
x
,
y
)
E_{p}(f)=\sum_{x,y}\tilde{P}(x)P(y|x)f(x,y)
Ep(f)=∑x,yP~(x)P(y∣x)f(x,y)有:
L
(
P
,
λ
)
=
∑
x
,
y
P
~
(
x
)
P
(
y
∣
x
)
l
o
g
P
(
y
∣
x
)
+
λ
0
(
1
−
∑
y
P
(
y
∣
x
)
)
+
∑
i
=
1
n
λ
i
(
∑
x
,
y
P
~
(
x
,
y
)
f
i
(
x
,
y
)
−
∑
x
,
y
P
~
(
x
)
P
(
y
∣
x
)
f
i
(
x
,
y
)
)
\begin{matrix} L(P,\lambda)=\sum_{x,y}\tilde{P}(x)P(y|x)logP(y|x)+\lambda_0\left(1-\sum_yP(y|x)\right)\\ +\sum_{i=1}^n\lambda_i\left(\sum_{x,y}\tilde{P}(x,y)f_i(x,y)-\sum_{x,y}\tilde{P}(x)P(y|x)f_i(x,y)\right) \end{matrix}
L(P,λ)=∑x,yP~(x)P(y∣x)logP(y∣x)+λ0(1−∑yP(y∣x))+∑i=1nλi(∑x,yP~(x,y)fi(x,y)−∑x,yP~(x)P(y∣x)fi(x,y))
最优化的原始问题是:
m
i
n
m
a
x
L
(
P
,
λ
)
P
∈
C
λ
\begin{matrix} min \quad max \quad L(P,\lambda)\\ P\in C\quad \lambda\qquad\qquad\quad \end{matrix}
minmaxL(P,λ)P∈Cλ
为甚么这个优化问题要先求max再求min,因为条件中有
E
P
(
f
i
)
−
E
P
~
(
f
i
)
=
0
E_{P}(f_i)-E_{\tilde{P}}(f_i)=0
EP(fi)−EP~(fi)=0和
∑
y
P
(
y
∣
x
)
−
1
=
0
\sum_{y}P(y|x)-1=0
∑yP(y∣x)−1=0,若不满足这两个条件那么
L
(
P
,
λ
)
L(P,\lambda)
L(P,λ)可能趋于无穷大或无穷小。或者可以这样理解,我们最终是要求最小值,而这个最小值应该是尽量大范围内的最小值,所以应该先求最大值,然后再求最小值。
对偶问题:
m
a
x
m
i
n
L
(
P
,
λ
)
λ
P
∈
C
\begin{matrix} max \quad min \quad L(P,\lambda)\\ \lambda\quad\quad P\in C\qquad\qquad \end{matrix}
maxminL(P,λ)λP∈C
这里先求min,对
L
(
P
,
λ
)
L(P,\lambda)
L(P,λ)求
P
(
y
∣
x
)
P(y|x)
P(y∣x)的偏导数:
∂
L
(
P
,
λ
)
∂
P
(
y
∣
x
)
=
∑
x
,
y
P
~
(
x
)
(
l
o
g
P
(
y
∣
x
)
+
1
)
−
∑
y
(
λ
0
)
−
∑
x
,
y
(
P
~
(
x
)
∑
i
=
1
n
λ
i
f
i
(
x
,
y
)
)
=
∑
x
,
y
P
~
(
x
)
(
l
o
g
P
(
y
∣
x
)
+
1
−
λ
0
−
∑
i
=
1
n
λ
i
f
i
(
x
,
y
)
)
\begin{matrix}\frac{ \partial L(P,\lambda)}{ \partial P(y|x)}=\sum_{x,y}\tilde{P}(x)(log P(y|x)+1)-\sum_y(\lambda_0)-\sum_{x,y}(\tilde{P}(x)\sum_{i=1}^n\lambda_if_i(x,y))\\ =\sum_{x,y}\tilde{P}(x)\left(log P(y|x)+1-\lambda_0-\sum_{i=1}^n\lambda_if_i(x,y)\right) \end{matrix}
∂P(y∣x)∂L(P,λ)=∑x,yP~(x)(logP(y∣x)+1)−∑y(λ0)−∑x,y(P~(x)∑i=1nλifi(x,y))=∑x,yP~(x)(logP(y∣x)+1−λ0−∑i=1nλifi(x,y))令偏导数等于0,解得:
P
(
y
∣
x
)
=
e
x
p
(
∑
i
=
1
n
λ
i
f
i
(
x
,
y
)
+
λ
0
−
1
)
=
e
x
p
(
∑
i
=
1
n
λ
i
f
i
(
x
,
y
)
)
e
x
p
(
1
−
λ
0
)
(
1
)
P(y|x)=exp(\sum_{i=1}^n \lambda_if_i(x,y)+\lambda_0-1)=\frac{exp(\sum_{i=1}^n\lambda_if_i(x,y))}{exp(1-\lambda_0)}(1)
P(y∣x)=exp(i=1∑nλifi(x,y)+λ0−1)=exp(1−λ0)exp(∑i=1nλifi(x,y))(1)由于
∑
y
P
(
y
∣
x
)
=
1
\sum_yP(y|x)=1
∑yP(y∣x)=1得
P
λ
(
y
∣
x
)
=
1
Z
λ
(
x
)
(
e
x
p
(
∑
i
=
1
n
λ
i
f
i
(
x
,
y
)
)
)
P_\lambda(y|x)=\frac{1}{Z_\lambda(x)}\left(exp(\sum_{i=1}^n\lambda_if_i(x,y))\right)
Pλ(y∣x)=Zλ(x)1(exp(i=1∑nλifi(x,y)))其中,
Z
λ
(
x
)
=
∑
y
e
x
p
(
∑
i
=
1
n
λ
i
f
i
(
x
,
y
)
)
Z_\lambda(x)=\sum_yexp(\sum_{i=1}^n\lambda_if_i(x,y))
Zλ(x)=y∑exp(i=1∑nλifi(x,y))称为规范化因子。将求得的
P
λ
(
y
∣
x
)
P_\lambda(y|x)
Pλ(y∣x)带入
L
(
P
,
λ
)
L(P,\lambda)
L(P,λ)中就是内部的最小化结果
L
(
P
λ
,
λ
)
L(P_\lambda,\lambda)
L(Pλ,λ)。将求min的结果表示为:
Ψ
(
λ
)
=
m
i
n
L
(
P
,
λ
)
=
L
(
P
λ
,
λ
)
P
∈
C
\Psi(\lambda)=\begin{matrix} min\quad L(P,\lambda)=L(P_\lambda,\lambda)\\ P\in C \qquad\qquad\qquad\qquad\quad \end{matrix}
Ψ(λ)=minL(P,λ)=L(Pλ,λ)P∈C称为对偶函数。将其解记为:
P
λ
=
a
r
g
m
i
n
L
(
P
,
λ
)
=
P
λ
(
y
∣
x
)
P
∈
C
P_\lambda=\begin{matrix} argmin\quad L(P,\lambda)=P_\lambda(y|x)\\ P\in C \qquad\qquad\qquad\qquad\quad \end{matrix}
Pλ=argminL(P,λ)=Pλ(y∣x)P∈C
这一步的推导如下:
对(1)式两边同时加上
∑
y
\sum_y
∑y:
∑
y
P
(
y
∣
x
)
=
∑
y
e
x
p
(
∑
i
=
1
n
λ
i
f
i
(
x
,
y
)
)
e
x
p
(
1
−
λ
0
)
\sum_yP(y|x)=\sum_y\frac{exp(\sum_{i=1}^n\lambda_if_i(x,y))}{exp(1-\lambda_0)}
y∑P(y∣x)=y∑exp(1−λ0)exp(∑i=1nλifi(x,y)),由于
∑
y
P
(
y
∣
x
)
=
1
\sum_yP(y|x)=1
∑yP(y∣x)=1,所以上式得:
1
=
∑
y
e
x
p
(
∑
i
=
1
n
λ
i
f
i
(
x
,
y
)
)
e
x
p
(
1
−
λ
0
)
1=\sum_y\frac{exp(\sum_{i=1}^n\lambda_if_i(x,y))}{exp(1-\lambda_0)}
1=y∑exp(1−λ0)exp(∑i=1nλifi(x,y))此时分子和y无关,所以可以解出:
e
x
p
(
1
−
λ
0
)
=
∑
y
e
x
p
(
∑
i
=
1
n
λ
i
f
i
(
x
,
y
)
)
exp(1-\lambda_0)=\sum_yexp(\sum_{i=1}^n\lambda_if_i(x,y))
exp(1−λ0)=y∑exp(i=1∑nλifi(x,y))带入(1)式中,这就是这一步的推导。
接下来就是外部的极大化问题:
m
a
x
Ψ
(
λ
)
λ
\begin{matrix} max \Psi(\lambda)\\ \lambda\quad\quad \end{matrix}
maxΨ(λ)λ,将其解记为
λ
∗
\lambda^*
λ∗:
λ
∗
=
a
r
g
m
a
x
Ψ
(
λ
)
λ
\lambda^*=\begin{matrix} argmax \Psi(\lambda)\\ \lambda\quad\quad \end{matrix}
λ∗=argmaxΨ(λ)λ将求得的
P
λ
(
y
∣
x
)
P_\lambda(y|x)
Pλ(y∣x)带入
L
(
P
,
λ
)
L(P,\lambda)
L(P,λ)中就是内部的最小化结果
L
(
P
λ
,
λ
)
L(P_\lambda,\lambda)
L(Pλ,λ):
Ψ
(
λ
)
=
L
(
P
λ
,
λ
)
=
∑
x
,
y
P
~
(
x
)
P
λ
(
y
∣
x
)
l
o
g
P
λ
(
y
∣
x
)
+
∑
i
=
1
n
λ
i
(
∑
x
,
y
P
~
(
x
,
y
)
f
i
(
x
,
y
)
−
∑
x
,
y
P
~
(
x
)
P
λ
(
y
∣
x
)
f
i
(
x
,
y
)
)
=
∑
x
,
y
P
~
(
x
,
y
)
∑
i
=
1
n
λ
i
f
i
(
x
,
y
)
+
∑
x
,
y
P
~
(
x
)
P
λ
(
y
∣
x
)
(
l
o
g
P
λ
(
y
∣
x
)
−
∑
i
=
1
n
λ
i
f
i
(
x
,
y
)
)
=
∑
x
,
y
P
~
(
x
,
y
)
∑
i
=
1
n
λ
i
f
i
(
x
,
y
)
−
∑
x
,
y
P
~
(
x
)
P
λ
(
y
∣
x
)
l
o
g
Z
λ
(
x
)
=
∑
x
,
y
P
~
(
x
,
y
)
∑
i
=
1
n
λ
i
f
i
(
x
,
y
)
−
∑
x
P
~
(
x
)
l
o
g
Z
λ
(
x
)
(
2
)
\begin{matrix} \Psi(\lambda)=L(P_\lambda,\lambda)=\sum_{x,y}\tilde{P}(x)P_\lambda(y|x)logP_\lambda(y|x)\\ \qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad+\sum_{i=1}^n\lambda_i\left(\sum_{x,y}\tilde{P}(x,y)f_i(x,y)-\sum_{x,y}\tilde{P}(x)P_\lambda(y|x)f_i(x,y)\right)\\ =\sum_{x,y}\tilde{P}(x,y)\sum_{i=1}^n\lambda_if_i(x,y)+\sum_{x,y}\tilde{P}(x)P_\lambda(y|x)(logP_\lambda(y|x)-\sum_{i=1}^n\lambda_if_i(x,y))\\ =\sum_{x,y}\tilde{P}(x,y)\sum_{i=1}^n\lambda_if_i(x,y)-\sum_{x,y}\tilde{P}(x)P_\lambda(y|x)logZ_\lambda(x)\\ =\sum_{x,y}\tilde{P}(x,y)\sum_{i=1}^n\lambda_if_i(x,y)-\sum_{x}\tilde{P}(x)logZ_\lambda(x)\qquad\qquad(2) \end{matrix}
Ψ(λ)=L(Pλ,λ)=∑x,yP~(x)Pλ(y∣x)logPλ(y∣x)+∑i=1nλi(∑x,yP~(x,y)fi(x,y)−∑x,yP~(x)Pλ(y∣x)fi(x,y))=∑x,yP~(x,y)∑i=1nλifi(x,y)+∑x,yP~(x)Pλ(y∣x)(logPλ(y∣x)−∑i=1nλifi(x,y))=∑x,yP~(x,y)∑i=1nλifi(x,y)−∑x,yP~(x)Pλ(y∣x)logZλ(x)=∑x,yP~(x,y)∑i=1nλifi(x,y)−∑xP~(x)logZλ(x)(2)由于求
P
λ
(
y
∣
x
)
P_\lambda(y|x)
Pλ(y∣x)使用
∑
y
P
(
y
∣
x
)
=
1
\sum_yP(y|x)=1
∑yP(y∣x)=1所以
λ
0
(
1
−
∑
y
P
(
y
∣
x
)
)
\lambda_0\left(1-\sum_yP(y|x)\right)
λ0(1−∑yP(y∣x))就没有了。
以上就是对偶函数的表示,下面证明其与最大熵模型的极大似然估计(这篇文章中有讲极大似然估计)等价。已知训练数据的经验概率分布
P
~
(
x
,
y
)
\tilde{P}(x,y)
P~(x,y),则条件概率分布
P
(
Y
∣
X
)
P(Y|X)
P(Y∣X)的对数似然函数表示为:
L
P
~
(
P
)
=
l
o
g
∏
x
,
y
P
(
y
∣
x
)
P
~
(
x
,
y
)
=
∑
x
,
y
P
~
(
x
,
y
)
l
o
g
P
(
y
∣
x
)
L_{\tilde{P}}(P)=log\prod _{x,y}P(y|x)^{\tilde{P}(x,y)}=\sum_{x,y}\tilde{P}(x,y)logP(y|x)
LP~(P)=logx,y∏P(y∣x)P~(x,y)=x,y∑P~(x,y)logP(y∣x),带入
P
λ
P_\lambda
Pλ有:
L
P
~
(
P
λ
)
=
∑
x
,
y
P
~
(
x
,
y
)
l
o
g
P
λ
(
y
∣
x
)
=
∑
x
,
y
P
~
(
x
,
y
)
∑
i
=
1
n
λ
i
f
i
(
x
,
y
)
−
∑
x
,
y
P
~
(
x
,
y
)
l
o
g
Z
λ
(
x
)
=
∑
x
,
y
P
~
(
x
,
y
)
∑
i
=
1
n
λ
i
f
i
(
x
,
y
)
−
∑
x
P
~
(
x
)
l
o
g
Z
λ
(
x
)
\begin{matrix} L_{\tilde{P}}(P_\lambda)=\sum_{x,y}\tilde{P}(x,y)logP_\lambda(y|x)\\ =\sum_{x,y}\tilde{P}(x,y)\sum_{i=1}^n\lambda_if_i(x,y)-\sum_{x,y}\tilde{P}(x,y)logZ_\lambda(x)\\ =\sum_{x,y}\tilde{P}(x,y)\sum_{i=1}^n\lambda_if_i(x,y)-\sum_{x}\tilde{P}(x)logZ_\lambda(x) \end{matrix}
LP~(Pλ)=∑x,yP~(x,y)logPλ(y∣x)=∑x,yP~(x,y)∑i=1nλifi(x,y)−∑x,yP~(x,y)logZλ(x)=∑x,yP~(x,y)∑i=1nλifi(x,y)−∑xP~(x)logZλ(x)这里也使用
∑
y
P
(
y
∣
x
)
=
1
\sum_yP(y|x)=1
∑yP(y∣x)=1。可以看出:
Ψ
(
λ
)
=
L
P
~
(
P
λ
)
\Psi(\lambda)=L_{\tilde{P}}(P_\lambda)
Ψ(λ)=LP~(Pλ)所以最大熵模型的求解最终就是求解对数似然函数极大化或是对偶函数极大化。
下面我们用**梯度下降(SGD)**的方法求解这个优化,由于对数似然函数极大化与对偶函数极大化等价,所以我们就直接对对数似然函数
L
P
~
(
P
λ
)
=
∑
x
,
y
P
~
(
x
,
y
)
l
o
g
P
λ
(
y
∣
x
)
L_{\tilde{P}}(P_\lambda)=\sum_{x,y}\tilde{P}(x,y)logP_\lambda(y|x)
LP~(Pλ)=∑x,yP~(x,y)logPλ(y∣x)求导,可得:
∂
l
o
g
P
λ
∂
λ
i
=
∑
x
,
y
f
i
(
x
,
y
)
−
∑
x
,
y
∑
y
′
P
(
y
′
∣
x
,
λ
)
f
i
(
x
,
y
′
)
\frac{\partial logP_\lambda}{\partial\lambda_i}=\sum_{x,y}f_i(x,y)-\sum_{x,y}\sum_{{y}'}P({y}'|x,\lambda)f_i(x,{y}')
∂λi∂logPλ=x,y∑fi(x,y)−x,y∑y′∑P(y′∣x,λ)fi(x,y′)
可以看出梯度等于训练数据分布的特征期望与模型特征期望的差。当梯度为0时,得到的概率分布刚好满足约束条件(这一部分可以看参考书3
P
353
P_{353}
P353)。
参考书1:概率论与数理统计 浙江大学 第四版
参考书2:统计学习方法 李航
参考书3:强化学习精要:核心算法与TensorFlow实现