参数聚类方法中需要对参数进行选择。一旦确定参数,比如k-means里的k,模型的规模与适用范围就已确定。而对于事先不能确定问题规模的问题,比如对分类个数不确定,这时需要使用非参数贝叶斯方法来对参数进行对问题规模的适应,参数将跟随数据的增多而增多。参数聚类属于确定模型(deterministic model),而非参数聚类属于生成模型(generative model)。

  从另一个角度,参数聚类是基于模型的聚类,而且是有限混合模型,我们只需要对模型的参数进行训练求取;而非参数聚类则是无限混合模型,模型的参数是不确定的。我们可以通过引入先验概率对模型参数进行初始化,比如分类个数是一个,然后根据训练数据改变对其的估计。        

       推荐先看此文入门。http://blog.echen.me/2012/03/20/infinite-mixture-models-with-nonparametric-bayes-and-the-dirichlet-process/

      以及创始人的ppthttp://mlg.eng.cam.ac.uk/tutorials/07/ywt.pdf

  狄里克莱过程G~DP($\alpha$,H)有很多不同的描述。

  Chinese Restaurant Process(CRP),Polya Urn Model(PUM)都是模拟DPMM生成数据的。其中CRP是把人选择的餐桌作为输出,但是餐桌的菜种类是不同的,对应PUM中的球的颜色。而PUM是以颜色作为输出,颜色所属的类并没有单独拿出来,所以两个都是DPMM的不同描述,一个是隐变量,一个是显变量。

  而Stick-Breaking Process(SBP)则是DMPP的另一种描述形式。这里首先根据$\alpha$将参数空间划分成无穷个,适用的是GEM()函数. $\alpha$越大,由http://www.cnblogs.com/huashiyiqike/articles/3232082.html中的图像可以看出,Beta(1,$\alpha$)产生的$\beta$越大,则相对而言新的划分的面积越大,分类总个数倾向于增大。

  Dirichlet process mixture modle,是在dp的基础上加上最外层的一个分布函数。总体来说,就是根据$\alpha$来决定生成一个新的cluster的概率,也就是对参数空间进行新的划分的概率,然后根据H这个base function来确定一个参数(在CRP里是人选择的餐桌),这个参数用来给最外面的一个函数生成最终的数据(在PUM里是球的颜色)。其中,H需要满足对所有的划分$T_{1...K}$,$\alpha$H($T_{i}$)服从Dirichlet分布,即选择任意一个$\alpha$H($T_{i}$)的概率加和之后为1.

 

以下转自http://hi.baidu.com/zentopus/item/46a622f5ef13e4c5a835a28e 

Dirichlet Process and Hierarchical Dirichlet Process

       在这篇文章里,我会初步地介绍Dirichlet Process以及Hierarchical Dirichlet Process,不过仅仅局限于模型本身,并不涉及其inference和具体的application。

       首先,我将简单地介绍Dirichlet分布。Dirichlet分布可以看做是分布之上的分布。其定义为对于一个K维的probability simplex:


   Dirichlet Process and Hierarchical Dirichlet Process

       我们说这组Dirichlet Process and Hierarchical Dirichlet Process是Dirichlet distributed, 参数为Dirichlet Process and Hierarchical Dirichlet Process如果其满足:
   

Dirichlet Process and Hierarchical Dirichlet Process

 

       如何理解这个定义呢?我们可以举个例子:假设我们有一个从魔术店买来的骰子,我们不知道这是不是一个和普通骰子一样均匀的骰子,即每面出现的概率都是1/6。那么我们现在就可以用一个分布来描述我们对于这个骰子的uncertainty,也就是说,我们想知道这个骰子是一个公平的骰子的概率是多少。那么这个分布,就可以是一个Dirichlet Distribution,只要我们可以将这个分布描述为上述的数学形式。我们再看一眼这个例子,投掷一次骰子,必然会有一面出现(这是一个好骰子),那么六面出现的概率总和必然为1,换句话说,我们可以用这样一个分布来描述骰子出现的概率。而后我们又想知道,这样一个分布出现的概率是多少,那么我们就可以用Dirichlet分布来描述它。从而我们可以说,Dirichlet分布是一个分布之上的分布。
    

Dirichlet Process

    接下来,我们将从Dirichlet分布过渡到Dirichlet Process。

    首先,我们先来看一下probability measure的概念:我们定义G为可度量空间X上的一个probability measure,如果其满足:

