统一分布:指数模型家族
本文讲解和「指数分布族」有关的统计计算。机器学习中应用的诸多概率模型都可以统一到「指数族分布」下,这样的统一省去了一些不必要的重复,也为「广义线性模型」(GLM) 奠定了基础。
本文md源码地址:AnBlog/统计和机器学习
是什么
很多分布的概率密度函数可以写成如下形式:
p(x∣θ)=Z(θ)1h(x)exp(θTϕ(x))
其中θ,x,ϕ等都是「向量」。也许公式很复杂,但是思想很简单,分布函数可以写成相同形式,使用相同的处理方法。
字母的含义
表达式字母有点多,这里详细介绍一下。
θ代表「自然参数」,x代表「特征」。模型训练阶段应该「估计参数」,使用模型进行预测时应该给模型「输入特征」。
exp指数中的函数ϕ,把样本特征x映射到另一个空间,以获得更强的拟合能力。如ϕ(x)=[x12,x1x2,x22],把x映射到了“二次”的空间。常用的映射是不映射,ϕ(x)=x。函数的结果一定要可以和θ「内积」,一定要返回维度相同的向量。
exp指数中的θ,是把原分布中的参数映射后的结果。如伯努利分布常把参数θ这样映射θ=[lnμ,ln(1−μ)]。在后面的例子中有更详细体现。
h(x)是可能出现的「缩放常数」(Scaling Constant),在把原分布函数化成指数形式的时候,按需出现,写在这里提醒可能出现的情况,由于不涉及参数,训练时具体意义小。
Z(θ)是参数的归一化系数,称为「分配函数」(Partition Function),涉及到参数,十分重要!
归一化系数可以通过积分求得:
Z(θ)=∫dxh(x)exp(η(θ)Tϕ(x))
我们更喜欢它的对数A(θ)=lnZ(θ),称为「分配函数对数」(Log Partition Function)。使用A而不使用Z,原来的概率密度函数的统一形式写成:
p(x∣θ)=h(x)exp(η(θ)Tϕ(x)−A(θ))
有时候还不写倒数形式:
g(θ)=Z(θ)1
把一些分布的概率密度函数化成指数分布族形式
这里举例把一些分布函数化成指数族的形式,同一个分布可能有不同的写法。
伯努利分布
原分布函数:
p(x∣μ)=μx(1−μ)1−x
取对数:
lnp(x∣μ)=xlnμ+(1−x)ln(1−μ)
取指数:
p(x∣μ)=exp(xlnμ+(1−x)ln(1−μ))=exp(θTϕ(x)),θ=[lnμ,ln(1−μ)],ϕ(x)=[x,1−x]
这个形式「冗余」了,μ和1−μ「不是相互独立」的。由于μ+(1−μ)=1,不需要二维的向量也可以表达伯努利分布,只需要修改「取对数」:
lnp(x∣μ)=xlnμ+(1−x)ln(1−μ)=xln1−μμ+ln(1−μ)
再取指数:
p(x∣μ)=(1−μ)exp(xln1−μμ),Z1=1−μ,ϕ(x)=x,θ=ln1−μμ
这里的θ用原有参数μ表达,就是把原分布的参数映射成了θ。模型训练后,得到参数θ,可以通过参数θ得到参数μ:
μ=1+e−θ1
带入A:
A=−ln(1−μ)=ln(1+eθ)
如果你对伯努利分布的实际应用感兴趣,请看:Logistic回归
多项伯努利分布 (Multinoulli)
原分布函数:
p(x∣μ)=c∏μcxc
其中xc=I(x=c),表示x是否取某个离散的值。
取对数:
lnp(x∣μ)=c∑xclnμc
取指数:
p(x∣μ)=exp(c∑xclnμc),θ=lnμ,ϕ(x)=x
这个形式也冗余了。由于∑cμc=1,可将其中一个参数用其他表示,做如下修改:
μC=1−c=1∑C−1μc,lnp(x∣μ)=c=1∑C−1xclnμc+(1−c=1∑C−1xc)ln(1−c=1∑C−1μc)=c=1∑C−1xclnμc+(1−c=1∑C−1xc)lnμC
提出∑c=1C−1xc:
lnp(x∣μ)=lnμC+c=1∑C−1xclnμCμc
取指数:
p(x∣μ)=μCexp(c=1∑C−1xclnμCμc)
带入指数形式exp(θTϕ(x)−A(θ)),各个部分:
θ=[lnμCμ1,...,lnμCμC−1],ϕ(x)=[I(x=1),...,I(x=C−1)],A(θ)=−lnμC
从θ变回μ:
μc=1+∑c′=1C−1eθc′eθc,μC=1−1+∑c=1C−1eθc∑c=1C−1eθc=1+∑c=1C−1eθc1
带入A:
A(θ)=ln(1+c=1∑C−1eθc)
如果你对多项伯努利分布的实际应用感兴趣,请看:朴素贝叶斯分类器
单变量的正态分布
正态分布本身就具有指数形式,比较方便:
p(x∣μ,σ2)=2πσ21exp(−2σ21(x−μ)2)=2πσ21exp(−2σ21x2+σ2μx−2σ21μ2)
可以直接看出结果:
θ=[σ2μ,−2σ21],ϕ(x)=[x,x2],A(θ)=2σ21μ2+21ln2πσ2
从θ到μ,σ:
σ2=−θ22,μ=θ1σ2=−θ22θ1
带回A:
A(θ)=21θ1μ+21ln2π(−θ22)=−θ2θ12+21ln4π−21ln(−θ2)
操作总结
以上操作非常固定:
- 取对数,化简。
- 利用参数已经存在的依赖关系进一步化简。
- 取指数,从指数形式中看出θ,ϕ,A。
- 求从θ到原参数的映射,带回A。
举个反例
反例有很多,这里用「单变量的均匀分布」。
概率密度函数:
p(x∣l,r)=r−l1
概率密度函数和x无关,故无法化成完整指数形式。
这个分布的参数对数据极端敏感,最大似然估计的结果是l=minx(i),r=maxx(i)。数据最值改变时,参数的估计随最值变化,这样的变化不能用「初等函数」的组合表达。
分配函数 (Partition Function)
此处推导分配函数的重要性质:
对分配函数的对数求导,得到统计累计量 (Cumulant)。
所以分配函数又叫「累计量生成函数」。直观地说,就是分配函数的一阶导数(梯度)是「均值」,二阶导数(厄米矩阵)是「协方差矩阵」。对于多变量情况,得到二阶导数后,通常不再继续求导了。
计算
求一阶导数:

