理解LDA,可以分为如下5个步骤:
gamma
函数本文按照上述五个步骤来阐述,希望读者看完本文后,能对LDA有个尽量清晰完整的理解。
关于LDA·有两种含义,一种是线性判别分析
(Liner Discriminant Analysis),一种是概率主题模型:隐含狄利克雷分布
(Latent Dirichlet Allocation,简称LDA),本文讲后者。
首先,简单说下LDA
的整体思想,明白整体框架后,咱们再一步步抽丝剥茧,展开来论述。
根据维基百科的介绍,LDA
由Blei, David M.、Ng, Andrew Y.、Jordan于2003年提出,是一种主题模型,它可以将文档集 中每篇文档的主题以概率分布的形式给出,从而通过分析一些文档抽取出它们的主题(分布)出来后,便可以根据主题(分布)进行主题聚类或文本分类。同时,它是一种典型的词袋模型
,即一篇文档是由一组词构成,词与词之间没有先后顺序的关系。
此外,一篇文档可以包含多个主题,文档中每一个词都由其中的一个主题生成。
人类是怎么生成文档的呢?LDA
的这三位作者在原始论文中给了一个简单的例子。比如假设事先给定了这几个主题:Arts、Budgets、Children、Education,然后通过学习训练,获取每个主题Topic对应的词语。如下图所示:
然后以一定的概率选取上述某个主题,再议一定的概率选取那个主题下的某个单词,不断地重复这两步,最终生成如下图所示的一篇文章(其中不同颜色的词语分别对应上图中不同主题的词):
而当我们看到一篇文章后,往往喜欢推测这篇文章是如何生成的,我们可能会认为作者先确定这篇文章的几个主题,然后围绕这几个主题遣词造句,表达成文。
LDA就是要干这件事:根据给定的一篇文档,反推其主题分布。
通俗来说,可以假定认为人类是根据上述文档生成过程写成了各种各样的文章,现在某小撮人想让计算机利用LDA干一件事:你计算机给我推测分析网络上各篇文章分别都写了些啥主题,且各篇文章中各个主题出现的概率大小(主题分布)是啥。
但是,就是这么一个看似普通的LDA
,一度吓退了不少想深入探究其内部原理的初学者。难在哪呢,难就难在LDA
内部涉及到的数学知识点太多了。
在LDA
模型中,一篇文档生成的方式如下:
其中,类似 B e t a Beta Beta分布是二项式分布的共轭先验概率分布,而狄利克雷分布(Dirichlet分布)是多项式分布的共轭先验概率分布。
此外,LDA的图模型结构如下图所示:
嗯, 不错,短短6句话整体概括了整个LDA的主体思想!但也就是上面短短6句话,却接连不断或重复出现了二项分布、多项式分布、beta分布、狄利克雷分布(Dirchlet分布)、共轭先验概率分布、取样,下面,我们依次分别介绍他们。
二项分布
是从伯努利分布推出来的。
伯努利分布:在一次实验中,事件A出现的概率为 p p p,不出现的概率为 q = 1 − p q=1-p q=1−p.若以 β \beta β记事件A出现的次数,则 β \beta β仅取0,1两值,相应的概率分布为:
b k = P β = k = p k q ( 1 − k ) ) , k = 0 , 1 \left.b_{k}=P \beta=k=p^{k} q^{(1-k)} \right), k=0,1 bk=Pβ=k=pkq(1−k)),k=0,1
二项分布是指在只有两个结果的 n n n次独立的伯努利试验中,所期望的结果出现次数的概率。在单次试验中,结果 A A A出现的概率为 p p p,结果 B B B出现的概率为 q q q, p + q = 1 p+q=1 p+q=1。那么在 n = 10 n=10 n=10,即10次试验中,结果A出现0次、1次、……、10次的概率各是多少呢?这样的概率分布呈现出什么特征呢?这就是二项分布所研究的内容。
还是先举个例子吧。
掷一枚硬币,出现正面和反面的概率各为0.5,那么掷1次,出现正面的概率肯定是0.5。掷2次、掷3次呢?
掷2次出现的结果有4个,正正、正反、反正、反反。因为p=0.5,所以每个结果出现的概率是0.5×0.5=0.25,那正面出现2次、1次、0次的概率分别是0.25、0.5、0.25。
掷3次出现的结果有8个,正正正、正正反、正反正、正反反、反正正、反正反、反反正、反反反。每个结果出现的概率是0.5×0.5×0.5=0.125,那正面出现3次、2次、1次、0次的概率分别是0.125、0.375、0.375、0.125。
统计学家们总结出了计算概率的一般公式
b ( x , n , p ) = C n x p x q n − x b(x, n, p)=C_{n}^{x} p^{x} q^{n-x} b(x,n,p)=Cnxpxqn−x
其中 b b b表示二项分布的概率, n n n表示试验次数, x x x表示出现某个结果的次数。是组合,表示在 n n n次试验中出现x次结果的可能的次数。如10次试验,出现0次正面的次数有1次,出现1次正面的次数有10次,……,出现5次正面的次数有252次,等等。其计算也有一个通式:
C n x = n × ( n − 1 ) × ⋯ × ( n − x + 1 ) x × ( x − 1 ) × ⋯ × 1 C_{n}^{x}=\frac{n \times(n-1) \times \cdots \times(n-x+1)}{x \times(x-1) \times \cdots \times 1} Cnx=x×(x−1)×⋯×1n×(n−1)×⋯×(n−x+1)
也可以写成:
C n x = n ! ( n − x ) ! x ! C_{n}^{x}=\frac{n !}{(n-x) ! x !} Cnx=(n−x)!x!n!
多项分布是指单次实验中的随即变量的取值不再是0-1的,而是有多种离散值可能(1,2,3,…,k).比如投掷6个面的骰子实验,N次实验结果服从K=6的多项分布。其中,
∑ i = 1 k p i = 1 , p i > 0 \sum_{i=1}^{k} p_{i}=1, p_{i}>0 i=1∑kpi=1,pi>0
多项分布的概率密度函数为:
P ( x 1 , x 2 , … , x k ; n , p 1 , p 2 , … , p k ) = n ! x 1 ! ⋯ x k ! p 1 x 1 ⋯ p k x k P\left(x_{1}, x_{2}, \ldots, x_{k} ; n, p_{1}, p_{2}, \ldots, p_{k}\right)=\frac{n !}{x_{1} ! \cdots x_{k} !} p_{1}^{x_{1}} \cdots p_{k}^{x_{k}} P(x1,x2,…,xk;n,p1,p2,…,pk)=x1!⋯xk!n!p1x1⋯pkxk
有一枚硬币,假设抛了三次,三次都是花,那么就能够说明它两面都是花吗?
1. 贝叶斯推断
按照传统的算法,抛了三次得到三次花,那么花的概率应该是:
p = 3 3 = 100 % p=\frac{3}{3}=100 \% p=33=100%
但是抛三次实在是太少了,完全有可能是运气问题,我们应该怎么办呢?
贝叶斯认为在实验之前,应根据不同的情况对硬币有所假设。不同的假设会得到不同的推断。
比如和滑不留手的韦小宝玩。韦小宝可能拿出各种做过手脚的硬币,让我们猜不透,只能假设对硬币一无所知。这种假设之下,我们就只能根据实验结果来猜测。
因此,实验结果是扔三次,三次花,倾向于认为韦小宝有可能作弊:
大侠陈静楠用的可能是公平硬币:
而坏坏的多隆,真的有可能用两面花来和你玩:
各种假设称为先验分布,结合刚才扔三次,三次花的实验数据,推断出硬币的后验分布,这就是贝叶斯推断:
2. Beta分布
那么问题来了,先验分布,后验分布用数学怎么表示:
对于扔硬币,Beta分布非常适合用来完成这个任务。
2.1 先验分布
Beta分布简记为:
Beta ( a , b ) \operatorname{Beta}(a, b) Beta(a,b)
根据 a , b a,b a,b参数的不同,形态各异:
这个特性非常适合用来做先验分布。比如,在韦小宝面前,我们对硬币一无所知。
贝叶斯说,一无所知也就是意味着任何 概率都是一样的,都是有可能的,所以选用均匀分布
Beta(1,1)真好就是均匀分布:
正直的陈静楠,可能用的是公平硬币,也就是说概率在0,1之间(0表示字,1表示花),Beta(5,5)可以表示这样的分布:
而坏坏的多隆,可能用了两面花,也就是说概率可能集中到1附近,Beta(5,1)可以表示这样的分布:
也就是说可以用Beta分布来模拟各种先验分布:
2.2 后验分布
用Beta分布来模拟扔硬币的先验分布之后,通过贝叶斯推断,得到的后验分布依然是Beta分布:
具体到这里:
再具体到韦小宝的情况就是:
其中,用(3,0)来表示实验数据,意思是3次花,0次字。
陈静楠的情况:
结合试验数据之后,图像的中心从0.5往0.6方向移动了,作弊可能性有所增加,不过总体来看应该是公平硬币的可能性大。
3. 代数细节
贝叶斯推断:
应用到二项分布的数学细节如下。假设实验数据X|P服从二项分布:
X ∣ p ∼ bin ( n , p ) X \mid p \sim \operatorname{bin}(n, p) X∣p∼bin(n,p)
上面的式子根据贝叶斯定理可以表示为:
其中K为花的次数,分母和实验数据无关,可以视作常数:
因此,写成下面这样更容易看清楚重点(其中 ∝ \propto ∝表示两者之间成比例):
3.2 Beta分布
1 B ( α , β ) = Γ ( α + β ) Γ ( α ) Γ ( β ) Γ ( z ) = ∫ 0 ∞ t z − 1 e − t d t \frac{1}{B(\alpha, \beta)}=\frac{\Gamma(\alpha+\beta)}{\Gamma(\alpha) \Gamma(\beta)} \quad \Gamma(z)=\int_{0}^{\infty} t^{z-1} e^{-t} d t B(α,β)1=Γ(α)Γ(β)Γ(α+β)Γ(z)=∫0∞tz−1e−tdt
注: Γ ( x ) \Gamma(x) Γ(x)便是所谓的gamma
函数,下文会具体阐述。
对于二项式分布,用 B e t a Beta Beta分布作为先验分布,通过贝叶斯推断之后,后验分布依然是Beta分布:
这种特性称为共轭先验。
Dirichlet分布的密度函数形式和Beta分布的密度函数如出一辙:
f ( x 1 , x 2 , … , x k ; α 1 , α 2 , … , α k ) = 1 B ( α ) ∏ i = 1 k x i α i − 1 f\left(x_{1}, x_{2}, \ldots, x_{k} ; \alpha_{1}, \alpha_{2}, \ldots, \alpha_{k}\right)=\frac{1}{B(\alpha)} \prod_{i=1}^{k} x_{i}^{\alpha^{i}-1} f(x1,x2,…,xk;α1,α2,…,αk)=B(α)1i=1∏kxiαi−1
其中
B ( α ) = ∏ i = 1 k Γ ( α i ) Γ ( ∑ i = 1 k α i ) , ∑ x i = 1 B(\alpha)=\frac{\prod_{i=1}^{k} \Gamma\left(\alpha^{i}\right)}{\Gamma\left(\sum_{i=1}^{k} \alpha^{i}\right)}, \sum x_{i}=1 B(α)=Γ(∑i=1kαi)∏i=1kΓ(αi),∑xi=1
至此,我么可以看到二项分布和多项分布很相似**,Beta分布和Dirichlet分布**很相似,而至于Beta分布是二项分布的共轭先验概率分布,而狄利克雷分布(Dirichlet分布)是多项式分布的共轭先验概率分布这点在下文中说明。
ok,接下来,咱们就按照本文开头所说的思路。
一个函数
:gamma函数四个分布
:二项分布、多项分布、beta分布、Dirichlet分布一个概念和理念
:共轭先验和贝叶斯框架两个模型
:pLSA、LDA(文档-主题,主题-词语)一个采样
:Gibbs采样咱们先来考虑一个问题
2.把这n个随机变量排序后得到顺序统计量 X ( 1 ) , X ( 2 ) ⋯ , X ( n ) X_{(1)}, X_{(2)} \cdots, X_{(n)} X(1),X(2)⋯,X(n)
3.请问 X ( k ) X_{(k)} X(k)的分布是什么
为解决这个问题,可以尝试计算 X ( k ) X_{(k)} X(k)落在区间 [ x , x + Δ x ] [x, x+\Delta x] [x,x+Δx]的概率。即求下面式子的值:
P ( x ≤ X ( k ) ≤ x + Δ x ) = ? P\left(x \leq X_{(k)} \leq x+\Delta x\right)=? P(x≤X(k)≤x+Δx)=?
首先,把 [0,1] 区间分成三段 [0,x),[x,x+Δx],(x+Δx,1],然后考虑下简单的情形:即假设 n n n 个数中只有1个落在了区间 [x,x+Δx]内,由于这个区间内的数 X k X_{k} Xk是第k大的,所以[0,x)中应该有 k−1 个数,(x+Δx,1] 这个区间中应该有n−k 个数。如下图所示:
从而问题转换为下面事件E:
E = { X 1 ∈ [ x , x + Δ x ] X i ∈ [ 0 , x ) ( i = 2 , ⋯ , k ) X j ∈ ( x + Δ x , 1 ] ( j = k + 1 , ⋯ , n ) } \begin{array}{l} E=\left\{X_{1} \in[x, x+\Delta x]\right. \\ X_{i} \in[0, x) \quad(i=2, \cdots, k) \\ \left.X_{j} \in(x+\Delta x, 1] \quad(j=k+1, \cdots, n)\right\} \end{array} E={X1∈[x,x+Δx]Xi∈[0,x)(i=2,⋯,k)Xj∈(x+Δx,1](j=k+1,⋯,n)}
对于上述事件E,有:
P ( E ) = ∏ i = 1 n P ( X i ) = x k − 1 ( 1 − x − Δ x ) n − k Δ x = x k − 1 ( 1 − x ) n − k Δ x + o ( Δ x ) \begin{aligned} P(E) &=\prod_{i=1}^{n} P\left(X_{i}\right) \\ &=x^{k-1}(1-x-\Delta x)^{n-k} \Delta x \\ &=x^{k-1}(1-x)^{n-k} \Delta x+o(\Delta x) \end{aligned} P(E)=i=1∏nP(Xi)=xk−1(1−x−Δx)n−kΔx=xk−1(1−x)n−kΔx+o(Δx)
其中, o ( Δ x ) o(\Delta x) o(Δx)表示 Δ x \Delta x Δx的高阶无穷小。显然,由于不同的排列组合,即n个数中有一个落在[x,x+Δx]区间的有n种取法。余下n-1个落在[0,x)的有 ( n − 1 k − 1 ) \left(\begin{array}{l}n-1 \\ k-1\end{array}\right) (n−1k−1)种组合,所以和事件E等价的事件一共有 n ( n − 1 k − 1 ) n\left(\begin{array}{l}n-1 \\ k-1\end{array}\right) n(n−1k−1)个。
如果有2个数落在区间[x,x+Δx]呢?如下图所示:
类似于事件E,对于2个数落在区间[x,x+Δx]的事件 E ′ E^{\prime} E′:
E ′ = { X 1 , X 2 ∈ [ x , x + Δ x ] , X i ∈ [ 0 , x ) ( i = 3 , ⋯ , k ) , X j ∈ ( x + Δ x , 1 ] ( j = k + 1 , ⋯ , n ) } \begin{array}{c} E^{\prime}=\left\{X_{1}, X_{2} \in[x, x+\Delta x]\right. \\, X_{i} \in[0, x) \quad(i=3, \cdots, k) ,\\ \left.X_{j} \in(x+\Delta x, 1] \quad(j=k+1, \cdots, n)\right\} \end{array} E′={X1,X2∈[x,x+Δx],Xi∈[0,x)(i=3,⋯,k),Xj∈(x+Δx,1](j=k+1,⋯,n)}
有:
P ( E ′ ) = x k − 2 ( 1 − x − Δ x ) n − k ( Δ x ) 2 = o ( Δ x ) P\left(E^{\prime}\right)=x^{k-2}(1-x-\Delta x)^{n-k}(\Delta x)^{2}=o(\Delta x) P(E′)=xk−2(1−x−Δx)n−k(Δx)2=o(Δx)
从上述的事件 E E E、事件 E ′ E^{\prime} E′中,可以看出,只要落在[x,x+Δx]内的数字超过一个,则对应的事件的概率就是 o ( Δ x ) o(\Delta x) o(Δx)。于是乎有:
P ( x ≤ X ( k ) ≤ x + Δ x ) = n ( n − 1 k − 1 ) P ( E ) + o ( Δ x ) = n ( n − 1 k − 1 ) x k − 1 ( 1 − x ) n − k Δ x + o ( Δ x ) \begin{array}{l} P\left(x \leq X_{(k)} \leq x+\Delta x\right) \\ =n\left(\begin{array}{l} n-1 \\ k-1 \end{array}\right) P(E)+o(\Delta x) \\ =n\left(\begin{array}{l} n-1 \\ k-1 \end{array}\right) x^{k-1}(1-x)^{n-k} \Delta x+o(\Delta x) \end{array} P(x≤X(k)≤x+Δx)=n(n−1k−1)P(E)+o(Δx)=n(n−1k−1)xk−1(1−x)n−kΔx+o(Δx)
从而得到 X k X_{k} Xk的概率密度函数 f x f_{x} fx为:
f ( x ) = lim Δ x → 0 P ( x ≤ X ( k ) ≤ x + Δ x ) Δ x = n ( n − 1 k − 1 ) x k − 1 ( 1 − x ) n − k = n ! ( k − 1 ) ! ( n − k ) ! x k − 1 ( 1 − x ) n − k x ∈ [ 0 , 1 ] \begin{aligned} f(x) &=\lim _{\Delta x \rightarrow 0} \frac{P\left(x \leq X_{(k)} \leq x+\Delta x\right)}{\Delta x} \\ &=n\left(\begin{array}{c} n-1 \\ k-1 \end{array}\right) x^{k-1}(1-x)^{n-k} \\ &=\frac{n !}{(k-1) !(n-k) !} x^{k-1}(1-x)^{n-k} \quad x \in[0,1] \end{aligned} f(x)=Δx→0limΔxP(x≤X(k)≤x+Δx)=n(n−1k−1)xk−1(1−x)n−k=(k−1)!(n−k)!n!xk−1(1−x)n−kx∈[0,1]
至此,本文开头提出的问题得到解决。然而仔细观察 X k X_{k} Xk的概率密度函数,发现式子的最终结果有阶乘,联想到阶乘在实数上的推广 Γ ( x ) \Gamma(x) Γ(x)函数:
Γ ( x ) = ∫ 0 ∞ t x − 1 e − t d t \Gamma(x)=\int_{0}^{\infty} t^{x-1} e^{-t} d t Γ(x)=∫0∞tx−1e−tdt
通过分布积分的方法,可以推导出这个函数有如下的递归性质:
Γ ( x + 1 ) = x Γ ( x ) \Gamma(x+1)=x \Gamma(x) Γ(x+1)=xΓ(x)
两种结合是否会产生奇妙的效果呢?于是很容易证明, Γ ( x ) \Gamma(x) Γ(x)函数可以当成是阶乘在实数集上的延伸,具有如下性质:
Γ ( n ) = ( n − 1 ) ! \Gamma(n)=(n-1) ! Γ(n)=(n−1)!
故将代入到 X k X_{k} Xk的概率密度函数 f x f_{x} fx中,可得:
f ( x ) = Γ ( n + 1 ) Γ ( k ) Γ ( n − k + 1 ) x k − 1 ( 1 − x ) n − k f(x)=\frac{\Gamma(n+1)}{\Gamma(k) \Gamma(n-k+1)} x^{k-1}(1-x)^{n-k} f(x)=Γ(k)Γ(n−k+1)Γ(n+1)xk−1(1−x)n−k
然后取 α = k , β = n − k + 1 \alpha=k, \beta=n-k+1 α=k,β=n−k+1,转换 f x f_{x} fx得到:
f ( x ) = Γ ( α + β ) Γ ( α ) Γ ( β ) x α − 1 ( 1 − x ) β − 1 f(x)=\frac{\Gamma(\alpha+\beta)}{\Gamma(\alpha) \Gamma(\beta)} x^{\alpha-1}(1-x)^{\beta-1} f(x)=Γ(α)Γ(β)Γ(α+β)xα−1(1−x)β−1
如果熟悉beta分布的朋友,可能会惊呼:哇,竟然推出了beta分布。
在概率论中,beta是指一组定义在(0,1)区间的连续概率分布,有两个参数 α \alpha α, β \beta β,且 α \alpha α, β \beta β>0.
beta分布的概率密度函数是:
f ( x ; α , β ) = x α − 1 ( 1 − x ) β − 1 ∫ 0 1 u α − 1 ( 1 − u ) β − 1 d u = Γ ( α + β ) Γ ( α ) Γ ( β ) x α − 1 ( 1 − x ) β − 1 = 1 B ( α , β ) x α − 1 ( 1 − x ) β − 1 \begin{aligned} f(x ; \alpha, \beta) &=\frac{x^{\alpha-1}(1-x)^{\beta-1}}{\int_{0}^{1} u^{\alpha-1}(1-u)^{\beta-1} d u} \\ &=\frac{\Gamma(\alpha+\beta)}{\Gamma(\alpha) \Gamma(\beta)} x^{\alpha-1}(1-x)^{\beta-1} \\ &=\frac{1}{\mathrm{B}(\alpha, \beta)} x^{\alpha-1}(1-x)^{\beta-1} \end{aligned} f(x;α,β)=∫01uα−1(1−u)β−1duxα−1(1−x)β−1=Γ(α)Γ(β)Γ(α+β)xα−1(1−x)β−1=B(α,β)1xα−1(1−x)β−1
其中的 Γ \Gamma Γ便是 Γ ( x ) \Gamma(x) Γ(x)函数:
Γ ( x ) = ∫ 0 ∞ t x − 1 e − t d t \Gamma(x)=\int_{0}^{\infty} t^{x-1} e^{-t} d t Γ(x)=∫0∞tx−1e−tdt
随机变量x服从参数为beta分布。通常写为: X ∼ Be ( α , β ) X \sim \operatorname{Be}(\alpha, \beta) X∼Be(α,β)
回顾下上开头所提出的问题:问题1 随机变量 X 1 , X 2 , ⋯ , X n ∼ X_{1}, X_{2}, \cdots, X_{n}^{\text {}} \sim X1,X2,⋯,Xn∼uniform(0,1) , 把 这 n 个 随 机 变 量 排 序 后 得 到 顺 序 统 计 量 ,把这n 个随机变量排序后得到顺序统计量 ,把这n个随机变量排序后得到顺序统计量 X ( 1 ) , X ( 2 ) ⋯ X ( n ) X_{(1)}, X_{(2)} \cdots X_{(n)} X(1),X(2)⋯X(n),然后请问$ X k X_{k} Xk 的分布是什么。
如果,咱们要在这个问题的基础上增加一些观测数据,变成问题2:
根据, Y i Y_{i} Yi中有 m 1 m_{1} m1个比p小, m 2 m_{2} m2个比p大,换言之, Y i Y_{i} Yi中有 m 1 m_{1} m1个比 X k X_{k} Xk小, m 2 m_{2} m2个比 X k X_{k} Xk大,所以 X k X_{k} Xk是 X 1 , X 2 , ⋯ , X n , Y 1 , Y 2 , ⋯ , Y m iid ~ U n i f o r m ( 0 , 1 ) X_{1}, X_{2}, \cdots, X_{n}, Y_{1}, Y_{2}, \cdots, Y_{m}^{\text {iid }} ~~Uniform (0,1) X1,X2,⋯,Xn,Y1,Y2,⋯,Ymiid ~Uniform(0,1)中第 K + m 1 K+m_{1} K+m1大的数。
根据上节最终得到的结论“只要落在[x,x+Δx]内的数字超过一个,则对应的事件的概率就是 o(Δx)”,继而推出事件服从beta分布,从而可知 p = X ( k ) p=X_{(k)} p=X(k)的概率密度函数为:
Beta ( p ∣ k + m 1 , n − k + 1 + m 2 ) \operatorname{Beta}\left(p \mid k+m_{1}, n-k+1+m_{2}\right) Beta(p∣k+m1,n−k+1+m2)
1.为了猜测 p = X ( k ) p=X_{(k)} p=X(k),在获得一定的观测数据前,我们对 P P P的认知是: f ( p ) = Beta ( p ∣ k , n − k + 1 ) f(p)=\operatorname{Beta}(p \mid \boldsymbol{k}, \boldsymbol{n}-\boldsymbol{k}+1) f(p)=Beta(p∣k,n−k+1),此称为 p p p的先验分布;
2.然后为了获得这个结果, Y i Y_{i} Yi中有 m 1 m_{1} m1个比p小, m 2 m_{2} m2个比p大,针对 Y i Y_{i} Yi是做了 m m m次贝努利实验,所以 m 1 m_{1} m1服从二项分布 B ( m , p ) B(m, p) B(m,p);
3.在给定了来自数据提供的 ( m 1 , m 2 ) \left(m_{1}, m_{2}\right) (m1,m2)的知识后, P P P的后验分布变为。
f ( p ∣ m 1 , m 2 ) = Beta ( p ∣ k + m 1 , n − k + 1 + m 2 ) f\left(p \mid m_{1}, m_{2}\right)=\operatorname{Beta}\left(p \mid k+m_{1}, n-k+1+m_{2}\right) f(p∣m1,m2)=Beta(p∣k+m1,n−k+1+m2)
回顾下贝叶斯派思考问题的固定模式:
上述思考模式意味着,新观察到的样本信息将修正人们以前对事物的认知。换言之,在得到新的样本信息之前,人们对 θ \theta θ的认知是先验分布 π ( θ ) \pi(\theta) π(θ),在得到新的样本信息 X X X后,人们对 θ \theta θ的认知为 π ( θ ∣ x ) \pi(\theta \mid x) π(θ∣x)。
类比到现在这个问题上,我们也可以试着写下:
Beta ( p ∣ k , n − k + 1 ) + Count ( m 1 , m 2 ) = Beta ( p ∣ k + m 1 , n − k + 1 + m 2 ) \operatorname{Beta}(p \mid k, n-k+1)+\operatorname{Count}\left(m_{1}, m_{2}\right)=\operatorname{Beta}\left(p \mid k+m_{1}, n-k+1+m_{2}\right) Beta(p∣k,n−k+1)+Count(m1,m2)=Beta(p∣k+m1,n−k+1+m2)
其中 ( m 1 , m 2 ) \left(m_{1}, m_{2}\right) (m1,m2)对应的是二项分布 B ( m 1 + m 2 , p ) B\left(m_{1}+m_{2}, p\right) B(m1+m2,p)的计数。
更一般的,对于非负实数 α \alpha α和 β \beta β,我们有如下关系
Beta ( p ∣ α , β ) + Count ( m 1 , m 2 ) = Beta ( p ∣ α + m 1 , β + m 2 ) \operatorname{Beta}(p \mid \alpha, \beta)+\operatorname{Count}\left(m_{1}, m_{2}\right)=\operatorname{Beta}\left(p \mid \alpha+m_{1}, \beta+m_{2}\right) Beta(p∣α,β)+Count(m1,m2)=Beta(p∣α+m1,β+m2)
针对于这种观测到的数据符合二项分布,参数的先验分布和后验分布都是Beta分布的情况,就是Beta-Binomial共轭。
换言之,Beta分布是二项式分布的共轭先验概率分布。
二项分布和Beta分布是共轭分布意味着,如果我们为二项分布的参数 p p p选取的先验分布是Beta分布,那么以p为参数的二项分布用贝叶斯估计得到的后验分布仍然服从Beta分布。
此外,如何理解参数 α \alpha α和 β \beta β所表达的意义呢? α \alpha α、 β \beta β可以认为形状参数,通俗但不严格的理解是, α \alpha α和 β \beta β共同控制Beta分布的函数“长的样子”:形状千奇百怪,高低胖瘦,如下图所示:
什么又是共轭呢?轭的意思是束缚、控制,共轭从字面上理解,则是共同约束,或互相约束。
在贝叶斯概率理论中,如果后验概率 P ( θ ∣ x ) P(θ|x) P(θ∣x)和先验概率 p ( θ ) p(θ) p(θ)满足同样的分布律,那么,先验分布和后验分布被叫做共轭分布,同时,先验分布叫做似然函数的共轭先验分布。
比如,某观测数据服从概率分布 P ( θ ) P(θ) P(θ)时,当观测到新的 X X X数据时,我们一般会遇到如下问题:
可否根据新观测数据 X X X,更新参数 θ θ θ?
根据新观测数据可以在多大程度上改变参数 θ θ θ,即
θ ← θ + Δ θ \theta \leftarrow \theta+\Delta \theta θ←θ+Δθ
当重新估计 θ θ θ的时候,给出新参数值 θ θ θ的新概率分布,即 P ( θ ∣ x ) P(θ|x) P(θ∣x)。
事实上,根据根据贝叶斯公式可知:
P ( θ ∣ x ) = P ( x ∣ θ ) ⋅ P ( θ ) P ( x ) ∝ P ( x ∣ θ ) ⋅ P ( θ ) P(\theta \mid x)=\frac{P(x \mid \theta) \cdot P(\theta)}{P(x)} \propto P(x \mid \theta) \cdot P(\theta) P(θ∣x)=P(x)P(x∣θ)⋅P(θ)∝P(x∣θ)⋅P(θ)
其中, P ( x ∣ θ ) P(x|θ) P(x∣θ)表示以预估 θ θ θ为参数的 x x x概率分布,可以直接求得, P ( θ ) P(θ) P(θ)是已有原始的 θ θ θ概率分布。
所以,如果我们选取 P ( x ∣ θ ) P(x|θ) P(x∣θ)的共轭先验作为 P ( θ ) P(θ) P(θ)的分布,那么 P ( x ∣ θ ) P(x|θ) P(x∣θ)乘以 P ( θ ) P(θ) P(θ),然后归一化的结果 P ( θ ∣ x ) P(θ|x) P(θ∣x)跟和 P ( θ ) P(θ) P(θ)的形式一样。
换句话说,先验分布是 P ( θ ) P(θ) P(θ),后验分布是 P ( θ ∣ x ) P(θ|x) P(θ∣x),先验分布跟后验分布同属于一个分布族,故称该分布族是θ的共轭先验分布(族)。
举个例子。投掷一个非均匀硬币,可以使用参数为 θ θ θ的伯努利模型, θ θ θ为硬币为正面的概率,那么结果 x x x的分布形式为:
P ( x ∣ θ ) = θ x ⋅ ( 1 − θ ) 1 − x P(x \mid \theta)=\theta^{x} \cdot(1-\theta)^{1-x} P(x∣θ)=θx⋅(1−θ)1−x
其共轭先验为beta分布,具有两个参数 α \alpha α和 β \beta β,称为超参数(hyperparameters)。且这两个参数决定了 θ θ θ参数,其Beta分布形式为
P ( θ ∣ α , β ) = θ α − 1 ( 1 − θ ) β − 1 ∫ 0 1 θ α − 1 ( 1 − θ ) β − 1 d θ P(\theta \mid \alpha, \beta)=\frac{\theta^{\alpha-1}(1-\theta)^{\beta-1}}{\int_{0}^{1} \theta^{\alpha-1}(1-\theta)^{\beta-1} d \theta} P(θ∣α,β)=∫01θα−1(1−θ)β−1dθθα−1(1−θ)β−1
然后计算后验概率
P ( θ ∣ x ) ∝ P ( x ∣ θ ) ⋅ P ( θ ) ∝ ( θ x ( 1 − θ ) x ) ( θ α − 1 ( 1 − θ ) β − 1 ) = θ x + a − 1 ( 1 − θ ) 1 − x + β − 1 \begin{array}{l} P(\theta \mid x) \\ \propto P(x \mid \theta) \cdot P(\theta) \\ \propto\left(\theta^{x}(1-\theta)^{x}\right)\left(\theta^{\alpha-1}(1-\theta)^{\beta-1}\right) \\ =\theta^{x+a-1}(1-\theta)^{1-x+\beta-1} \end{array} P(θ∣x)∝P(x∣θ)⋅P(θ)∝(θx(1−θ)x)(θα−1(1−θ)β−1)=θx+a−1(1−θ)1−x+β−1
归一化这个等式后会得到另一个Beta分布,从而证明了Beta分布确实是伯努利分布的共轭先验分布。
接下来,咱们来考察beta分布的一个性质。
如果 p ∼ Beta ( t ∣ α , β ) p \sim \operatorname{Beta}(t \mid \alpha, \beta) p∼Beta(t∣α,β),则有:
E ( p ) = ∫ 0 1 t ∗ Beta ( t ∣ α , β ) d t = ∫ 0 1 t ∗ Γ ( α + β ) Γ ( α ) Γ ( β ) t α − 1 ( 1 − t ) β − 1 d t = Γ ( α + β ) Γ ( α ) Γ ( β ) ∫ 0 1 t α ( 1 − t ) β − 1 d t \begin{aligned} E(p) &=\int_{0}^{1} t * \operatorname{Beta}(t \mid \alpha, \beta) d t \\ &=\int_{0}^{1} t * \frac{\Gamma(\alpha+\beta)}{\Gamma(\alpha) \Gamma(\beta)} t^{\alpha-1}(1-t)^{\beta-1} d t \\ &=\frac{\Gamma(\alpha+\beta)}{\Gamma(\alpha) \Gamma(\beta)} \int_{0}^{1} t^{\alpha}(1-t)^{\beta-1} d t \end{aligned} E(p)=∫01t∗Beta(t∣α,β)dt=∫01t∗Γ(α)Γ(β)Γ(α+β)tα−1(1−t)β−1dt=Γ(α)Γ(β)Γ(α+β)∫01tα(1−t)β−1dt
注意到上式最后结果的右边积分
∫ 0 1 t α ( 1 − t ) β − 1 d t \int_{0}^{1} t^{\alpha}(1-t)^{\beta-1} d t ∫01tα(1−t)β−1dt
其类似于概率分布 Beta ( t ∣ α + 1 , β ) \operatorname{Beta}(t \mid \alpha+1, \beta) Beta(t∣α+1,β),而对于这个分布有
∫ 0 1 Γ ( α + β + 1 ) Γ ( α + 1 ) Γ ( β ) t α ( 1 − t ) β − 1 d t = 1 \int_{0}^{1} \frac{\Gamma(\alpha+\beta+1)}{\Gamma(\alpha+1) \Gamma(\beta)} t^{\alpha}(1-t)^{\beta-1} d t=1 ∫01Γ(α+1)Γ(β)Γ(α+β+1)tα(1−t)β−1dt=1
从而求得
∫ 0 1 t α ( 1 − t ) β − 1 d t \int_{0}^{1} t^{\alpha}(1-t)^{\beta-1} d t ∫01tα(1−t)β−1dt
的结果为
Γ ( α + 1 ) Γ ( β ) Γ ( α + β + 1 ) \frac{\Gamma(\alpha+1) \Gamma(\beta)}{\Gamma(\alpha+\beta+1)} Γ(α+β+1)Γ(α+1)Γ(β)
最后将此结果带入 E ( p ) E(p) E(p)的计算式,得到:
E ( p ) = Γ ( α + β ) Γ ( α ) Γ ( β ) ⋅ Γ ( α + 1 ) Γ ( β ) Γ ( α + β + 1 ) = Γ ( α + β ) Γ ( α + β + 1 ) Γ ( α + 1 ) Γ ( α ) = α α + β \begin{aligned} E(p) &=\frac{\Gamma(\alpha+\beta)}{\Gamma(\alpha) \Gamma(\beta)} \cdot \frac{\Gamma(\alpha+1) \Gamma(\beta)}{\Gamma(\alpha+\beta+1)} \\ &=\frac{\Gamma(\alpha+\beta)}{\Gamma(\alpha+\beta+1)} \frac{\Gamma(\alpha+1)}{\Gamma(\alpha)} \\ &=\frac{\alpha}{\alpha+\beta} \end{aligned} E(p)=Γ(α)Γ(β)Γ(α+β)⋅Γ(α+β+1)Γ(α+1)Γ(β)=Γ(α+β+1)Γ(α+β)Γ(α)Γ(α+1)=α+βα
最后的这个结果意味着对于Beta 分布的随机变量,其均值(期望)可以用 α α + β \frac{\alpha}{\alpha+\beta} α+βα来估计。
此外,狄利克雷Dirichlet 分布也有类似的结论,即如果 p ⃗ ∼ Dir ( t ⃗ ∣ α ⃗ ) \vec{p} \sim \operatorname{Dir}(\vec{t} \mid \vec{\alpha}) p∼Dir(t∣α),同样可以证明有下述结论成立:
E ( p ⃗ ) = ( α 1 ∑ i = 1 K α i , α 2 ∑ i = 1 K α i , ⋯ , α K ∑ i = 1 K α i ) E(\vec{p})=\left(\frac{\alpha_{1}}{\sum_{i=1}^{K} \alpha_{i}}, \frac{\alpha_{2}}{\sum_{i=1}^{K} \alpha_{i}}, \cdots, \frac{\alpha_{K}}{\sum_{i=1}^{K} \alpha_{i}}\right) E(p)=(∑i=1Kαiα1,∑i=1Kαiα2,⋯,∑i=1KαiαK)
那什么是Dirichlet 分布呢?简单的理解Dirichlet 分布就是一组连续多变量概率分布,是多变量普遍化的beta分布。为了纪念德国数学家约翰·彼得·古斯塔夫·勒热纳·狄利克雷(Peter Gustav Lejeune Dirichlet)而命名。狄利克雷分布常作为贝叶斯统计的先验概率。
根据维基百科上的介绍,维度K ≥ 2(x1,x2… x k − 1 x_{k-1} xk−1维,共K个)的狄利克雷分布在参数α1, …, αK > 0上、基于欧几里得空间 R k − 1 R_{k-1} Rk−1里的勒贝格测度有个概率密度函数,定义为:
f ( x 1 , … , x K − 1 ; α 1 , … , α K ) = 1 B ( α ) ∏ i = 1 K x i α i − 1 f\left(x_{1}, \ldots, x_{K-1} ; \alpha_{1}, \ldots, \alpha_{K}\right)=\frac{1}{\mathrm{B}(\alpha)} \prod_{i=1}^{K} x_{i}^{\alpha_{i}-1} f(x1,…,xK−1;α1,…,αK)=B(α)1i=1∏Kxiαi−1
其中,B( α \alpha α)相当于是多项beta函数
B ( α ) = ∏ i = 1 K Γ ( α i ) Γ ( ∑ i = 1 K α i ) \mathrm{B}(\alpha)=\frac{\prod_{i=1}^{K} \Gamma\left(\alpha_{i}\right)}{\Gamma\left(\sum_{i=1}^{K} \alpha_{i}\right)} B(α)=Γ(∑i=1Kαi)∏i=1KΓ(αi)
且 α = ( α 1 , … , α K ) \alpha=\left(\alpha_{1}, \ldots, \alpha_{K}\right) α=(α1,…,αK)
此外, x 1 x_{1} x1+ x 2 x_{2} x2+…+ x k − 1 x_{k-1} xk−1+ x k x_{k} xk=1, x 1 x_{1} x1, x 2 x_{2} x2, x k − 1 x_{k-1} xk−1>0,且在(K-1)维的单纯形上,其他区域的概率密度为0。
当然,也可以如下定义Dirichlet 分布
其中的 Δ ( α ⃗ ) \Delta(\vec{\alpha}) Δ(α)称为Dirichlet 分布的归一化系数:
Δ ( α ⃗ ) = ∏ k − 1 dim α ⃗ Γ ( α k ) Γ ( ∑ k − 1 dim α ⃗ α k ) = i n t ∏ k = 1 V p k α k − 1 d p ⃗ \Delta(\vec{\alpha})=\frac{\prod_{k-1}^{\operatorname{dim} \vec{\alpha}} \Gamma\left(\alpha_{k}\right)}{\Gamma\left(\sum_{k-1}^{\operatorname{dim} \vec{\alpha}} \alpha_{k}\right)}=i n t \prod_{k=1}^{V} p_{k}^{\alpha k-1} \mathrm{d} \vec{p} Δ(α)=Γ(∑k−1dimααk)∏k−1dimαΓ(αk)=intk=1∏Vpkαk−1dp
且根据Dirichlet分布的积分为1(概率的基本性质),可以得到:
∫ p ⃗ ∏ k = 1 K p k α k − 1 d p ⃗ = Δ ( α ⃗ ) \int_{\vec{p}} \prod_{k=1}^{K} p_{k}^{\alpha_{k}-1} d \vec{p}=\Delta(\vec{\alpha}) ∫pk=1∏Kpkαk−1dp=Δ(α)
下面,在之前的基础上继续深入,引出问题3。
为了简化计算,取 x 3 x_{3} x3满足 x 1 x_{1} x1+ x 2 x_{2} x2+ x 3 x_{3} x3=1,但只有 x 1 x_{1} x1, x 2 x_{2} x2是变量,如下图所示:
从而有:
P ( X ( k 1 ) ∈ ( x 1 , x 1 + Δ x ) , X ( k 1 + k 2 ) ∈ ( x 2 , x 2 + Δ x ) ) = n ( n − 1 ) ( n − 2 k 1 − 1 , k 2 − 1 ) x 1 k 1 − 1 x 2 k 2 − 1 x 3 n − k 1 − k 2 ( Δ x ) 2 = n ! ( k 1 − 1 ) ! ( k 2 − 1 ) ! ( n − k 1 − k 2 ) ! x 1 k 1 − 1 x 2 k 2 − 1 x 3 n − k 1 − k 2 ( Δ x ) 2 \begin{array}{l} P\left(X_{\left(k_{1}\right)} \in\left(x_{1}, x_{1}+\Delta x\right), X_{\left(k_{1}+k_{2}\right)} \in\left(x_{2}, x_{2}+\Delta x\right)\right) \\ =n(n-1)\left(\begin{array}{c} n-2 \\ k_{1}-1, k_{2}-1 \end{array}\right) x_{1}^{k_{1}-1} x_{2}^{k_{2}-1} x_{3}^{n-k_{1}-k_{2}}(\Delta x)^{2} \\ =\frac{n !}{\left(k_{1}-1\right) !\left(k_{2}-1\right) !\left(n-k_{1}-k_{2}\right) !} x_{1}^{k_{1}-1} x_{2}^{k_{2}-1} x_{3}^{n-k_{1}-k_{2}}(\Delta x)^{2} \end{array} P(X(k1)∈(x1,x1+Δx),X(k1+k2)∈(x2,x2+Δx))=n(n−1)(n−2k1−1,k2−1)x1k1−1x2k2−1x3n−k1−k2(Δx)2=(k1−1)!(k2−1)!(n−k1−k2)!n!x1k1−1x2k2−1x3n−k1−k2(Δx)2
于是我们得到 ( X ( k 1 ) , X ( k 1 + k 2 ) ) \left(X_{\left(k_{1}\right)}, X_{\left(k_{1}+k_{2}\right)}\right) (X(k1),X(k1+k2))的联合分布为:
f ( x 1 , x 2 , x 3 ) = n ! ( k 1 − 1 ) ! ( k 2 − 1 ) ! ( n − k 1 − k 2 ) ! x 1 k 1 − 1 x 2 k 2 − 1 x 3 n − k 1 − k 2 = Γ ( n + 1 ) Γ ( k 1 ) Γ ( k 2 ) Γ ( n − k 1 − k 2 + 1 ) x 1 k 1 − 1 x 2 k 2 − 1 x 3 n − k 1 − k 2 \begin{aligned} f\left(x_{1}, x_{2}, x_{3}\right) &=\frac{n !}{\left(k_{1}-1\right) !\left(k_{2}-1\right) !\left(n-k_{1}-k_{2}\right) !} x_{1}^{k_{1}-1} x_{2}^{k_{2}-1} x_{3}^{n-k_{1}-k_{2}} \\ &=\frac{\Gamma(n+1)}{\Gamma\left(k_{1}\right) \Gamma\left(k_{2}\right) \Gamma\left(n-k_{1}-k_{2}+1\right)} x_{1}^{k_{1}-1} x_{2}^{k_{2}-1} x_{3}^{n-k_{1}-k_{2}} \end{aligned} f(x1,x2,x3)=(k1−1)!(k2−1)!(n−k1−k2)!n!x1k1−1x2k2−1x3n−k1−k2=Γ(k1)Γ(k2)Γ(n−k1−k2+1)Γ(n+1)x1k1−1x2k2−1x3n−k1−k2
观察上述式子的最终结果,可以看出上面这个分布其实就是3维形式的 Dirichlet 分布
Dir ( x 1 , x 2 , x 3 ∣ k 1 , k 2 , n − k 1 − k 2 + 1 ) \operatorname{Dir}\left(x_{1}, x_{2}, x_{3} \mid k_{1}, k_{2}, n-k_{1}-k_{2}+1\right) Dir(x1,x2,x3∣k1,k2,n−k1−k2+1)
令 α 1 = k 1 , α 2 = k 2 , α 3 = n − k 1 − k 2 + 1 \alpha_{1}=k_{1}, \alpha_{2}=k_{2}, \alpha_{3}=n-k_{1}-k_{2}+1 α1=k1,α2=k2,α3=n−k1−k2+1,于是分布密度可以写为
f ( x 1 , x 2 , x 3 ) = Γ ( α 1 + α 2 + α 3 ) Γ ( α 1 ) Γ ( α 2 ) Γ ( α 3 ) x 1 α 1 − 1 x 2 α 2 − 1 x 3 α 3 − 1 f\left(x_{1}, x_{2}, x_{3}\right)=\frac{\Gamma\left(\alpha_{1}+\alpha_{2}+\alpha_{3}\right)}{\Gamma\left(\alpha_{1}\right) \Gamma\left(\alpha_{2}\right) \Gamma\left(\alpha_{3}\right)} x_{1}^{\alpha_{1}-1} x_{2}^{\alpha_{2}-1} x_{3}^{\alpha_{3}-1} f(x1,x2,x3)=Γ(α1)Γ(α2)Γ(α3)Γ(α1+α2+α3)x1α1−1x2α2−1x3α3−1
这个就是一般形式的3维 Dirichlet 分布,即便 α ⃗ = ( α 1 , α 2 , α 3 ) \vec{\alpha}=\left(\alpha_{1}, \alpha_{2}, \alpha_{3}\right) α=(α1,α2,α3)延拓到非负实数集合,以上概率分布也是良定义的。
将Dirichlet分布的概率密度函数取对数,绘制对称Dirichlet分布的图像如下图所示
上图中,取K=3,也就是有两个独立参数x1,x2,分别对应图中的两个坐标轴,第三个参数始终满足x3=1-x1-x2且α1=α2=α3=α,图中反映的是参数α从α=(0.3, 0.3, 0.3)变化到(2.0, 2.0, 2.0)时的概率对数值的变化情况。
在开始下面的旅程之前,先来总结下我们目前所得到的最主要的几个收获:
通过上文,我们知道beta分布是二项式分布的共轭先验概率分布:
对于非负实数 α \alpha α和 β \beta β,我们有如下关系
Beta ( p ∣ α , β ) + Count ( m 1 , m 2 ) = Beta ( p ∣ α + m 1 , β + m 2 ) \operatorname{Beta}(p \mid \alpha, \beta)+\operatorname{Count}\left(m_{1}, m_{2}\right)=\operatorname{Beta}\left(p \mid \alpha+m_{1}, \beta+m_{2}\right) Beta(p∣α,β)+Count(m1,m2)=Beta(p∣α+m1,β+m2)
其中 ( m 1 , m 2 ) \left(m_{1}, m_{2}\right) (m1,m2)对应的是二项分布 B ( m 1 + m 2 , p ) B\left(m_{1}+m_{2}, p\right) B(m1+m2,p)的计数。针对于这种观测到的数据符合二项分布,参数的先验分布和后验分布都是Beta分布的情况,就是Beta-Binomial 共轭。
我们还知道狄利克雷分布(Dirichlet分布)是多项式分布的共轭先验概率分布:
把 α ⃗ \vec{\alpha} α从整数集合延拓到实数集合,从而得到更一般的表达式如下:
Dir ( p ⃗ ∣ α ⃗ ) + MultCount ( m ⃗ ) = Dir ( p ∣ α ⃗ + m ⃗ ) \operatorname{Dir}(\vec{p} \mid \vec{\alpha})+\operatorname{MultCount}(\vec{m})=\operatorname{Dir}(p \mid \vec{\alpha}+\vec{m}) Dir(p∣α)+MultCount(m)=Dir(p∣α+m)
针对于这种观测到的数据符合多项分布,参数的先验分布和后验分布都是Dirichlet 分布的情况,就是 Dirichlet-Multinomial 共轭。
以及贝叶斯派思考问题的固定模式:
先验分布 π ( θ ) + \pi(\theta)+ π(θ)+ 样本信息 χ ⇒ \chi \Rightarrow χ⇒ 后验分布 π ( θ ∣ x ) \pi(\theta \mid x) π(θ∣x)
上述思考模式意味着,新观察到的样本信息将修正人们以前对事物的认知。
换言之,在得到新的样本信息之前,人们对的认知是先验分布,在得到新的样本信息后,人们对 θ \theta θ的认知是先验分布 π ( θ ) \pi(\theta) π(θ),在得到新的样本信息 X X X后,人们对 θ \theta θ的认知为 π ( θ ∣ x ) \pi(\theta \mid x) π(θ∣x)。
顺便提下频率派与贝叶斯派各自不同的思考方式:
OK,在杀到终极boss——LDA模型之前,再循序渐进理解基础模型:Unigram model、mixture of unigrams model,以及跟LDA最为接近的pLSA模型。
为了方便描述,首先定义一些变量:
对于文档 w = ( w 1 , w 2 , ⋯ , w N ) \mathbf{w}=\left(w_{1}, w_{2}, \cdots, w_{N}\right) w=(w1,w2,⋯,wN),用 p ( w n ) p(w_{n}) p(wn)表示词的先验概率,生成文档 w w w的概率为:
p ( w ) = ∏ n = 1 N p ( w n ) p(\mathbf{w})=\prod_{n=1}^{N} p\left(w_{n}\right) p(w)=n=1∏Np(wn)
其图模型为(图中被涂色的w表示可观测变量,N表示一篇文档中总共N个单词,M表示M篇文档):
或为:
unigram model假设文本中的词服从Multinomial
分布,而我们已经知道Multinomial分布的先验分布为Dirichlet分布。
上图中的 w n w_{n} wn表示在文本中观察到的第n个词,n∈[1,N]表示该文本中一共有N个单词。加上方框表示重复,即一共有N个这样的随机变量 w n w_{n} wn。其中, p p p和 α α α是隐含未知变量:
一般 α α α由经验事先给定, p p p由观察到的文本中出现的词学习得到,表示文本中出现每个词的概率。
该模型的生成过程是:给某个文档先选择一个主题 z z z,再根据该主题生成文档,该文档中的所有词都来自一个主题。假设主题有 z 1 , … , z k z_{1}, \ldots, z_{k} z1,…,zk,生成文档 w w w的概率为:
p ( w ) = p ( z 1 ) ∏ n = 1 N p ( w n ∣ z 1 ) + ⋯ + p ( z k ) ∏ n = 1 N p ( w n ∣ z k ) = ∑ z p ( z ) ∏ n = 1 N p ( w n ∣ z ) p(\mathbf{w})=p\left(z_{1}\right) \prod_{n=1}^{N} p\left(w_{n} \mid z_{1}\right)+\cdots+p\left(z_{k}\right) \prod_{n=1}^{N} p\left(w_{n} \mid z_{k}\right)=\sum_{z} p(z) \prod_{n=1}^{N} p\left(w_{n} \mid z\right) p(w)=p(z1)n=1∏Np(wn∣z1)+⋯+p(zk)n=1∏Np(wn∣zk)=z∑p(z)n=1∏Np(wn∣z)
其图模型为(图中被涂色的w表示可观测变量,未被涂色的z表示未知的隐变量,N表示一篇文档中总共N个单词,M表示M篇文档):
啊哈,长征两万五,经过前面这么长的铺垫,终于快要接近LDA模型了!因为跟LDA模型最为接近的便是下面要阐述的这个pLSA模型,理解了pLSA模型后,到LDA模型也就一步之遥——给pLSA加上贝叶斯框架,便是LDA。
OK,在上面的Mixture of unigrams model中,我们假定一篇文档只有一个主题生成,可实际中,一篇文章往往有多个主题,只是这多个主题各自在文档中出现的概率大小不一样。
比如介绍一个国家的文档中,往往会分别从教育、经济、交通等多个主题进行介绍。那么在pLSA中,文档是怎样被生成的呢?
假设你要写 M M M篇文档,由于一篇文档由各个不同的词组成,所以你需要确定每篇文档里每个位置上的词。
再假定你一共有 K K K个可选的主题,有 V V V个可选的词,咱们来玩一个扔骰子的游戏。
假设你每写一篇文档会制作一颗 K K K面的“文档-主题”骰子(扔此骰子能得到K个主题中的任意一个),和 K K K个 V V V面的“主题-词项” 骰子(每个骰子对应一个主题, K K K个骰子对应之前的 K K K个主题,且骰子的每一面对应要选择的词项, V V V个面对应着 V V V个可选的词)。
每写一个词,先扔该“文档-主题”骰子选择主题,得到主题的结果后,使用和主题结果对应的那颗“主题-词项”骰子,扔该骰子选择要写的词。
先扔“文档-主题”的骰子,假设(以一定的概率)得到的主题是教育,所以下一步便是扔教育主题筛子,(以一定的概率)得到教育主题筛子对应的某个词:大学。
上面这个投骰子产生词的过程简化下便是:“先以一定的概率选取主题,再以一定的概率选取词”。事实上,一开始可供选择的主题有3个:教育、经济、交通,那为何偏偏选取教育这个主题呢?其实是随机选取的,只是这个随机遵循一定的概率分布。比如可能选取教育主题的概率是0.5,选取经济主题的概率是0.3,选取交通主题的概率是0.2,那么这3个主题的概率分布便是{教育:0.5,经济:0.3,交通:0.2},我们把各个主题 z z z在文档 d d d中出现的概率分布称之为主题分布,且是一个多项分布。
同样的,从主题分布中随机抽取出教育主题后,依然面对着3个词:大学、老师、课程,这3个词都可能被选中,但它们被选中的概率也是不一样的。比如大学这个词被选中的概率是0.5,老师这个词被选中的概率是0.3,课程被选中的概率是0.2,那么这3个词的概率分布便是{大学:0.5,老师:0.3,课程:0.2},我们把各个词语 w w w在主题 z z z下出现的概率分布称之为词分布,这个词分布也是一个多项分布。
所以,选主题和选词都是两个随机的过程,先从主题分布{教育:0.5,经济:0.3,交通:0.2}中抽取出主题:教育,然后从该教育主题对应的词分布{大学:0.5,老师:0.3,课程:0.2}中抽取出词:大学。
最后,你不停的重复扔“文档-主题”骰子和”主题-词项“骰子,重复 N N N次(产生N个词),完成一篇文档,重复这产生一篇文档的方法 M M M次,则完成 M M M篇文档。
上述过程抽象出来即是PLSA
的文档生成模型。在这个过程中,我们并未关注词和词之间的出现顺序,所以pLSA
是一种词袋方法。具体说来,该模型假设一组共现(co-occurrence)词项关联着一个隐含的主题类别 z k ∈ { z 1 , … , z K } z_{k} \in\left\{z_{1}, \ldots, z_{K}\right\} zk∈{z1,…,zK}。同时定义:
利用上述的第1、3、4个概率,我们便可以按照如下的步骤得到“文档-词项”的生成模型:
所以pLSA
中生成文档的整个过程便是选定文档生成主题,确定主题生成词。
反过来,既然文档已经产生,那么如何根据已经产生好的文档反推其主题呢?这个利用看到的文档推断其隐藏的主题(分布)的过程(其实也就是产生文档的逆过程),便是主题建模的目的:自动地发现文档集中的主题(分布)。
换言之,人类根据文档生成模型写成了各类文章,然后丢给了计算机,相当于计算机看到的是一篇篇已经写好的文章。现在计算机需要根据一篇篇文章中看到的一系列词归纳出当篇文章的主题,进而得出各个主题各自不同的出现概率:主题分布。即文档 d d d和单词 w w w是可被观察到的,但主题 z z z却是隐藏的。
如下图所示(图中被涂色的 d d d、 w w w表示可观测变量,未被涂色的 z z z表示未知的隐变量, N N N表示一篇文档中总共 N N N个单词, M M M表示M篇文档):
上图中,文档 d d d和词 w w w是我们得到的样本(样本随机,参数虽未知但固定,所以pLSA属于频率派思想。区别于下文要介绍的LDA中:样本固定,参数未知但不固定,是个随机变量,服从一定的分布,所以LDA属于贝叶斯派思想),可观测得到,所以对于任意一篇文档,其是已知的。
从而可以根据大量已知的文档-词项信息 P ( w j ∣ d i ) P\left(w_{j} \mid d_{i}\right) P(wj∣di),训练出文档-主题 P ( z k ∣ d i ) P\left(z_{k} \mid d_{i}\right) P(zk∣di)和主题-词项 P ( w j ∣ z k ) P\left(w_{j} \mid z_{k}\right) P(wj∣zk),如下公式所示:
P ( w j ∣ d i ) = ∑ k = 1 K P ( w j ∣ z k ) P ( z k ∣ d i ) P\left(w_{j} \mid d_{i}\right)=\sum_{k=1}^{K} P\left(w_{j} \mid z_{k}\right) P\left(z_{k} \mid d_{i}\right) P(wj∣di)=k=1∑KP(wj∣zk)P(zk∣di)
故得到文档中每个词的生成概率为:
P ( d i , w j ) = P ( d i ) P ( w j ∣ d i ) = P ( d i ) ∑ k = 1 K P ( w j ∣ z k ) P ( z k ∣ d i ) \begin{aligned} P\left(d_{i}, w_{j}\right) &=P\left(d_{i}\right) P\left(w_{j} \mid d_{i}\right) \\ &=P\left(d_{i}\right) \sum_{k=1}^{K} P\left(w_{j} \mid z_{k}\right) P\left(z_{k} \mid d_{i}\right) \end{aligned} P(di,wj)=P(di)P(wj∣di)=P(di)k=1∑KP(wj∣zk)P(zk∣di)
由于 p ( d i ) p(d_{i}) p(di)可事先计算求出,而 P ( w j ∣ z k ) P\left(w_{j} \mid z_{k}\right) P(wj∣zk)和 P ( z k ∣ d i ) P\left(z_{k} \mid d_{i}\right) P(zk∣di)未知,所以 θ = ( P ( w j ∣ z k ) , P ( z k ∣ d i ) ) \theta=\left(P\left(w_{j} \mid z_{k}\right), P\left(z_{k} \mid d_{i}\right)\right) θ=(P(wj∣zk),P(zk∣di))就是我们要估计的参数(值),通俗点说,就是要最大化这个 θ θ θ。
用什么方法进行估计呢,常用的参数估计方法有极大似然估计 M L E MLE MLE、最大后验证估计 M A P MAP MAP、贝叶斯估计等等。因为该待估计的参数中含有隐变量 z z z,所以我们可以考虑EM算法。
EM算法,全称为Expectation-maximization algorithm
,为期望最大算法,其基本思想是:首先随机选取一个值去初始化待估计的值 θ ( 0 ) \theta^{(0)} θ(0),然后不断迭代寻找更优的 θ ( n + 1 ) \theta^{(n+1)} θ(n+1)使得其似然函数likelihood L ( θ ( n + 1 ) ) L\left(\theta^{(n+1)}\right) L(θ(n+1))比原来的 L ( θ ( n ) ) L\left(\theta^{(n)}\right) L(θ(n))要大。换言之,假定现在得到了 θ ( n ) \theta^{(n)} θ(n),想求 θ ( n + 1 ) \theta^{(n+1)} θ(n+1),使得
θ ( n + 1 ) = max θ L ( θ ) − L ( θ ′ n ) ) \left.\theta^{(n+1)}=\max _{\theta} L(\theta)-L\left(\theta^{\prime n}\right)\right) θ(n+1)=θmaxL(θ)−L(θ′n))
EM的关键便是要找到 L ( θ ) L(\theta) L(θ)的一个下界 Q ( θ ; θ n ) Q\left(\theta ; \theta^{n}\right) Q(θ;θn)(注: L ( θ ) = log p ( X ∣ θ ) L(\theta)=\log p(X \mid \theta) L(θ)=logp(X∣θ),其中, X X X表示已经观察到的随机变量),然后不断最大化这个下界,通过不断求解下界 Q ( θ ; θ n ) Q\left(\theta ; \theta^{n}\right) Q(θ;θn)的极大化,从而逼近要求解的似然函数 L ( θ ) L(\theta) L(θ)。
所以EM算法的一般步骤为:
上述过程好比在二维平面上,有两条不相交的曲线,一条曲线在上(简称上曲线 L L L),一条曲线在下(简称下曲线 Q Q Q),下曲线为上曲线的下界。现在对上曲线未知,只已知下曲线,为了求解上曲线的最高点,我们试着不断增大下曲线,使得下曲线不断逼近上曲线,下曲线在某一个点达到局部最大值并与上曲线在这点的值相等,记录下这个值,然后继续增大下曲线,寻找下曲线上与上曲线上相等的值,迭代到 L ( θ ) L(\theta) L(θ)收敛(即 Q ( θ ; θ n ) Q\left(\theta ; \theta^{n}\right) Q(θ;θn)收敛)停止,从而利用当前下曲线上的局部最大值当作上曲线的全局最大值(换言之,EM算法不保证一定能找到全局最优值)。如下图所示:
以下是详细介绍。
假定有训练集 { x ( 1 ) , … , x ( m ) } \left\{x^{(1)}, \ldots, x^{(m)}\right\} {x(1),…,x(m)},包含 m m m个独立样本,希望从中找到该组数据的模型 p ( x , z ) p(x,z) p(x,z)的参数。
然后通过极大似然估计建立目标函数–对数似然函数:
ℓ ( θ ) = ∑ i = 1 m log p ( x ; θ ) = ∑ i = 1 m log ∑ z p ( x , z ; θ ) \begin{aligned} \ell(\theta) &=\sum_{i=1}^{m} \log p(x ; \theta) \\ &=\sum_{i=1}^{m} \log \sum_{z} p(x, z ; \theta) \end{aligned} ℓ(θ)=i=1∑mlogp(x;θ)=i=1∑mlogz∑p(x,z;θ)
这里, z z z是隐随机变量,直接找到参数的估计是很困难的。我们的策略是建立 ℓ ( θ ) \ell(\theta) ℓ(θ)的下界,并且求该下界的最大值;重复这个过程,直到收敛到局部最大值。
令 Q i Q_{i} Qi是 z z z的某一个分布, Q i Q_{i} Qi≥0,且结合Jensen不等式,有:
∑ i log p ( x ( i ) ; θ ) = ∑ i log ∑ z ( i ) p ( x ( i ) , z ( i ) ; θ ) = ∑ i log ∑ z ( i ) Q i ( z ( i ) ) p ( x ( i ) , z ( i ) ; θ ) Q i ( z ( i ) ) ≥ ∑ i ∑ z ( i ) Q i ( z ( i ) ) log p ( x ( i ) , z ( i ) ; θ ) Q i ( z ( i ) ) \begin{aligned} \sum_{i} \log p\left(x^{(i)} ; \theta\right) &=\sum_{i} \log \sum_{z^{(i)}} p\left(x^{(i)}, z^{(i)} ; \theta\right) \\ &=\sum_{i} \log \sum_{z^{(i)}} Q_{i}\left(z^{(i)}\right) \frac{p\left(x^{(i)}, z^{(i)} ; \theta\right)}{Q_{i}\left(z^{(i)}\right)} \\ & \geq \sum_{i} \sum_{z^{(i)}} Q_{i}\left(z^{(i)}\right) \log \frac{p\left(x^{(i)}, z^{(i)} ; \theta\right)}{Q_{i}\left(z^{(i)}\right)} \end{aligned} i∑logp(x(i);θ)=i∑logz(i)∑p(x(i),z(i);θ)=i∑logz(i)∑Qi(z(i))Qi(z(i))p(x(i),z(i);θ)≥i∑z(i)∑Qi(z(i))logQi(z(i))p(x(i),z(i);θ)
为了寻找尽量紧的下界,我们可以让使上述等号成立,而若要让等号成立的条件则是:
p ( x ( i ) , z ( i ) ; θ ) Q i ( z ( i ) ) = c \frac{p\left(x^{(i)}, z^{(i)} ; \theta\right)}{Q_{i}\left(z^{(i)}\right)}=c Qi(z(i))p(x(i),z(i);θ)=c
换言之,有以下式子成立: Q i ( z ( i ) ) ∝ p ( x ( i ) , z ( i ) ; θ ) Q_{i}\left(z^{(i)}\right) \propto p\left(x^{(i)}, z^{(i)} ; \theta\right) Qi(z(i))∝p(x(i),z(i);θ),且由于有: ∑ z Q i ( z ( i ) ) = 1 \sum_{z} Q_{i}\left(z^{(i)}\right)=1 ∑zQi(z(i))=1
所以可得:
Q i ( z ( i ) ) = p ( x ( i ) , z ( i ) ; θ ) ∑ z p ( x ( i ) , z ; θ ) = p ( x ( i ) , z ( i ) ; θ ) p ( x ( i ) ; θ ) = p ( z ( i ) ∣ x ( i ) ; θ ) \begin{aligned} Q_{i}\left(z^{(i)}\right) &=\frac{p\left(x^{(i)}, z^{(i)} ; \theta\right)}{\sum_{z} p\left(x^{(i)}, z ; \theta\right)} \\ &=\frac{p\left(x^{(i)}, z^{(i)} ; \theta\right)}{p\left(x^{(i)} ; \theta\right)} \\ &=p\left(z^{(i)} \mid x^{(i)} ; \theta\right) \end{aligned} Qi(z(i))=∑zp(x(i),z;θ)p(x(i),z(i);θ)=p(x(i);θ)p(x(i),z(i);θ)=p(z(i)∣x(i);θ)
最终得到EM算法的整体框架如下:
OK,EM算法还会在本博客后面的博文中具体阐述。接下来,回到pLSA参数的估计问题上。
首先尝试从矩阵的角度来描述待估计的两个未知变量 P ( w j ∣ z k ) P\left(w_{j} \mid z_{k}\right) P(wj∣zk)和 P ( z k ∣ d i ) P\left(z_{k} \mid d_{i}\right) P(zk∣di)。
假定用 ϕ k \phi_{k} ϕk表示词表 V V V在主题 z k z_{k} zk上的一个多项分布,则 ϕ k \phi_{k} ϕk可以表示成一个向量,每个元素 ϕ k , j \phi_{k, j} ϕk,j表示词项 w j w_{j} wj出现在主题 z k z_{k} zk中的概率,即
P ( w j ∣ z k ) = ϕ k , j , ∑ w j ∈ V ϕ k , j = 1 P\left(w_{j} \mid z_{k}\right)=\phi_{k, j}, \quad \sum_{w j \in \mathcal{V}} \phi_{k, j}=1 P(wj∣zk)=ϕk,j,wj∈V∑ϕk,j=1
用 θ i \theta_{i} θi表示所有主题 z z z在文档 d i d_{i} di上的一个多项分布,则 θ i \theta_{i} θi可以表示成一个向量,每个元素 θ i , k \theta_{i,k} θi,k表示主题 z k z_{k} zk出现在文档 d i d_{i} di中的概率,即
P ( z k ∣ d i ) = θ i , k , ∑ z k ∈ Z θ i , k = 1 P\left(z_{k} \mid d_{i}\right)=\theta_{i, k}, \quad \sum_{z_{k} \in \mathcal{Z}} \theta_{i, k}=1 P(zk∣di)=θi,k,zk∈Z∑θi,k=1
这样,巧妙的把 P ( w j ∣ z k ) P\left(w_{j} \mid z_{k}\right) P(wj∣zk)和 P ( z k ∣ d i ) P\left(z_{k} \mid d_{i}\right) P(zk∣di)转换成了两个矩阵。
换言之,最终我们要求解的参数是这两个矩阵:
Φ = [ ϕ 1 , ⋯ , ϕ K ] , z k ∈ Z \Phi=\left[\phi_{1}, \cdots, \phi_{K}\right], \quad z_{k} \in \mathcal{Z} Φ=[ϕ1,⋯,ϕK],zk∈Z
Θ = [ θ i , ⋯ , θ M ] , d i ϵ D \Theta=\left[\theta_{i}, \cdots, \theta_{M}\right], d_{i} \epsilon D Θ=[θi,⋯,θM],diϵD
由于词和词之间是相互独立的,所以整篇文档N个词的分布为:
P ( W ∣ d i ) = ∏ j = 1 N P ( d i , w j ) n ( d i , w j ) P\left(W \mid d_{i}\right)=\prod_{j=1}^{N} P\left(d_{i}, w_{j}\right)^{n\left(d_{i}, w_{j}\right)} P(W∣di)=j=1∏NP(di,wj)n(di,w