Dirichlet Process and Hierarchical Dirichlet Process

       

       我们还是从刚才的骰子的例子开始,我们现在认为整个骰子所描述的事件空间为一个可度量的空间。一个骰子投掷出去之后,六面必然有一面出现,那么我们可以自然地将整个空间分成为6个部分,我们称每一个部分为一个划分。那么针对这种六个划分的情况,我们可以有一个对应于这个划分的Dirichlet分布。现在我们想做一些调整,我们将骰子投掷出去的结果分成了2种,一种是大{4,5,6},另外是小,对应于{1,2,3}。那么我们可以认为整个空间,被分割成为了2个划分,那么相应的,我们可以对这样一种划分有一个对应的Dirichlet分布。现在我们将其进行一个一般性的描述。假设我们现在有一个可度量的空间X,其上的任意一个有限(finite)划分(partition)满足:

 

Dirichlet Process and Hierarchical Dirichlet Process


       我们说一个probability measure G服从都Dirichlet Process,如果其满足:对于这个可度量空间上的任意一个有限划分,以及一个实数Dirichlet Process and Hierarchical Dirichlet Process一个probability measure G0:


Dirichlet Process and Hierarchical Dirichlet Process


       这里G0称作base measure,有些类似于这个DP的均值(mean),Dirichlet Process and Hierarchical Dirichlet Process称作Strength parameter, 有些类似于这个DP的inverse-variance,在描述一个DP的时候,我们写作:


Dirichlet Process and Hierarchical Dirichlet Process

       接下来,我将简单介绍一下其对应的几种常见的表现形式

The Chinese Restaurant Process

       把Chinese Restaurant Process(CRP)放在最前,是我认为这是最容易理解的一种表现形式。其对应的并不是G本身,而是对应一个从G进行sampling的过程。

       假设现在有一家中餐馆,里面有无限多的桌子,当然,不是所有桌子上都坐了人。首先进来第一个顾客,第一个顾客只能坐在一号桌子。他坐下之后点了一个菜(这个菜的分量足够大)。然后进来了第二个顾客,他看了一眼一号桌的菜,如果他喜欢吃的话,就坐到一号桌去,如果不喜欢的话,就另外再开一桌,自己点菜。假设这个过程一直下去,当第i个顾客进店的时候,假设这时候已经有了k桌菜,这个顾客巡视了一圈,然后寻找自己喜欢的菜。我们认为他是一个具有大众口味的人,他选择某一桌的概率,完全正比于这桌上坐了多少个顾客。如果他实在没有找到喜欢的菜,他也可以新开一桌,新开一桌的概率正比于某个初始的数值。

       现在我们数学一点来看待这个过程:假设每一个sampleDirichlet Process and Hierarchical Dirichlet Process,对应于一个顾客。那么我们可以认为第i个sample选择桌子k的概率为Dirichlet Process and Hierarchical Dirichlet Process的概率,Dirichlet Process and Hierarchical Dirichlet Process代表了这桌的菜Dirichlet Process and Hierarchical Dirichlet Process。这个概率正比于已经坐在这桌的顾客数量Dirichlet Process and Hierarchical Dirichlet Process,而这个顾客开一个新桌的概率则正比于初始化的参数Dirichlet Process and Hierarchical Dirichlet Process.

       从刚才的描述中,我们已经看出了Dirichlet Process所获得的样本是离散的,并且其抽样过程中体现出了一种聚类的特性。而这些特性不受Base Measure是离散或者连续的影响。

       出了CRP之外,还有一个非常类似的方式,称之为Polya urn scheme(Blackwell 1973)。这个过程和CRP非常相似。假设我们现在有一组samples:

Dirichlet Process and Hierarchical Dirichlet Process


       这组样本是i.i.d的,并且其满足:

Dirichlet Process and Hierarchical Dirichlet Process


       我们可以这样理解抽样的过程:我们现在口袋里有很多很多球,都是不同颜色的。我们从中取出一个球,鉴别了它的颜色,然后拿一个和这个球一样颜色的球和这个球一块儿放回去。如此往复,得到了我们现有的一组样本。

       我们和CRP统一一下,则这个过程可以表现为:

Dirichlet Process and Hierarchical Dirichlet Process



       如果G的sample可以满足上述的分布,我们就认为从G符合DP。


