最大熵模型求解

上一篇文章中详细介绍最大熵模型,这里我们讲一下其求解
最大熵模型的求解可以形式化为约束最优化问题:
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(yx)logP(yx)PC 约束 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..nyP(yx)=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} minH(P)=x,yP~(x)P(yx)logP(yx)PC
使用拉格朗日乘子法来解决这个问题,引入拉格朗日乘子 λ 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(1yP(yx))+i=1nλ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(yx)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(yx)logP(yx)+λ0(1yP(yx))+i=1nλi(x,yP~(x,y)fi(x,y)x,yP~(x)P(yx)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,λ)PCλ
为甚么这个优化问题要先求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(yx)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,λ)λPC
这里先求min,对 L ( P , λ ) L(P,\lambda) L(P,λ) P ( y ∣ x ) P(y|x) P(yx)的偏导数:
∂ 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(yx)L(P,λ)=x,yP~(x)(logP(yx)+1)y(λ0)x,y(P~(x)i=1nλifi(x,y))=x,yP~(x)(logP(yx)+1λ0i=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(yx)=exp(i=1nλifi(x,y)+λ01)=exp(1λ0)exp(i=1nλifi(x,y))1由于 ∑ y P ( y ∣ x ) = 1 \sum_yP(y|x)=1 yP(yx)=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λ(yx)=Zλ(x)1(exp(i=1nλ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)=yexp(i=1nλifi(x,y))称为规范化因子。将求得的 P λ ( y ∣ x ) P_\lambda(y|x) Pλ(yx)带入 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λ,λ)PC称为对偶函数。将其解记为:
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λ(yx)PC
这一步的推导如下
对(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)} yP(yx)=yexp(1λ0)exp(i=1nλifi(x,y)),由于 ∑ y P ( y ∣ x ) = 1 \sum_yP(y|x)=1 yP(yx)=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=yexp(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)=yexp(i=1nλ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λ(yx)带入 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λ(yx)logPλ(yx)+i=1nλi(x,yP~(x,y)fi(x,y)x,yP~(x)Pλ(yx)fi(x,y))=x,yP~(x,y)i=1nλifi(x,y)+x,yP~(x)Pλ(yx)(logPλ(yx)i=1nλifi(x,y))=x,yP~(x,y)i=1nλifi(x,y)x,yP~(x)Pλ(yx)logZλ(x)=x,yP~(x,y)i=1nλifi(x,y)xP~(x)logZλ(x)(2)由于求 P λ ( y ∣ x ) P_\lambda(y|x) Pλ(yx)使用 ∑ y P ( y ∣ x ) = 1 \sum_yP(y|x)=1 yP(yx)=1所以 λ 0 ( 1 − ∑ y P ( y ∣ x ) ) \lambda_0\left(1-\sum_yP(y|x)\right) λ0(1yP(yx))就没有了。
以上就是对偶函数的表示,下面证明其与最大熵模型的极大似然估计(这篇文章中有讲极大似然估计)等价。已知训练数据的经验概率分布 P ~ ( x , y ) \tilde{P}(x,y) P~(x,y),则条件概率分布 P ( Y ∣ X ) P(Y|X) P(YX)的对数似然函数表示为: 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,yP(yx)P~(x,y)=x,yP~(x,y)logP(yx),带入 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λ(yx)=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(yx)=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λ(yx)求导,可得:
∂ 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}') λilogPλ=x,yfi(x,y)x,yyP(yx,λ)fi(x,y)
可以看出梯度等于训练数据分布的特征期望与模型特征期望的差。当梯度为0时,得到的概率分布刚好满足约束条件(这一部分可以看参考书3 P 353 P_{353} P353)。

参考书1:概率论与数理统计 浙江大学 第四版
参考书2:统计学习方法 李航
参考书3:强化学习精要:核心算法与TensorFlow实现

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值