【转】LDA预备知识

来源:互联网 发布:spring 编程实例 编辑:程序博客网 时间:2024/05/16 11:24
 

LDA预备知识 


     如果牢固掌握这些预备知识,理解原文会更容易些。 

     - p(X|Y)的记法。注意|右边的Y既可以表示随机变量(已经取定了某具体值),也可以表示普通的非随机变量。这样我们可以在最大似然估计和 Bayes方法间方便的切换,而不会让符号记法影响我们的表述。例如,考虑具有确定但未知参数μΣ的高斯分布p(x),可以记为p(x|μ,Σ); 若按照Bayes学派观点,可以将μΣ也看作随机变量,x的分布就能记为随机变量μΣ取定某值后的条件分布p(x|μ,Σ)——统一的记法。 

     - k1分布/多项式分布(Multinomial)。考虑取3个离散值的随机变量~ p(x)。这个看似很平庸的分布...就是所谓的1分布或称多项式分布。一般我们习惯的把它记为p(x_i) = u_i, i = 1,2,3,u_1 + u_2 + u_3 = 1. 但在有 些数学推导中,将它记为指数形式会更方便些.x看作3维的随机向量,各分量是互斥的,即它只能取(1,0,0),(0,1,0),(0,0,1)三 组值。于是可将分布重新记为 p(x) = (u_1^x_1)*(u_2^x_2)*(u_3^x_3).注意论文原文中Multinomial就是这 儿说的k1分布,与一些概率教科书中的定义不同。一般的k维情况依次类推。具体参[Bishop]2.2

     - 共轭先验分布(Conjugate Prior)。考虑某概率密度函数,要估计其中的参数t。按照Bayes学派的观点,参数 ~ p(t).我们有p(t|X) ∝ p(X|t)p(t),这个式子说:在没有做任何观测时,我们对t的知识用先验分布p(t)表示。当观察到后,就通过该式将先验概率p(t)更新(计算)为后验概率p(t|X),使我们对t的知识增加。仔细观察,若p(t)p(X|t)有相同的函数形式,那 么后验概率p(t|X)就与先验概率p(t)有相同的函数形式——这使得t的后验概率与先验概率具有相同的表达式,只是参数被更新了! 更妙的是,本次后 验概率可以作为下次观测时的先验概率,于是当继续进行观测X_2,X_3...时,只是不断的在更新先验概率p(t)的参数,p(t)的函数形式不变。具 体参见[Bishop]2.2节。 
     这也是Bayes学派饱受批评的地方:先验概率的选取有时只是方便数学推导,而非准确的反映我们的先验知识。 

     - Dirichlet分布。现在我们可以说,Dirichlet分布就是k1分布的Conjugate Prior。若k维随机向量 θ ~ Drichlet分布,则θk个分量θ_1,θ_2,...,θ_k都取连续的非负值,且 θ_1 + θ_2 + ... + θ_k = 1Dirichlet分布的具体表达式参见[Bishop]2.2节。 

     - Simplex。考虑2维的例子:以(0,1)(1,0)为端点的线段就是simplex。考虑3维的例子,以(0,0,1), (0,1,0),(0,0,1)为端点的三角形内部就是simplex。更高维的情况可依次类推。考虑θ ~ Drichlet分布。注意到θk个分量 θ_1,θ_2,...,θ_k都取连续的非负值,且θ_1 + θ_2 + ... + θ_k = 1,可知Dirichlet分布的定义域是一个 simplex.这也就是原文中Figure 2那个三角形的含义(k = 3的示意图,让这个simplex三角形平躺在水平面上)。参见 [Bishop]2.2节 

     - Graphical Models. 就是用图来表示随机变量中的依赖关系。这个tutorialgoogle一大把。建议参考 [Bishop]8.1节,了解几个符号(空心圆圈——隐藏(latent)变量,实心圆圈——观察(observed)变量,方框——重复次数)就足 够看懂原文中的Figure 1Figure 3了。最多再看看[Bishop]8.2节 

     - EM.关于这个的tutorial很多,但我觉得[Bishop]9.2节是数学处理最为简洁,最容易看懂的(有个tutorial在关键 的几步中用了大量,让人抓狂。另外[Bishop]9.4节也值得看,为理解其它内容如variational inference有好处。 

    - Variational Inference. 就是计算后验概率的近似方法。考虑随机变量{X,Z},其中X是观察变 量,Z = {Z_1,Z_2}是隐藏变量。用EM法或做Bayes推理的关键一步,就是要求后验概率p(Z|X).不巧的是,在一些复杂问题中 p(Z|X)没有解析表达式,需要近似求解.相关的方法很多,一种经常使用的是基于可分解(factorization)假设的方 法:p(Z|X) ≈ p(Z_1|X)p(Z_2|X)——就是说强行假设Z_1Z_2条件独立——然后进行后续推导。 
     这一假设当然会产生误差,考虑二维高斯分布p(Z|X) = p(Z_1,Z_2|X)Z_1Z_2不独立,所以p(Z_1,Z_2|X)的 等高图是同心椭圆,椭圆可任意倾斜(例如,若Z_1Z_2的线性相关系数是1,则椭圆倾斜45°)。现简记 p(Z_1|X) = q_1(Z_1), p(Z_2|X) = q_2(Z_2),我们想改变q_1q_2,用q_1*q_2去拟合 p(Z_1,Z_2|X).但无论如何改变q_1q_2的形式,q_1*q_2的椭圆等高线都是长轴、短轴分别与Z_1轴、Z_2轴平行!不过,合适的 q_1q_2保证q_1*q_2p(Z|X)的峰值点重合,一般这就足以解决实际问题了。详细讲解可以参见[Bishop]的第10章。也可参考 [Winn]1.8节。 
     另外,[Winn]提出了通用的计算框架,你不必每次都先用Variational Inference推导出公式,再手工编写代码;你只用在一 个GUI里编辑好Graphical Model,再点start...(作为类比,考虑离散的线性系统转移函数H(z),你可以由此推导出差分方程的表 达式,然后用Matlab编程求解;也可以在Simulink中编辑好框图,再点start...) 


参考文献 


     [Bishop] Pattern Recognition And Machine Learning. C.M.Bishop. Springer, 2006cryppie在本版曾发过电子版)     
     [Winn] Variational Message Passing and its Applications. John M. Winn. Ph.D. dissertation, 2004(google

原创粉丝点击