Stick-breaking Construction

       除了CRP之外,我们还可以通过别的方式来构造一个DP,这就是Stick-breaking construction。整个构造过程如下:

Dirichlet Process and Hierarchical Dirichlet Process



       我们观察上面的这个过程,可以发现sampleDirichlet Process and Hierarchical Dirichlet Process的过程,就相当于CRP中给每个桌子赋予一个值,而获取Dirichlet Process and Hierarchical Dirichlet Process的过程,则是确定每个桌子上的顾客数量。

       我们注意到:

Dirichlet Process and Hierarchical Dirichlet Process


       所以,我们可以将Dirichlet Process and Hierarchical Dirichlet Process解释为一个random probability measure。并且,如果Dirichlet Process and Hierarchical Dirichlet Process是以这样的方式产生的,我们可以将其写为:

Dirichlet Process and Hierarchical Dirichlet Process


       GEM代表三个人名,分别为:Griffith,Engen和McCloskey


Dirichlet Process Mixture

       另一个理解DP的角度,就是从一个混合模型来看。假设在一个混合模型中,我们不知道component的明确数量,这时候我们应该怎么处理呢?常规的方法是,重复做多次试验,每次试验中假设不同的数量的component,而后利用AIC,BIC等判别方式来进行选择。但是这样的方式又耗时又费力,有没有轻松一些的方式呢?DP mixture model给了我们一个新的选择,其关键点在于,认为空间中是有无限多的mixtrue component的,但是根据我们的数据,只有其中有限个的component被激活了,并且,这些激活的component的proportion满足一个Dirichlet Distribution。下面我们就从一个有限的mixture model出发,来推广到一个DP mixtrue model。

       我们假设这个mixtrue model有L个component,我们用Dirichlet Process and Hierarchical Dirichlet Process来表示每个component的proportion,并且,我们给这个proportion加上一个对称的Dirichlet先验,则我们有:

Dirichlet Process and Hierarchical Dirichlet Process


       我们用z代表每个sample的component assignment,即选中了哪一个component,用Dirichlet Process and Hierarchical Dirichlet Process代表每个component的参数,而这组参数符合一个分布G0,则我们有:

Dirichlet Process and Hierarchical Dirichlet Process



       我们此时可以得到一个分布Dirichlet Process and Hierarchical Dirichlet Process

Dirichlet Process and Hierarchical Dirichlet Process


       而如果我们将L推向infinite,则这个模型便成为了DP mixture, 如同下图

Dirichlet Process and Hierarchical Dirichlet Process



       我们再完整地看一次DP mixture的生成过程:

Dirichlet Process and Hierarchical Dirichlet Process



Why Dirichlet Process

       我们用了这么复杂的数学手段,搞出来一个DP,是为什么呢?我们观察DP,发现其有一个非常重要的特性,即在抽样的过程中,可以获取到值相等的2个样本。这有什么重要意义呢?这意味着这一过程本身在重复抽样的过程中,就完成了一个聚类的过程。并且我们注意到,DP对于其Base Measure并无要求,也就是说其Base Measure可以为连续的分布。而我们知道,对于一个连续的分布,其抽样的过程中,两个样本完全相同的概率为绝对的0,而DP则可以在这个分布的基础上,将样本离散化,使得2个样本的值相同的概率不为0。

 

Hierarchical Dirichlet Process
       

       我们发现DP具有很好的聚类的特性,并且我们也不用事先设定好类别的数量,使得整个过程变得更为智能。
 
       那么我们现在考虑另一个问题,假设我们已经有了很多数据,并且数据自身是按照组别出现的,每一组数据都可以看做一个mixture model。除了组别内部是mixture model之外,我们还希望这些mixture component是可以share的。我们换一个角度来看这个问题:假设我们现在有一个巨大的空间,整个空间中包含了无数的mixture component,我们每次选择其中的几个,然后利用这几个component生成一组数据。我们把一组一组的数据放在一起,就得到了我们现在所拥有的数据。我们现在希望可以用mixture model来描述这样一种数据,DP可以帮上什么忙么?
 
       我们注意到,在每一组数据中,我们需要进行一次clustering,这意味着我们可以选择DP来描述某一组数据。但是我们又希望在整个数据中share component,一个很原始的原始的想法,就是限制DP的Base Measure为离散的,从而让我们有固定的component可以进行选择。但是这样就使得问题失去了一般性,并且我们还需要面对一个问题,如何选择这样一个Base Measure以及其component数量。这时候,我们发现这个问题其实和针对每一个组内的问题是一致的,那么我们很自然地就想到了,在这一层上我们再利用一次DP来描述,从而使得我们可以克服这些麻烦的问题。那么在DP之上再引入一层DP的模型,就是Hierarchical Dirichlet Process(HDP)。其图模型可以参看下图

