机器学习中的共轭先验(conjugate prior)
1 前言
在之前的一些博文中,我们提到了概率论中的一些重要的分布 ;在数学博文中,对这些重要的分布的性质也进行了不同程度的分析。今天,我来简要介绍一下,这些分布在机器学习中的一个应用:共轭先验。
2 共轭先验
讨论概率分布的一个重要原因是,现实生活中有很多数据可以使用这些模型来模拟。对于给定的一个数据集合x1,…,xn我们希望这个数据集合来自于某个随机变量X,并且这个随机变量具有概率分布P(X)。找到P(X)的过程叫做密度估计(density estimation)。需要强调的是密度估计问题是一个病态问题,因为世界上的概率密度函数不计其数,能够给出观测集合x1,…,xn的概率密度函数也是如此之多。任何一个在x1,…,xn处非零的密度函数P(X)都可能是候选。选择一个合适的P(X)是模型选择问题,在机器学习领域经常遇见。
之前我们也看到了很多分布,把这些分布用到密度估计过程中,我们需要确定相对于这些模型的一些重要参数,比如期望,比如方差,再比如一些超参数。这些量值的确定亦有不同的方法,从频率方面(frequentist)着手的话,我们根据某个准则进行优化,为这些参数选择特定的值,常见的准则是最大似然准则。从贝叶斯方面着手的话,我们引入这些参数的一些先验估计(prior distributions),然后使用贝叶斯定理根据给定的观测数据计算关于这些参数的后验估计。 这些先验估计的选取非常的关键 直接影响到参数的准确度和计算的难易程度。常见的做法是选择可能分布的共轭先验。
顾名思义,共轭先验是后验分布的一个先验假设。最重要的, 共轭先验和后验具有相同的形式 。这在计算过程中可以非常方便的形成迭代,根据新的观测数据,原先的后验概率变成新的先验概率,继而更新出一个新的后验概率,这个后验概率的参数更加的准确。这个过程大大的简化了贝叶斯分析。举个例子,多变量分布的一个共轭先验叫做狄利克雷分布(Dirichlet distribution),高斯分布的共轭先验是另一个高斯函数。所有的这些函数都是指数函数家族里的分布。
3 多项分布和狄利克雷分布
3.1 多项分布
我们讨论过二项分布 ,对于二项分布的一个扩展就是多项分布 。因为我们经常会碰到一个随机变量的取值是K个互斥的结果中的一个。尽管有很多方法来描述这个变量,但是我们实用一个K维的矢量来描述结果会非常容易。举个简单的例子,假设K=6,第三个结果发生,则这个事件可以表示为:
x=(0,0,1,0,0,0)任何一个类似这样的矢量都满足:sumKk=1xk=1,我们用μk来描述xk=1,则x的分布可以表示为:
p(x|μ)=K∏k=1μxkk其中μ=(μ1,…,μK)满足μk≥0,且∑kμk=1。很容易想到一个骰子,有六面,假若这个骰子是均匀的则μ1=…=μ6=1/6。假若这个骰子不均匀,则μk的取值就不一定了,但是依然会满足∑kμk=1.
现在考虑一个数据集合D,长度是N,这N个数来自于对随机变量X的采样,x1,…,xN,对应的最大似然函数可以表示为:
p(D|μ)=N∏n=1K∏k=1μxnkk=K∏k=1μ(∑nxnk)k=K∏k=1μmkk我们看到似然函数只依赖于N个数据集合的K个量值:
mk=∑nxnk这K个量值是N个数据集合的充分统计量。其中mk表示xk=1在N次观测中出现的总观测次数。
为了找到μ的最大似然解,我们需要最大化lnp(D|μ),约束条件是∑k=1。这个过程可以使用拉格朗日乘子算法。
K∑k=1mklnμk+λ(K∑k=1μk−1)对上式针对μk求导,则:
μk=−mk/λ把式 (6)带入拉格朗日乘子的约束条件,我们有λ=−N.所以我们得到式~(3)的最大似然解是:
μMLk=mkN显然这个解是N次观测过程中xk=1出现的频次。
基于μ,N,我们可以考虑量m1,…,mK的联合分布,则这个分布可以表示为:
Mult(m1,m2,…,mK|μ,N)=(Nm1m2…mK)K∏k=1μmkk式 (8)叫做多项分布,其中归一化项表示把N分成K组的方法,大小为m1,…,mK。
(Nm1m2…mK)=N!m1!…mk!其中:
K∑k=1mk=N3.2 狄利克雷分布
在上一节,我们介绍了使用最大似然估计导出多项式分布的方法,这种方法是基于frequestist的。现在我们基于贝叶斯方法,导出多项式分布。
首先我们引入μk的一个先验分布。通过观察多项分布式 (8) ,我们发现共轭先验具有如下形式:
p(μ|α)∝K∑k=1μαk−1k其中0≤μ≤1 且∑Kμk=1。此处α1,…,αk是分布的参数。由于μk之和为1这个约束的存在,这个关于μk的分布是一个K−1维的单纯形。
针对式 (11)的归一化形式,可以表示为:
Dir(μ|α)=Γ(α0)Γ(α1)…Γ(αK)K∏k=1μαk−1k式 (12)就是狄利克雷分布。这里Γ(x)是伽马函数。 α0=∑Kk=1αk.
把似然函数 (8) 和先验函数 (12) 相乘,我们得到一个后验分布:
p(μ|D,α)∝p(D|μ)p(μ|α)∝K∏k=1μαk+mk−1k我们看到后验分布和共轭先验具有相同的形式,他们看起来都像狄利克雷分布。狄利克雷肺部确实是多项分布的共轭先验。
4 总结
共轭先验为使用贝叶斯方法提供了有力工具,使得快速迭代变为可能。然而并不是所有的分布都有其共轭先验,所以在具体的案例中还需要具体分析。