最大熵模型的简单理解

小白一个,如果有问题欢迎指正。

 

 

最大熵原理

最大熵模型(maximum entropy model)由最大熵原理推导实现。而最大熵原理简单说就是概率模型学习的一个准则,最大熵原理认为,在学习模型的时候,在所有可能的概率模型(分布)中,熵最大的模型就是最好的模型。通常用约束条件来确定概率模型的集合,所以,最大熵原理也可以表述为在满足约束条件下模型集合中选取熵最大的模型。

假设离散的随机变量X的概率分布是P(X),它的熵是

                                                                          H(P)=-\sum_{x} P(x)logP(x)

熵满足下列不等式:

                                                                             0\leq H(P)\leq log|X|

式中,|X|是X的取值个数,当且仅当X的分布是均匀分布时右边的等号成立,也就是说X服从均匀分布时,熵最大。这里简单说一下,熵表示的是不确定性,比如说我们需要弄清楚一件事情,如果这件事情我们已经很确定了,甚至是常识,那么我们需要较少的信息去确定这件事情,例如太阳东边升起,如果这件事情我们不确定,那么我们需要很多信息才能去确定,比如说侦探找凶手,需要大量的证据。所以,熵就是对信息的一种度量,表示需要弄清楚某件事情的信息量。

我们来推导一下上面的熵不等式,以及等式成立的条件,利用拉格朗日乘数法求最大值。

假设目标函数为

                                                       H(p)=-p(x_{1})log p(x_{1})-p(x_{2})log p(x_{2})-...-p(x_{n})log p(x_{n})

限定的约束条件是

                                                                          p(x_{1})+p(x_{2})+...+p(x_{n})=1

