不要把鸡蛋放到一个篮子里
理解了这句话其实已经理解了最大熵模型的精髓了,不过这句话还是有点含蓄,下面讲一下我的理解,欢迎交流。
“不要把鸡蛋放到一个篮子里”,这样可以降低风险。
为啥不放到一个篮子里就可以降低风险啊?如果有人告诉你就算世界毁灭这个篮子也不会破也不会摔倒地上,那么就永远不会有风险(鸡蛋永远不会摔破)
遗憾的是,没有人告诉过你(暗含我们没有足够的知识做出这样的推理),既然有风险就说明篮子是有可能破掉的,但是我们又无法准确知道到底哪个篮子会破掉,那么我们怎么做呢?那么好吧我们认命承认自己一无所知,不作出任何假设(比如假设某个篮子不会破),把鸡蛋随机的放入多个篮子里面,这样风险最小。
(有些东西写出来就和想的不一样,凑合看吧,这个应该可以数学上给予证明,我不会啊,哎)
熵和条件熵
这个在决策树的博客里面已经介绍过了,这里再简单说下
熵在信息论和概率统计中,用来表示随机变量的不确定。是用来度量不确定的,(最大熵模型说白了就是最大不确定模型,最大不确定性模型不是最不靠谱模型,恰恰相反是最靠谱的模型,后面会介绍为什么?)
熵的定义:
设
X∈(x1,x2,……xn)为一个离散随机变量,其概率分布为
P(X=xi)=pi,i=1,2……n,则
X的熵为
H(X)=−i=1∑npilogpi,其中若pi=0,定义0log0=0
H(X)仅依赖于
X的分布,而与
X的具体取值无关。
H(X)的值越大,表示
X的不确定性越大。
**条件熵:**设
X∈(x1,x2,……xn),Y∈(y1,y2,……ym)为离散随机变量。在已知X的条件下,Y的条件熵可定义为:
H(Y∣X)=i=1∑np(xi)H(Y∣X=xi)=−i=1∑np(xi)j=1∑mp(yj∣xi)logp(yj∣xi)
它表示已知
X的条件下,Y的条件概率分布的熵对X的数学期望。
似然与最大似然估计
在数理统计学中,似然函数是一种关于统计模型中参数的函数(似然函数中的未知数是模型参数,理解一下),在统计推断中有重大作用。
似然性与概率的区别:
1)概率用于在已知一些参数的情况下,预测接下来的观测所得到的结果。(其实就是模型已知了即模型参数都知道了,利用这个已有模型预测下观测结果)
2)似然性则是用于在已知某些观测所得到的结果时,对有关实物的性质的参数进行估计(观测结果已经呈现在眼前了,你给说说是什么样的参数才最大可能会出现目前的结果)
最大似然估计是似然函数最初也是最自然的应用,似然函数取得最大值表示相应的参数能够使得统计模型最为合理(醍醐灌顶,该赏)
从这样一个想法出发,最大似然估计的做法是:首先选取似然函数(一般是概率密度函数),整理之后求最大值。
设X为离散随机变量,其概率分布为
p(x:θ),θ为参数,则X的N个∗∗独立同分布∗∗的样本x1,x2,……xn的联合概率分布为:
p(x1,x2……xN;θ)=∏p(xi;θ),其中i=1,2……N
1)当参数
θ固定时,上式表示
x1,x2,……xn的概率
2)当
x1,x2,……xn固定时,它是
θ的函数,把它记作
L(θ;x)并称其为似然函数
似然函数值的大小意味着该样本值出现的可能性大小。既然已经得到了样本的值
x1,x2,……xn,那么它出现的可能性应该是最大的,即似然函数的值应该是最大的。
因而我们可以选择使
L(θ;x)达到最大值的那个
θ∗作为真实参数
θ的估计
实际应用中一般会取似然函数的对数函数(对数似然函数)用来求最大值,由于函数
logx的严格单调性,这样求的最大值与直接求最大值得到的结果是相同的。
最大熵原理
在只掌握了关于未知分布的部分信息的情况下,符合已知知识分布的概率分布可能有多个,但是熵值最大的概率分布最真实的反映了事件的分布情况。
最大熵原理指出,当我们需要一个随机事件的概率分布进行预测时,我们的预测应当满足全部已知的条件,而对未知的情况不要做任何主观假设。
在这种情况下,概率分布最均匀,预测的风险最小,因为这时的概率分布信息熵最大,所以人们称这种模型叫“最大熵模型”。
因为当我们遇到不确定性时,就要保留各种可能性。说白了,就是保留全部的不确定性,将风险降到最小。
最大熵原理的实质就是,在已知部分知识的前提下,关于未知分布最合理的推断,就是符合已知知识的前提下,最不确定的推断。
这是我们可以作出的唯一不偏不倚的选择,任何其他的选择都意味着我们增加了其他的约束和假设,这些约束和假设根据我们掌握的信息无法作出。
最大熵模型
将最大熵原理应用于分类问题,得到的就是最大熵模型。
考虑这样一个问题:给定一个训练数据集
T=(x1,y1),(x2,y2),……(xn,yn),,其中
xi是输入,
yi是输出,N为样本个数。
我们的目标是:利用最大熵原理选择一个最好的分类模型,即对于给定的输入
xi,我们以条件概率
P(y∣x)输出。
按照最大熵原理,我们应该优先保证模型满足已知的所有约束。那么这些约束如何表示呢?
我们的思路是:从训练数据T中抽取若干(对分类有用的)特征,然后要求这些特征在T上关于经验分布
P′(x,y)的数学期望与它们在模型中关于
P(x,y)的数学期望相等。
这样一个特征就对应一个约束。
现在我们要解决2个问题:
1)特征如何表示
2)经验分布怎么表示
特征函数
f(x,y):用特征函数
f(x,y)描述输入
x与输出
y之间的一个事实。
f(x,y)=1,x与y满足某一事实
f(x,y)=0,否则
它是一个二值函数,当
x,y满足这个事实时取值为1,否则取值为0
经验分布:
给定的训练数据集,可以确定联合分布
P(X,Y)的经验分布和边缘分布
P(X)的经验分布(所谓经验分布就是指通过在训练数据中进行统计得到的分布)
P′(X=x,Y=y)=Nv(X=x,Y=y)
P′(X=x)=Nv(X=x)
其中,
v(X=x,Y=y)表示训练数据中样本
(x,y)出现的次数,
v(X=x)表示训练数据中输入x出现的次数,N表示样本总数。
约束条件:
对于任意一个特征函数
f,记
Ep′(f)表示f在训练数据T上关于经验分布
P′(x,y)的数学期望,用
Ep(f)表示
f在模型上关于联合分布
P(x,y)的数学期望。按照期望的定义(离散型随机变量的一切可能的取值
xi与对应的概率
p(xi)的乘积之和称为离散型随机变量的数学期望),我们有:
Ep′(f)=x,y∑P′(x,y)f(x,y) (式1)
Ep(f)=x,y∑P(x,y)f(x,y)(式2)
需要注意的是,式2中含有
p(x,y)是未知的,而建模的目标是生成
p(y∣x),因此我们希望将
p(x,y)表示成
p(y∣x)的形式,利用贝叶斯定理,有
p(x,y)=p(y∣x)∗p(x),但此时
p(x)仍是未知的,此时,只好利用
p′(x)来对
p(x)进行近似了。
于是把
Ep(f)重新定义成下面的形式:
Ep(f)=x,y∑p′(x)p(y∣x)f(x,y)(式3)
如果模型能够获取训练数据中的信息,那么就可以假设这两个期望值相等。即
Ep(f)=Ep′(f)
x,y∑P′(x,y)f(x,y)=x,y∑p′(x)p(y∣x)f(x,y)
(对于概率分布p(y|x),我们希望特征
f的期望值应该和从训练数据中得到的特征期望值时一致的)
假设从训练数据中抽取了n个特征,相应的便有n个特征函数
fi以及n个约束条件
Ep(fi)=Ep′(fi)
最大熵模型:
讨论了特征函数与约束条件,要利用最大熵原理,还差一个熵的定义,由于我们的目标会获取一个条件分布,因此,采用相应的条件熵。
H(P(y∣x))=−x,y∑p′(x)p(y∣x)logp(y∣x)
最大熵模型就是求解
maxp∈CH(p)=−x,y∑p′(x)p(y∣x)logp(y∣x)
s.ty∑p(y∣x)=1
其中C是约束条件集合
C=p∣Ep(fi)=Ep′(fi),i=1,2=……n
最大熵模型的求解
最大熵模型的学习过程就是求解最大熵模型的过程。最大熵模型的学习可以形式化为约束最优化问题。
最大熵模型的学习等价于约束最优化问题:
maxH(p)=−x,y∑p′(x)p(y∣x)logp(y∣x)
s.t:Ep(fi)=Ep′(fi)i=1,2……n
y∑p(y∣x)=1
按照习惯,转换为求最小值
min−H(p)=x,y∑p′(x)p(y∣x)logp(y∣x)
s.t:Ep(fi)=Ep′(fi)i=1,2……n
y∑p(y∣x)=1
1)利用拉格朗日乘子法将最大熵模型由一个带约束的最优化问题转换为一个与之等价的无约束的最优化问题极小极大问题。
2)利用对偶问题的等价性,转换为求解上一步得到的极小极大问题的对偶问题,它是一个极大极小问题。
在求解内层的极小问题时,可以导出最大熵模型的解具有指数形式,而在求解外层的极大问题时,还将意外的发现其与最大似然估计的等价性。
原始问题与对偶问题:
首先,引入拉格朗日乘子
w0,w1,w2……wn,定义拉格朗日函数
L(P,w)
L(P,w)=−H(P)+w0(1−y∑p(y∣x))+i=1∑nwi(Ep′(fi)−Ep(fi))
=x,y∑p′(x)p(y∣x)logp(y∣x)+w0(1−y∑p(y∣x))+i=1∑nwi(Ep′(fi)−Ep(fi))
原始问题是:
p∈CminwmaxL(P,w)(式4)
对偶问题:
wmaxp∈CminL(P,w) (式 5)
(
H(P)凸函数,原始问题和对偶问题等价,可以通过求解对偶问题,求解原始问题的解)
对偶问题内层的极小问题
p∈CminL(P,w)是关于参数
w的函数(因为这时候p已经根据最小的条件求出来了,但此时的p是由
w表示的),将其记作:
ψ(w)=p∈CminL(P,w)=L(Pw,w)(看见没p是不是由
w表示的?)
同时将
p∈CminL(P,w)的解记作
Pw=argp∈CminL(P,w)=Pw(y∣x)
具体的如何求解
p∈CminL(P,w) 呢?
将
L(P,w)对P(y∣x)求偏导:
P(y∣x)L′(P,w)=x,y∑p′(x)(logP(y∣x)+1)−y∑w0−x,y∑(p′(x)i=1∑nwifi(x,y))
=x,y∑p′(x)(logP(y∣x)+1−w0−i=1∑nwifi(x,y))
令偏导数等于0,在
p′(x)>0的情况下,解得:
P(y∣x)=exp(i=1∑nwifi(x,y)+w0−1)
=ew0−1ei=1∑nwifi(x,y)(式6)
由
y∑p(y∣x)=1带入式6得到
y∑p(y∣x)=ew0−1y∑ei=1∑nwifi(x,y)=1
可得:
ew0−1=y∑ei=1∑nwifi(x,y)1(式7)
令
Zw(x)=y∑ei=1∑nwifi(x,y)
称为规范化因子
则
Pw(y∣x)=Zw(x)1exp(i=1∑nwifi(x,y))(式8)
由式8定义的模型
Pw(y∣x)就是最大熵模型。这里
w最大熵模型中的参数向量,对应着特征的权重。
之后求解对偶问题外部的极大化问题
wmaxψ(w),将其解记作
w∗
即
w∗=argwmaxψ(w)
则最大熵模型的解
P∗=Pw∗
最大似然估计
对偶函数的极大化等价于最大熵模型的极大似然估计,这个是可以证明的。李航的统计学习方法里面有证明。
最大熵模型的极大似然估计函数:
Lp(Pw)=logx,y∏p(y∣x)p′(x,y)=x,y∑p′(x,y)logp(y∣x)
最大熵模型与逻辑斯谛回归模型有类似的形式,他们又称作对数线性模型,模型学习就是在给定训练数据的条件下,对模型进行极大似然估计。
现在我们已经知道了内层极小的解
Pw(y∣x)=Zw(x)1exp(i=1∑nwifi(x,y))
把 它带入到
L(P,w)求出
ψ(w)
ψ(w)=L(Pw,w)=x,y∑p′(x)pw(y∣x)logpw(y∣x)+i=1∑nwi(x,y∑p′(x,y)fi(x,y)−x,y∑p′(x)pw(y∣x)logpw(y∣x))
把
Pw(y∣x)=Zw(x)1exp(i=1∑nwifi(x,y))带入得:
ψ(w)=x,y∑p′(x,y)i=1∑nwifi(x,y)−x∑p′(x)logZw(x)
有了
ψ(w的表达式,剩下来的任务就是求其最大值点
w∗
模型学习的最优化算法
求解使得
ψ(w取最大值的
w∗=argwmaxψ(w),没有显式的解析解,因此需要借助于数值算法。
由于目标函数
ψ(w是一个光环的凸函数,因此可以采用多种最优化方法来进行求解,且能保证找到全局最优解。
通用的方法有梯度下降法、牛顿法以及拟牛顿法等。