版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Hemk340200600/article/details/86599119
1.统计学基础
1.1 二项分布
二项分布是n重伯努利分布,可以看做是将硬币抛n次,出现k次正面向上的概率,每次出现正面向上的概率为p,其概率密度公式为
P(X=k)=Cnkpk(1−p)n−k
1.2 多项式分布
多项式分布是二项分布推广到多种结果的情况,在多项式分布下,抛的不是硬币,而是一个骰子,或者是其他多面体。对于一个骰子,每一面出现的结果是
61,每一面出现的概率互斥且和为1,发生其中一个结果X次的概率就是多项式分布,假设投N次骰子,有
x1,x2,x3,x4,x5,x6六种情况,令
m1,m2,m3,m4,m5,m6分别表示每种情况出现的次数,且
m1+m2+m3+m4+m5+m6=N,则其概率为
P(X1=m1,X2=m2,...,Xn=mn)=m1!m2!...mn!N!p1m1p2m2...pnmn
1.3 Gamma分布
Γ函数的形式如下:
Γ(x)=∫0∞tx−1e−tdt
该函数具有如下的递推性质:
Γ(x+1)=xΓ(x)
容易知道
Γ函数为阶乘在实数集上的延伸,有
Γ(n)=(n−1)!
对
Γ函数做一下变形,得到:
∫0∞Γ(α)xα−1e−xdx=1
取积分中的函数,我们就得到Gamma分布的密度函数:
Gamma(x∣α)=Γ(α)xα−1e−x
1.4 Beta分布
在了解Beta分布前,需要先了解以下概念:
- 先验概率:先验概率就是事情尚未发生前,我们对该事发生概率的估计。
- 后验概率:后验概率是指通过调查或其它方式获取新的附加信息,利用贝叶斯公式对先验概率进行修正,而后得到的概率。
- 共轭分布:在贝叶斯概率理论中,如果后验概率P(θ|x)和先验概率p(θ)满足同样的分布律,那么,先验分布和后验分布被叫做共轭分布,同时,先验分布叫做似然函数的共轭先验分布。
- 极大似然估计(ML,Maximum Likelihood)可以估计模型的参数。其目标是找出一组参数 θ,使得模型产生出观测数据 x 的概率最大,其目标如下:
argθmaxP(x∣θ)
- 最大后验估计(MAP-max a posterior)可以在要估计的模型的参数存在先验概率的情况下优化后验概率,其目标如下:
argθmaxP(θ∣x)=argθmaxP(x)P(x∣θ)P(θ)
因为样本x是给定的,所以
P(x)是定值,可以忽略,则等式变为
argθmaxP(θ∣x)=argθmaxP(x∣θ)P(θ)
即
后验概率∝似然函数×先验概率
贝塔分布(Beta Distribution) 是一个作为伯努利分布和二项式分布的共轭先验分布的密度函数,在机器学习和数理统计学中有重要应用。其概率密度函数如下:
f(x;α,β)=∫01uα−1(1−u)β−1duxα−1(1−x)β−1=Γ(α)Γ(β)Γ(α+β)xα−1(1−x)β−1=B(α,β)1xα−1(1−x)β−1
Beta分布的均值为:
E(p)=α+βα
由于二项分布的似然函数为
μk(1−μ)n−k,如果先验概率也是
μ和
1−μ的次方乘积的关系,那么根据
后验概率∝似然函数×先验概率,后验概率分布形式将会和先验概率一样,这样后验概率和先验概率为共轭分布。而Beta分布正好符合这样的要求,因此Beta分布是二项分布的共轭先验。
1.5 狄利克雷分布Dirichlet
Dirichlet分布则是多项式分布的共轭先验,也可以看做是beta分布推广到多变量的情况。Dirichlet概率密度函数定义如下:
Dir(p∣α
)=B(α
)1k=1∏Kpkak−1,B(α
)=∏k=1KΓ(ak)Γ(∑k=1Kak)
我们要猜测参数
p
,其先验分布为
Dir(p
∣α
),数据落到不同区间的个数为
m
,服从多项分布
Mul(m
∣p
),在给定了数据提供的知识
m
,p的后验分布变为
Dir(p
∣α
+m
),这个过程层也就是Dirichlet-Multinomial 共轭,用数学形式描述如下:
Dir(p
∣α
)+Mul(m
)=Dir(p
∣α
+m
)
Dirichlet分布的均值为:
E(p)=(∑i=1Kaia1,∑i=1Kaia2,...,∑i=1KaiaK)
2.概率论基础
统计模拟中有一个重要的问题就是给定一个概率分布p(x),我们如何在计算机中生成它的样本。常见的概率分布,都可以基于01均匀分布的样本生成,而01均匀分布的样本则可以通过线性同余发生器生成。而如果p(x)是比较复杂的形式,我们就需要一些更加复杂的随机模拟的方法来生成样本。
2.1 马氏链及其收敛性
在马氏链中,第n+1个状态只依赖于第n个状态。
在线性代数中,有这样一种矩阵,它的每个元素非负,并且每列之和为1,这样的矩阵被称为马尔科夫矩阵,同时也是一个状态转移矩阵。当我们给定一个初始状态
π0时,有
π1=π0P,
π2=π1P=π0P2,…,
πn=π0Pn,而马尔科夫矩阵有一个性质,就是当任何两个状态联通,并且n足够大时,
Pn会收敛到某一个概率分布,从而使得我们的分布不再发生变化。
所以最初的概率分布
π0,随着马尔科夫矩阵的转移,最终会收敛到某个分布
π(x)。当
Xn∼π(x)时,有
Xn+1∼π(x),Xn+2∼π(x),此时
Xn,Xn+1,Xn+2,...属于分布
π(x)的样本。
2.2 MCMC算法
如果,我们能够构造一个转移矩阵为P的马氏链,使得其平稳分布恰好是
π(x),那么我们从任意一个初始状态
x0出发,如果在n步收敛,那么接下去的样本
xn,xn+1,...都是
π(x)的样本。
细致平稳条件:对于达到平稳分布的转移矩阵P,有
π(i)Pij=π(j)Pji
假设我们现在存在一个转移矩阵Q,q(i,j)表示从状态i转移到状态j的概率,通常情况下,细致平稳条件是不成立的。因此我们考虑两边同乘某个值,使得条件成立。令
α(i,j)=p(j)q(j,i),α(j,i)=p(i)q(i,j),按照对称性,有
p(i)q(i,j)α(i,j)=p(i)q(i,j)α(j,i)
将
q(i,j)α(i,j),q(i,j)α(j,i)看成是新的转移矩阵
Q′(i,j)和Q′(j,i),而
Q′满足细致平稳条件,于是我们得到了马氏链
Q′的平稳分布就是p(x)。
而如果站在原来的转移矩阵Q上来考虑,新引进的
α(i,j)可以看做是接受率,也就是,从状态i以q(i,j)的概率转移到状态j的时候,以
α(i,j)的概率接受这个转移,从而转移概率为
q(i,j)α(i,j)。
总结一下,我们可以得到MCMC算法的流程如下:
- 初始化马氏链初始状态
X0=x0
- 进入循环t=0,1,2,…,在时刻t马氏链状态为
Xt=xt,采样
y∼q(x∣xt)
- 从01均匀分布中生成随机数u
- 如果
u<α(xt,y)=p(y)q(xt∣y),则接受转移
xt→y,即X_{t+1}=y,否则
Xt+1=xt
2.3 Metropolis-Hastings算法
对于式子
p(i)q(i,j)×0.2=p(i)q(i,j)×0.1,虽然细致平稳条件成立,但是接受率太低,收敛得太慢。考虑将左右同乘5,得到
p(i)q(i,j)×1=p(i)q(i,j)×0.5
不难发现接受率不仅提高了,而且细致平稳条件依然成立。因此我们稍微改造一下MCMC算法,让
α(i,j)=min{p(i)q(i,j)p(j)q(j,i),1}
就得到了效率更高的Metropolis-Hastings算法。
扫描二维码关注公众号,回复:
5181607 查看本文章
2.4 吉布斯采样(Gibbs Sampling)
对于高维的情况,由于接受率的存在,Metropolis-Hastings算法的效率不算高,能够找到一个转移矩阵Q使得接受率a=1呢?在二维下,假设有一个概率分布p(x,y),考虑坐标
A(x1,y1),B(x1,y2),有
p(x1,y1)p(y2∣x1)=p(x1)p(y1∣x1)p(y2∣x1)p(x1,y2)p(y1∣x1)=p(x1)p(y2∣x1)p(y1∣x1)
即
p(A)p(y2∣x1)=p(B)p(y1∣x1)
同样的,考虑坐标
A(x1,y1),C(x2,y1),有
p(A)p(x2∣y1)=p(C)p(x1∣y1)
因此构造转移矩阵
Q=⎩⎪⎨⎪⎧q(A,B)=p(yB∣x1)q(A,C)=p(xC∣y1)0ifxA=xB=x1ifyA=yC=y1otherwises
在上面转移矩阵Q下,二维空间的马氏链将收敛到平稳分布p(x,y)。
二维Gibbs Sampling的流程总结如下:
- 随机初始化
X0=x0,Y0=y0
- 对于t=0,1,2,…,循环采样
yt+1∼p(y∣xt),xt+1∼p(x∣yt+1)
将二维Gibbs Sampling推广到n维,其算法流程如下:
- 随机初始化
{xi:i=1,2,3,...,n}
- 对于t=0,1,2,…,循环采样
-
x1t+1∼p(x1∣x2t,x3t,...,xnt)
-
x2t+1∼p(x2∣x1t+1,x3t,...,xnt)
-
x3t+1∼p(x3∣x1t+1,x2t+1,x4t,...,xnt)
- …
-
xnt+1∼p(xn∣x1t+1,x2t+1,x3t+1,...,xn−1t+1)
3. 隐狄利克雷模型LDA
在pLSA模型中,我们考虑将一篇文档考虑成由不同的主题和主题下的对应的高频词汇组成。但是文档选择某个主题的分布
ϑ
m,或者在主题下选择某个词汇的概率分布
φ
k,都没有任何的先验分布,而是由EM算法收敛得到其分布。由于
ϑ
m和
φ
k都对应到多项分布,所以其先验分布的一个好的选择就是Dirichlet分布,于是我们就得到了LDA模型。
LDA模型分为两个部分:
-
α
→ϑ
m→zm,n表示,在生成第m篇文档时,先以一定概率抽中某个doc-topic分布
ϑ
m,再根据这个分布生成文档中第n个词的主题编号
zm,n
-
β
→φ
k→wm,n∣(k=zm,n)表示,在K个topic-word分布
φ
k中,挑选编号为k=
zm,n的分布生成单词
wm,n
对第一个过程
α
→ϑ
m→zm,n来说,
ϑ
m→zm,n对应与多项分布,
α
→ϑ
m对应于Dirichlet分布,所以整体是一个Dirichlet-Multinomial共轭结构。
由于Dirichlet分布则是多项式分布的共轭先验,有
Dir(θ
m∣α
)+Mul(n
m)=Dir(θ
m∣α
+n
m)
那么在已知先验概率
Dir(θ
m∣α
)的情况下,我们直接可以得到后验概率
p(θ
m∣z
,α
)=Dir(θ
m∣α
+n
m)=Δ(α
+n
m)1k=1∏Kθknk+ak−1dθ
进而我们可得到某个topic的产生概率为
p(z
m∣a
)=∫p(z
m∣θ
m)p(θ
m∣a
)dθ
m=∫k=1∏KθknkDir(θ
m∣a
)dθ
m=∫k=1∏KθknkΔ(a
)1k=1∏Kθkak−1dθ
m=Δ(a
)1∫k=1∏Kθknk+ak−1dθ
m=Δ(a
)Δ(a
+n
m)
由于M篇文档的topic生成过程相互独立,因此整个topic的生成概率为
p(z
∣α
)=m=1∏Mp(z
m∣α
)=m=1∏MΔ(α
)Δ(n
m+α
)
令
w
′=(w
1,...w
K),z
′=(z
1,...z
K),其中
w
i表示第i类topic的词汇,
k
i表示第i类topic词汇对应的topic编号。对于LDA模型的第二个部分
β
→φ
k→wm,n∣(k=zm,n),在
k=zm,n的限制下,任何两个由主题k生成的词都是可交换的,即使不在同一个文档中。考虑如下过程
b
eta→φ
k→w
k,其中
b
eta→φ
k对应于Dirichlet分布,
φk→w
k对应于Multinomial分布。于是有
p(w
k∣β
)=Δβ
Δ(n
k+β
)
参数
φ
k的后验分布为
Dir(φ
k∣n
k+β
)
整个语料中词生成概率为
p(w
∣z
,β
)=p(w
′∣z
′,β
)=k=1∏Kp(w
k∣z
k,β
)=k=1∏KΔ(β
)Δ(n
k+β
)
c综合式子()和()得到
p(w
,z
∣α
,β
)=p(w
∣z
,β
)p(z
∣α
)=k=1∏KΔ(β
)Δ(n
k+β
)m=1∏MΔ(α
)Δ(n
m+α
)
得到联合分布
p(w
,z
)后,我们就可以使用Gibbs Sampling对分布进行采样,由于
w
已知,所以实际上只需要采样
p(z
∣w
) 。将所有的
zi看成是坐标轴,令
¬i表示去除下标为i的词。根据算法要求,我们需要求得
p(zi=k∣z
¬i,w
),假设已经观测到的词
wi=t,由贝叶斯法则,容易得到
p(zi=k∣z
¬i,w
)∝p(zi=k,wi=t∣z
¬i,w
¬i)
去掉某个词并不改变共轭结构,只是对应的计数变少,从而有
p(θ
m∣z
¬i,w
¬i)=Dir(θ
m∣n
m,¬i+α
)p(φ
k∣z
¬i,w
¬i)=Dir(φ
k∣n
k,¬i+β
)
整合一下,得到
p(zi=k∣z
¬i,w
)∝p(zi=k,wi=t∣z
¬i,w
¬i)=∫p(zi=k,wi=t,θ
m,φ
k∣z
¬i,w
¬i)dθ
mdφ
k=∫p(zi=k,θ
m∣z
¬i,w
¬i)p(wi=t,φ
k∣z
¬i,w
¬i)dθ
mdφ
k=∫p(zi=k∣θ
m)Dir(θ
m∣n
m,¬i+α
)dθ
m×p(wi=t∣φ
k)Dir(φ
k∣n
k,¬i+β
)dφ
k=∫θmkDir(θ
m∣n
m,¬i+α
)dθ
m×∫φktDir(φ
k∣n
k,¬i+β
)dφ
k=E(θmk)E(φkt)=θ^mkφ^kt=∑x=1Knm.¬i(x)+αxnm.¬i(k)+αk∑x=1Vnk.¬i(x)+βxnk.¬i(t)+βt
上式便是LDA模型的Gibbs Samppling 公式,基于该公式我们可以训练LDA模型并应用到新的文档进行topic语义分析。训练的过程如下:
- 对文档中每个词w,随机赋予一个topic编号z
- 扫描整个语料库,对每个词,按照Gibbs Sampling公式重新采样它的topic,在语料中进行更新。重复直至Gibbs Sampling收敛。
- 统计topic-word共现频率矩阵,该矩阵就是LDA的模型。
利用LDA模型,我们可以对新来的文档进行主题的分类,分类的过程如下:
- 对新来的文档每个词w随机赋予一个topic编号z
- 重新扫描当前文档,按照Gibbs Sampling公式,对每个词w,重新采样它的topic。重复直至Gibbs Sampling收敛。
- 统计文档中的topic分布得到
θ
new