求二阶导数,求导的θ是同一个,得到协方差矩阵的对角线上元素:

当两次求导的θ不是同一个,得到非对角线元素:
∂θi∂θj∂2A=E[ϕi(x)ϕj(x)]−E[ϕi(x)]E[ϕj(x)]=cov(ϕ(x))
以上分别计算了对角线和非对角线情况,只是为了更清晰地讲解,可以直接计算一般情况。建议自己算一遍,练习一下简单的加减乘除微积分。
伯努利分布举个例子
一阶导数:
dθdA=dθdln(1+eθ)=1+eθeθ=1+e−θ1=μ
二阶导数:
dθ2d2A=(1+eθ)2eθ(1+eθ)−eθ⋅eθ=1+eθ1⋅1+eθeθ=1+e−θ1⋅1+e−θe−θ=μ(1−μ)
还是建议自己算一遍,练习一下简单的加减乘除微积分。
似然
表达似然
把所有概率乘起来:
p(D∣θ)=g(θ)N(i∏h(x(i)))exp(θTi∑ϕ(x(i)))
向量加法可以写成分量加法,并用新记号代替:
i∑ϕ(x(i))=[i∑ϕ1(x(i)),...,i∑ϕD(x(i))]=ϕ(D)
取对数:
l(θ)=lnp(D∣θ)=Nlng(θ)+θTϕ(D)+i∑lnh(x(i))=−NA(θ)+θTϕ(D)+i∑lnh(x(i))
最大似然估计
求导:
∇l=−N∇A+ϕ(D)=−NE(ϕ(x))+ϕ(D)
结果惊人地简单:
E(ϕ(x))=N1ϕ(D)=N1i∑ϕ(x(i))
只要分布的均值确定,就可以输入数据,获得最大似然估计。求均值E[ϕ(x)]不是统计学过程,是概率论过程,和样本数据无关。
伯努利分布举个例子
伯努利分布的特征变换:
ϕ(x)=x⇒E[ϕ(x)]=E[x]=μ
参数的最大似然估计:
μ=N1i∑ϕ(x(i))=N1i∑x(i)
就是我们熟悉的!
多项伯努利分布举个例子
多项伯努利分布的特征变换:
ϕ(x)=[I(x=1),...,I(x=C−1)]
求均值:
E(ϕ(x))=[E[I(x=1)],...,E[I(x=C−1)]]
求分量,带入概率论中求均值的公式:
E[I(x=c)]=x=1∑C(I(x=c)(c′∏μc′I(x=c)))=μc
带入最大似然估计:
μc=N1i∑I(x(i)=c)=NNc
就是我们熟悉的!
先验和后验
假设先验
选取和似然具有相同形式的先验。
p(θ∣ν0,τ0)∝g(θ)ν0exp(θTτ0)
此处g(θ)和之前的相同。比较在似然中的变量位置,标量ν0为「初始数据个数」,向量τ0为「初始数据」。
求解后验
似然中ϕ(D)是一系列的求和。为了强调这一点,我们采用记号,表示从1到N的ϕ求和,这是个向量求和,结果还是向量。
sN=i=1∑Nϕ(x(i))
将具有相同形式的先验,和似然相乘,得到后验:
p(θ∣D)∝p(θ∣ν0,τ0)p(D∣θ)∝g(θ)ν0+N(i∏h(x(i)))exp(θT(τ0+i∑ϕ(x(i))))
直接看出后验的形式:

先验、后验都具有和指数分布族相同的形式,上面的书写省略了一些归一化系数。先验参数ν0,τ0的意义也更加明确了。
最大后验估计
求最大后验估计的过程和求最大似然估计的过程相同。
取对数:
l(θ)=lnp(θ∣D)=−lnZ+νNlng(θ)+θTτN=−lnZ−νNA(θ)+θTτN
求导:
∇l(θ)=−νNE[τ0+ϕ(x)]+τN=τN−νN(τ0+E[ϕ(x)])
注意E[]中的是「随机变量」,外面的τ0,τN是由样本数据和超参数决定的「常数」。
最终给出结果:
E[ϕ(x(i))]=νNτN−τ0=ν0+Nτ0+∑iϕ(x(i))−τ0
取特殊情况ν0=0,τ0=0,就是最大似然估计的结果!
预测分布
p(x∣D)=∫dθp(x∣θ)p(θ∣D)=∫dθZ(θ)1h(x)exp(θTϕ(x))(i∏h(x(i)))Z(νN,τN)1g(θ)νNexp(θTτN)
进一步求解需要带入具体分布和数值。