Dirichlet Process and Hierarchical Dirichlet Process



       现在我们从生成模型的角度,来看一下这整个的过程:

Dirichlet Process and Hierarchical Dirichlet Process



Chinese Restaurant Franchise

       和DP一样,我们也可以用中餐馆这样一个描述方式来加强对于这个问题的理解。

       这次,我们不是有一个中餐馆,我们有一家中餐连锁店,每一家都有一样的一份菜单。对于第j家餐馆,我们考虑其第i个顾客。和之前一样,这个顾客走进这家餐馆之后,选择坐在已有的一桌,或者是新开辟一桌。不过这里有一点特别的是,我们允许不同的餐馆中的不同的桌子点相同的菜,因为这些顾客是从同一份菜单里点菜的,当然,每桌还是只有一个菜。那么从一个餐馆的层面来说,我们有:

Dirichlet Process and Hierarchical Dirichlet Process



       那么,在选择每桌的菜的层面上,我们有:

Dirichlet Process and Hierarchical Dirichlet Process



       我们注意到,在整个过程中,各种菜是可以在组间和组内共享的,这是HDP的关键特性。

Stick-breaking Construction

       现在,我们再从Stick-breaking Construction的角度来看一看HDP。

       从图中我们可以看出,G0是符合DP的,根据之前我们对于DP的描述,我们有:

Dirichlet Process and Hierarchical Dirichlet Process


       其中:

Dirichlet Process and Hierarchical Dirichlet Process


       既然G0有supportDirichlet Process and Hierarchical Dirichlet Process,那么自然的,以G0为Base Measure的Gj也有相同的support,则:

Dirichlet Process and Hierarchical Dirichlet Process


       其中,满足:

Dirichlet Process and Hierarchical Dirichlet Process


       在给定Dirichlet Process and Hierarchical Dirichlet Process的情况下,Dirichlet Process and Hierarchical Dirichlet Process之间是相互独立的。那么Dirichlet Process and Hierarchical Dirichlet ProcessDirichlet Process and Hierarchical Dirichlet Process之间的关系又是如何呢?

       我们知道,根据DP的定义,对于可度量空间上的任意一种有限划分{A1,A2,...,Ar},我们有:

Dirichlet Process and Hierarchical Dirichlet Process


       那么,这也就意味着:

Dirichlet Process and Hierarchical Dirichlet Process



       从这个式子中,我们就不难看出:

Dirichlet Process and Hierarchical Dirichlet Process


       而Dirichlet Process and Hierarchical Dirichlet ProcessDirichlet Process and Hierarchical Dirichlet Process,我们则认为其均为probability measure。

       那么对于图中所描述的混合模型,我们的完整的生成模型为:

Dirichlet Process and Hierarchical Dirichlet Process


       其中

Dirichlet Process and Hierarchical Dirichlet Process



Discussion

       相同的问题,我们为什么要使用HDP?最基本的理由是,如果我们遇到这样的数据集的时候,即一个component会不断变化的mixture model,并且在subgroup中,component是可以共享的这样一个数据集,我们就可以利用HDP来进行建模。实际中,HDP也已经被广泛的使用,应用包括topic modeling,cognitive science等等。

       HDP本身是Dependent Dirichlet Process(DDP)的一种具体的形式,它能够有效地描述这种垂直的层级关系。但是HDP也有局限性,其并不能描述即时变化,不能够描述component的生成与消亡。而在解决这个问题上,目前我们可以依靠Poisson Process Based Dependent Dirichlet Process来给出一个方案,这其中利用了Poisson Process,Gamma Process以及DP的内在关系,具体可以看Dahua Lin的NIPS 2010文章。有时间的话,我也会把对那个模型做一个简单的描述。

       HDP可以利用Variational Inference和Gibbs Sampling来进行"求解",Wang Chong也提出了一种Online的算法,其中利用了一种不同的Stick-breaking的构造方式,来使得上下两层关系之间进行解耦,从而能够进行Online的求解过程。

相关文章: