机器学习 之 最大熵模型

本文介绍了最大熵模型的基本概念,从熵的物理意义出发,阐述了如何在信息论背景下应用到概率模型中。重点讲解了模型在有约束条件下的优化过程,包括特征函数、条件熵和拉格朗日乘子法。适合理解概率模型与信息理论结合的实践应用。
Python3.8

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

最大熵模型

最大熵模型(Maximum Entropy Model,以下简称MaxEnt),最大熵模型是什么意思呢?

熵,最初是一个热力学的概念。表示的是混乱的程度,熵越高,表示越混乱;熵越低,表示越整齐,越有规律。宇宙中的事物都有自发变得更混乱的倾向,也就是说熵会不断增加,这就是 熵增原理 。例如一根线会折叠穿插越来越乱,一股烟最终会弥漫到整个瓶子,或者说熵不断增大。

在历史的发展中,熵的概念进入了很多学科的视野。上世纪40年代,香农首先在信息论中引入了信息熵的概念。这里信息熵用来表示随机变量不确定度的度量,不确定度越大,熵值越大。极限情况,当一个随机变量均匀分布时,熵值最大;完全确定时,熵值为0。

例如这里有两个区域,你完全不知道这两个区域的所有信息,那么你认为这一只蜂后最后在哪里筑巢呢?你凭什么认为这只蜂后在AAA区域筑巢的概率是13\frac{1}{3}31,而在BBB区域筑巢的概率是23\frac{2}{3}32?因为你不知道两个区域的任何信息,你只能认为这只蜂后在这两个区域筑巢的概率都是12\frac{1}{2}21,而两个区域筑巢概率都是12\frac{1}{2}21的这个模型就是最大熵模型。因此在求解概率模型时,当没有任何约束条件则只需找到熵最大的模型。

如果模型有一些约束条件后,例如AAA区域芳草鲜美,而BBB区域则寸草不生,你这时候可能估计蜂后在AAA区域筑巢的概率是23\frac{2}{3}32,在BBB区域筑巢的概率是13\frac{1}{3}31,也就是说,我们在这时候设计模型就必须考虑这个约束了,我们很明确知道蜂后更倾向于在AAA区域筑巢,在AAA区域筑巢的概率比在BBB区域筑巢的概率大,那么蜂后在AAA区域筑巢的概率究竟是多大呢?根据最大熵理论,我们只要在满足约束的条件下找熵最大的模型就可以了,在最大熵模型下的蜂后在AAA区域筑巢的概率就是我们要求的概率。

信息论之父克劳德·艾尔伍德·香农第一次用数学语言阐明了概率与信息熵的关系:
H(X)=−∑i=1np(xi)log⁡p(xi)H(X)=-\sum^n_{i=1}p(x_i)\log p(x_i)H(X)=i=1np(xi)logp(xi)

其中nnn代表XXXnnn种不同的离散取值。而p(xi)p(x_i)p(xi)代表了XXX取值为xix_ixi的概率,log⁡\loglog为以222或者eee为底的对数。

从公式中我们可以知道,信息熵描述的是这个随机变量的平均不确定度,为了满足两个独立随机变量所产生的不确定性应等于各自不确定性之和,即可加性,因此对概率取对数,又添加了一个负号使最终结果恒为正。从这个例子我们知道,如果这个随机变量十分确定,例如其概率恒为0或恒为1,那么这个式子的最终结果是0;如果这个随机变量完全不确定,即其分布是均匀分布,这时候就是最大值,符合熵的定义。

熟悉了一个变量XXX的熵,很容易推广到多个变量的联合熵,这里给出两个变量XXXYYY的联合熵表达式:
H(X,Y)=−∑i=1np(xi,yi)log⁡p(xi,yi)H(X,Y)=-\sum_{i=1}^np(x_i,y_i)\log p(x_i,y_i)H(X,Y)=i=1np(xi,yi)logp(xi,yi)

有了联合熵,又可以得到条件熵的表达式H(Y∣X)H(Y|X)H(YX),条件熵类似于条件概率,它度量了我们的Y在知道X以后剩下的不确定性(例如我们已经知道这两个区域是否水草丰茂,接下来我们想知道蜂后在哪里筑巢的概率)。表达式如下:
H(X∣Y)=∑x∈Xp(x)H(Y∣X=x)=−∑x∈Xp(x)∑y∈Yp(y∣x)log⁡p(y∣x)=−∑x∈X∑y∈Yp(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(XY)=xXp(x)H(YX=x)=xXp(x)yYp(yx)logp(yx)=xXyYp(x,y)logp(yx)

在这里我们的最大熵模型假设分类模型是一个以环境参数(例如温度,湿度,风速)为特征,以黄蜂种群是否存在作为输出的模型,因此这是一个条件概率分布P(Y∣X)P(Y|X)P(YX)(XXX为特征,即环境参数,YYY为输出,即黄蜂出现概率)。

在这里,我们的最大熵模型的约束条件就是环境参数,我们在worldclim网站下载了华盛顿州12个月的月最高温度,月最低温度,月平均风速等等,作为已知的信息,又用机器视觉的方法挑选了3000多张照片并找到了相当数量的目击黄蜂事件的位置坐标,这些已知的信息就是约束条件,我们的目标就是在这些约束条件下,用最大熵模型选择一个最好的分类类型。

我们将这些数据组成训练集(x1,y1),(x2,y2),...,(xm,ym)(x_1,y_1),(x_2,y_2),...,(x_m,y_m)(x1,y1),(x2,y2),...,(xm,ym),其中xxxnnn维特征向量(即环境参数,用温度,湿度,风速等信息组成的一个nnn维向量),yyy为类别输出(黄蜂是否出现)。组成这个训练集后,我们可以得到总体联合分布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,YX,YX,Y同时出现的次数除以样本总数mmm。同样,我们也可以计算出边缘分布P(X)P(X)P(X)的经验分布P‾(X)\overline P(X)P(X)P‾(X)\overline P(X)P(X)即为训练集中XXX出现的次数除以样本总数mmm

约束条件还可以用一个特征函数f(x,y)f(x,y)f(x,y)表示。可以认为只要出现在训练集中出现的(xi,yi)(x_i,y_i)(xi,yi),其f(xi,yi)=1f(x_i,y_i)=1f(xi,yi)=1,即:
f(x,y)={1x,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)的期望值应该时时刻刻都是相同的,用EP‾(f)E_{\overline P}(f)EP(f)表示为:
EP‾(f)=∑x,yP‾(x,y)f(x,y)EP‾(f)=EP(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,yP(x,y)f(x,y)EP(f)=EP(f)

上式就是最大熵模型学习的约束条件,假如我们有MMM个特征函数fi(x,y)(i=1,2...,M)f_i(x,y)(i=1,2...,M)fi(x,y)(i=1,2...,M)就有MMM个约束条件。

而我们的最大熵模型的优化公式实际上就是一个条件熵公式:
H(P)=−∑x,yp(x,y)log⁡p(y∣x)=−∑x,yp‾(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,yp(x,y)logp(yx)=x,yp(x)p(yx)logp(yx)满足约束条件然后使得该熵最大即可,最大熵模型为P∗=argmax⁡P∈CH(P)P^*=arg\max_{P\in C}H(P)P=argmaxPCH(P),综合给出形式化的最大熵模型:

给定数据集{{xi,yi}}i=1N\{\{x_i,y_i\}\}^N_{i=1}{{xi,yi}}i=1N,特征函数fi(x,y),i=1,2,...,nf_i(x,y), i=1,2,...,nfi(x,y),i=1,2,...,n,根据经验分布得到满足约束集的模型集合C:
max⁡P∈CH(P)=min⁡P∈C−H(P)=min⁡P∈C∑x,yP‾(x)P(y∣x)log⁡P(y∣x)s.t.Ep(fi)=EP‾(fi)(i=1,2,...M)∑yP(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)=1PCmaxH(P)=PCminH(P)=PCminx,yP(x)P(yx)logP(yx)s.t.Ep(fi)=EP(fi)(i=1,2,...M)yP(yx)=1

这是一个带有约束条件的最优化问题,由于它是一个凸函数,同时对应的约束条件为仿射函数,根据凸优化理论,这个优化问题可以用拉格朗日函数将其转化为无约束优化函数:
L(P,w)=−H(P)+w0(1−∑yP(y∣x))+∑i=1Mwi(EP‾(fi)−Ep(fi))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(1yP(yx))+i=1Mwi(EP(fi)Ep(fi))
其中wi(i=1,2,..,m)w_i(i=1,2,..,m)wi(i=1,2,..,m)为拉格朗日乘子,根据拉格朗日对偶,凸优化的原始问题:min⁡P∈Cmax⁡wL(P,w)\min_{P\in C}\max_{w}L(P,w)minPCmaxwL(P,w),其对应的拉格朗日对偶问题为:max⁡wmin⁡P∈CL(P,w)\max_{w}\min_{P\in C}L(P,w)maxwminPCL(P,w)。由于原始问题满足凸优化理论中的KKT条件,因此原始问题的解和对偶问题的解是一致的。这样我们的损失函数的优化变成了拉格朗日对偶问题的优化。

求解对偶问题的第一步就是求min⁡PL(P,w)\min_PL(P,w)minPL(P,w),这可以通过求导得到。min⁡PL(P,w)\min_PL(P,w)minPL(P,w)是关于www的函数,记为:
φ(w)=min⁡P∈CL(P,w)=L(Pw,w)\varphi(w)=\min_{P\in C}L(P,w)=L(P_w,w)φ(w)=PCminL(P,w)=L(Pw,w)

L(P,w)L(P,w)L(P,w)关于P(y∣x)P(y|x)P(yx)的偏导数:
∂L(P,w)∂P(y∣x)=∑x,yP‾(x)(log⁡P(y∣x)+1)−∑yw0−∑x,y(P‾(x)∑i=1Mwifi(x,y))=∑x,yP‾(x)(log⁡P(y∣x)+1−w0−∑i=1Mwifi(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(yx)L(P,w)=x,yP(x)(logP(yx)+1)yw0x,y(P(x)i=1Mwifi(x,y))=x,yP(x)(logP(yx)+1w0i=1Mwifi(x,y))

令偏导数为0,可以解出P(y∣x)P(y|x)P(yx)关于www的表达式如下:
P(y∣x)=exp⁡(∑i=1Mwifi(x,y)+w0−1)=exp⁡(∑i=1Mwifi(x,y))exp⁡(1−w0)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(yx)=exp(i=1Mwifi(x,y)+w01)=exp(1w0)exp(i=1Mwifi(x,y))

由于∑yP(y∣x)=1\sum_yP(y|x)=1yP(yx)=1,可以得到Pw(y∣x)P_w(y|x)Pw(yx)的表达式如下:
Pw(y∣x)=1Zw(x)exp⁡(∑i=1Mwifi(x,y))P_w(y|x)=\frac{1}{Z_w(x)}\exp(\sum^M_{i=1}w_if_i(x,y))Pw(yx)=Zw(x)1exp(i=1Mwifi(x,y))

其中,Z_w(x)为规范化因子,定义为:
Zw(x)=∑yexp⁡(∑i=1Mwifi(x,y))Z_w(x)=\sum_y\exp(\sum^M_{i=1}w_if_i(x,y))Zw(x)=yexp(i=1Mwifi(x,y))

这样我们便得到了最大熵模型,这里的wiw_iwi代表特征函数fi(x,y)f_i(x,y)fi(x,y)的权值,现在求其对偶问题的外部极大化即可,将最优解记作w∗w^*w
w∗=argmax⁡wφ(w)w^*=arg\max_w\varphi(w)w=argwmaxφ(w)

所以现在最大化模型转为求解φ(w)\varphi(w)φ(w)的极大化问题,求解出最优w∗w^*w后,便得到了所要求的最大熵模型,将Pw(y∣x)P_w(y|x)Pw(yx)带入φ(w)\varphi(w)φ(w),最终通过一系列极其复杂的运算,得到了需要极大化的式子:
max⁡P∈C∑x,yP‾(x,y)∑i=1nwifi(x,y)+∑xP‾(x)log⁡Zw(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)PCmaxx,yP(x,y)i=1nwifi(x,y)+xP(x)logZw(x)

这是一个凸优化问题,一般的梯度法、牛顿法都可解之,专门的算法有GIS IIS 算法。最后可以得到P(y∣x)P(y|x)P(yx)的最终结果。

总之告诉你,这个太难了,你学不会~

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值