构建拉格朗日函数

          L(p({x_{1}),p(x_{2}),...,p(x_{n}), \lambda )=-p(x_{1})log p(x_{1})-p(x_{2})log p(x_{2})-...-p(x_{n})log p(x_{n})+\lambda (p(x_{1})+..+p(x_{n})-1)

然后分别对每项求偏导

                                                                                         \lambda-logp(x_{1})=0

                                                                                                      \begin{matrix}. \\ . \\ . \end{matrix}

                                                                                         \lambda-logp(x_{n})=0

                                                                             p(x_{1})+p(x_{2})+...+p(x_{n})=1

求得

                                                                             p(x_{1})=p(x_{2})=...=p(x_{n})=\frac {1}{n}

代入目标函数

                                                      f(\frac {1}{n},\frac {1}{n},...,\frac {1}{n}) = -(\frac {1}{n}log\frac {1}{n}+...+\frac {1}{n}log\frac {1}{n})=-log(\frac {1}{n})=log (n)

得证。

这里求到的是最大值,所以当分布是均匀分布的时候,熵就是最大的,等号成立。

最大熵原理认为要选择的概率模型首先必须满足已有的事实,也就是约束条件,在没有更多信息的情况下,那些不确定的部分都是”等可能的“。最大熵原理通过熵的最大化表示等可能性(均匀分布就是等可能的,而均匀分布的熵也是最大的)。

最大熵模型

简单的描述一下就是:

  • 承认已知事物(认识)
  • 对未知事物不做任何假设,没有任何的偏见(也就是均匀分布)

简单总结,后续详细讲一下:

定义条件熵                                                       H(P) = H(y|x) = -\sum_{x,y}p(y,x)log (p(y|x))

模型目的                                                                       p^{*}(y|x)=arg \underset {p(y|x)\in P}{max} H(y|x)        (找到熵最大的条件概率分布)

定义特征函数                                                                           f_{i}(x,y) \in \{0, 1\}

约束条件                                                                                   \sum _{y\in Y}p(y|x)=1

                                                                                                 E(f_{i})=\tilde {E}(f_{i})

                                                                        \tilde {E}(f_{i})=\sum_{x, y}\tilde {p}(x, y)f_{i}(x, y)= \frac {1}{N}\sum _{x, y}f_{i}(x, y)        (N为样本数量)

                                                                        E(f_{i})=\sum_{x, y}p(x, y)f_{i}(x, y)= \sum_{x, y}p(x)p(y|x)f_{i}(x, y)

总之,头上带~的都是样本当中统计出来的,也就是已知的。我们需要去估计一个p(y|x)后验概率使得熵最大,最大熵模型一般用于NLP当中。  

数学定义:

假设分类模型是一个条件概率分布P(Y|X),X表示输入,Y表示输出。这个模型表示的是对于给定的输入X,以条件概率P(Y|X)输出Y。

定义:假设满足所有约束条件的模型集合为

                                                                          \mathbb{C}\equiv \{P\in \mathbb{P}|E_{p}(f_{i})=E_{\bar{p}}(f_{i}),i=1,2,..,n\}

定义在条件概率分布P(Y|X)上的条件熵为

                                                                                  H(P)=-\sum _{x,y}\tilde{p}(x)P(y|x)logP(y|x)

其中,\tilde {p}(X=x) =\frac {v(X=x)}{N}v(X=x)表示训练数据中输入x出现的频数,N表示训练样本容量。

则模型集合\mathbb{C}中条件熵H(P)最大模型称为最大熵模型。我们的目标是得到使H(P)最大的时候对应的P(y|x),这里可以对H(P)加了个负号求极小值,这样做的目的是为了使−H(P)为凸函数,方便使用凸优化的方法来求极值。

最大熵模型的学习(推导过程)

最大熵模型的学习过程就是求解最大熵模型的过程。最大熵模型的学习可以形式化为约束最优化问题。最大熵模型的学习可以形式化为约束最优化问题。即

                                                                    \underset{P\in C}{max} H(P)=-\sum_{x, y}\tilde{p}(x)P(y|x)logP(y|x)

                                                                     s.t.          E_{p}(f_{i})=E_{\tilde{p}}(f_{i}), i=1,2,...,n

                                                                                    \sum_{y}P(y|x)=1

按照习惯,将求最大值问题改写为等价的求最小值问题:

                                                                   \underset{P\in C}{min} -H(P)=\sum_{x, y}\tilde{p}(x)P(y|x)logP(y|x)

                                                                     s.t.     E_{p}(f_{i})-E_{\tilde{p}}(f_{i})=0, i=1,2,...,n

                                                                               \sum_{y}P(y|x)=1

然后通过拉格朗日乘子法,将约束最优化的原始问题转换为无约束最优化的对偶问题。通过求解对偶问题求解原始问题。

                                                L(P,w)\equiv -H(P)+w_{0}(1-\sum_{y}P(y|x))+\sum_{i=1}^{n}w_{i}(E_{\tilde{p}}(f_{i})-E_{p}(f_{i}))

                                                         =\sum_{x, y}\tilde{P}(x)P(y|x)log(P(y|x))+w_{0}(1-\sum_{y}P(y|x))+\sum_{i=1}^{n}(\sum_{x,y}\tilde{P}(x,y)f_{i}(x,y)-\sum_{x,y}\tilde{P}(x)P(y|x)f_{i}(x,y))

最优化的原始问题是

                                                                                  \underset{P \in C}{min} \underset{w}{max} L(P,w)

对偶问题是

                                                                                 \underset{w}{max}  \underset{P \in C}{min}  L(P,w)

由于拉格朗日函数L(P,w)是P的凸函数,原始问题的解与对偶问题的解是等价的(后续证明我有时间会写在另一个文章里面)。所以这样就可以通过求解对偶问题来求解原始问题的解了。

所以,求L(P,w)P(y|x)的偏导数(之前写过的模型目的就是为了求P(y|x)所以对其求偏导)

                                   \frac {\partial L(P,w) }{ \partial P(y|x)} =\sum_{x,y}\tilde {P}(x)(log P(y|x)+1)-\sum_{y}w_{0}-\sum_{x,y}(\tilde {P}(x)\sum_{i=1}^{n}w_{i}f_{i}(x,y))=\sum_{x,y}\tilde {P}(x)(log P(y|x)+1-w_{0}-\sum_{i=1}^{n}w_{i}f_{i}(x,y))

令偏导数等于0,解得

                                             P(y|x) = exp(\sum_{i=1}^{n}w_{i}f_{i}(x, y)+w_{0}-1)=\frac{exp(\sum_{i=1}^{n}w_{i}f_{i}(x, y))}{exp(1-w_{0})}

这个时候求出来的分母,并不是真正的分母,因为约束条件\sum_{y}P(y|x)=1需要归一化操作,所以我们假设Z_{w}(x)为规范化因子,得到

                                                                  P_{w}(y|x) = \frac{1}{Z_{w}(x)}exp(\sum_{i=1}^{n}w_{i}f_{i}(x, y))

其中                                                                Z_{w}(x) = \sum_{y}exp(\sum_{i=1}^{n}w_{i}f_{i}(x, y))                (将上面Pw的式子带回约束条件当中,得到规范化因子)

在李航的统计学习与方法里面证明了最大熵模型学习中的对偶函数等价于最大熵模型的对数似然函数,所以最大熵模型的学习问题就转换为具体求解对数似然函数极大化或对偶函数极大化的问题。这里就不进行公式的推导,直接简单的写一些结论。

  1. 二者具有完全相同的目标函数。
  2. 根据MLE(极大似然估计)的正确性,可以断定:最大熵的解(无偏的对待不确定性)同时是最符合样本数据分布的解,进一步证明了最大熵模型的合理性。
  3. 熵表示的是不确定程度,似然表示与知识的吻合程度,最大熵模型表示对不确定性的无偏分配,最大似然估计表示对知识的无偏理解,所以二者可以理解为互补的关系。

对于参数w的求解

可以使用IIS(改进的迭代尺度法)是目前最大熵模型的最优化算法,优于梯度下降算法,但是工业界使用最多的仍然是梯度下降算法。

简单描述一下IIS的思想

假设最大熵模型当前的参数向量是w,希望找到新的参数向量w+a,使得模型的对数似然函数值L增加。重复这一过程,知道找到对数似然函数的最大值。

顺带一提

其实最大熵模型(MaxEnt)与之前的logistic regression/softmax regression模型它们之间形式上是等价的。可以对比一下两者的目标函数就可以发现。最大熵模型当中,

当y=1时,P_{w}(y=1|x) = \frac {exp(w\cdot x)}{1+exp(w \cdot x)}

当y=0时,P_{w}(y=0|x) = \frac {1}{1+exp(w \cdot x)}

综上,获取到 LR模型的表示。事实证明,所谓 LR模型,其本质上就是最大熵模型,这也从侧面反映了最大熵模型中特征函数的构建其艰难,抛弃原始的0,1二值函数,而由特征值代替,就获得了 LR 模型。[公式][公式]

提问

Q:什么是最大熵?

A:熵是随机变量不确定性的度量,不确定性越大,熵值越大;若随机变量退化成定值,熵为0。如果没有外界干扰,随机变量总是趋向于无序,在经过足够时间的稳定演化,它应该能够达到的最大程度的熵。      

为了准确的估计随机变量的状态,我们一般习惯性最大化熵,认为在所有可能的概率模型(分布)的集合中,熵最大的模型是最好的模型。换言之,在已知部分知识的前提下,关于未知分布最合理的推断就是符合已知知识最不确定或最随机的推断,其原则是承认已知事物(知识),且对未知事物不做任何假设,没有任何偏见。

 

 

参考

李航. 统计学习方法[M]. 北京:清华大学出版社,2012

https://zhuanlan.zhihu.com/p/68423193    (从最大熵模型解释逻辑回归)

 

如果需要了解机器算法可以在评论留言,我会尽可能的更新出来,也欢迎大家可以提出建议,谢谢。

                                                                                                                                   

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值