LDA导读

文本处理、图像标注中的一篇重要论文Latent DirichletAllocation

原文信息 :



Latent Dirichlet Allocation
David.M.Blei
Andrew.Y.Ng
Michael.I.Jordan
JMLR2003
(可google到)


原文的主要内容

有两种方法设计分类器:
1. discriminative model,就是由样本直接设计判别函数,例如SVM;
2. generative model,就是先从样本恢复概率模型——例如我们熟悉的参数方法:混合高斯模型GMM;非参数方法Parzen窗。然后再充分挖掘模型,用以分类。例如Bayes最大后验概率准则;或者将模型中的参数当作提取的特征(参数一般都比较少,所以这么做实际上是在降维),在这些新特征上设计分类器(例如又用SVM)。
恢复的模型可生成新的样本,所以得名generative。

原文就是讲了一种建立generative model的方法,用于文本处理。
对文本(document)中各单词(word)的出现频率(简称词频)建立概率模型通常是文本处理的第一步。

开始讨论前,先做如下约定:
- 仅考虑文本的词频,而不考虑单词在文本中出现的先后顺序及其约束关系
- 文本中的单词来自大小为|V|的词汇表。例如: V = {FILM, MUSIC, TAX, MILLION, STUDENT,TEACHER, SCHOOL}. |V| = 7
- 每篇文本有N个单词
- 文本来自k个主题(topic)。例如: T = {Arts, Budgets, Education}. k = 3

一种简单直观的词频概率模型——unigram model(原文Figure3(a))这样描述某一文本中单词的“发生方式”:
For each of the N words w_n:
Choose a word w_n ~ p(w);
其中,w是离散随机变量,在词汇表V中取|V|个离散的值。p(w)是w的分布,可由训练样本通过机器学习或其它方法获得。这个模型就是每个单词的词频,没有考虑文本的主题,过于简单。于是我们引出考虑了文本主题的模型——

Mixture of unigram(原文中Figure 3(b)). 它这样描述某一文本中单词的“发生方式”:
Choose a topic z ~ p(z);
For each of the N words w_n:
Choose a word w_n ~ p(w|z);
其中,z是离散随机变量,在主题T中取k个离散值,p(z)是z的分布;w_n是离散随机变量,在词汇表V中取|V|个离散值,p(w|z)是给定z时w的条件分布。z可取k个值,w可取|V|个值,p(w|z)可看作一个k×|V|的矩阵,可由训练样本通过机器学习或其它方法获得。
对照我们在前面的约定中给出的V和T的具体示例,p(w|z)是3×7矩阵。若p(w|z)的第1行表示主题{Education}——可以想象这个主题的文本中{STUDENT, TEACHER, SCHOOL}的词频会高些,其它单词的词频会低些——因此该行的行向量所表示的分布p(w|z)会在{STUDENT, TEACHER,SCHOOL}附近出现峰值;若第2行表示主题{Budgets},p(w|z)就会在{TAX,MILLION}附近出现峰值...
在“发生”一篇文本前先随机选出p(w|z)的第z行(根据分布p(z));再依次随机选出第z行的w_1,w_2,...,w_N列(每次选取都根据分布p(w|z)),这就“发生”出了文本中的所有单词。
但是这个模型只允许一篇文本有一个主题,这是不够妥当的。一篇关于北邮科研经费的文本,可能 {STUDENT, TEACHER,SCHOOL, TAX, MILLION}的词频都很高——这个文本同时具有两个主题{Education,Budgets}。如何模拟一篇文本多个主题的情形呢?在此,我们跳过pLSI模型,直接引入原文探讨的——

Latent Dirichlet Allocation (LDA, 原文中Figure 1).它这样描述某一文本中单词的“发生方式”:
Choose parameter θ ~ p(θ);
For each of the N words w_n:
Choose a topic z_n ~ p(z|θ);
Choose a word w_n ~ p(w|z);
其中θ是一个1×k的随机行向量,p(θ)是θ的分布,它的具体函数形式就是Dirichlet分布,这一分布保证θ的k个分量θ_1,θ_2,...,θ_k都取连续的非负值,且θ_1 + θ_2 + ... + θ_k =1;z_n是离散随机变量,在主题T中取k个离散值,p(z|θ)是给定θ时z的条件分布,它的具体函数形式很简单,就是把θ直接拿来作为概率值:p(z= i|θ) = θ_i,也就是说z取第1,2,...k个主题的概率分别是θ_1,θ_2,...,θ_k;w_n是离散随机变量,在词汇表V中取|V|个离散值,p(w|z)是给定z_n时w的条件分布。和前面一样,可以把它看作k×|V|的矩阵。
LDA在“发生”一篇文本前,先随机生成一个1×k的向量θ(根据Dirichlet分布p(θ)),生成的这个θ非负且归一化,可以看作某个随机变量的分布(也就是说,Dirichlet可以看作是分布的分布...);然后随机选取p(w|z)的第z_1行(根据分布p(z|θ)),接着随机选取z_1行的w_1列(根据分布p(w|z =z_1)),同样的方法依次选出z_2,w_2,...z_N,w_N,这就“发生”出了文本中的所有单词。

剩下的任务就是如何根据训练样本学习出LDA模型的具体形式。模型无非是含有控制参数的表达式,学习出了参数就确定了模型。我们看看LDA有哪些控制参数呢?
- 分布p(θ)的表达式需要一个1×k行向量的参数,记为α
- p(w|z)可看作k×|V|的矩阵,记该矩阵为β
把w看作观察变量,θ和z看作隐藏变量,就可以通过著名的EM算法学习出α和β,但这一过程中后验概率p(θ,z|w)无法计算出解析表达式,因此需要近似解,原文中使用了基于分解(factorization)假设的变分法(VariationalMethods),其实也就是先假设θ和z在给定w时条件独立:p(θ,z|w) ≈p(θ|w)*p(z|w),然后进行后续推导(参考本导读“预备知识 ” - VariationalInference)。这一套方法原文叫做variationalEM,推导过程确实有些复杂,但最后总结出的不过是几个可以通过迭代求解的表达式(参见原文5.3节的1.2.两步)。

最后理一下原文的结构
1 Introduction 综述其它方法
2 Notation and terminology 符号约定
3 Latent Dirichlet allocation 详细介绍
4 Relationship with other latent variable models LDA与 unigram,mixture of unigram,pLSI的区别。前两个本导读已经提到了,建议读者再仔细比较pLSI和LDA的区别,理解为什么作者说pLSI不是well-definedgraphic model
5 Inference and Parameter Estimation Inference部分介绍了 variationalinference,就是本导读前面提到的如何近似计算隐藏变量的后验概率。Parameter Estimation就是用EM法估计α和β
6 Examples和7 Applications and Empirical Results给出的具体例子、应用和实验结果


预备知识


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

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

- k取1分布/多项式分布(Multinomial)。考虑取3个离散值的随机变量x ~p(x)。这个看似很平庸的分布...就是所谓的k 取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就是这儿说的k取1分布,与一些概率教科书中的定义不同。一般的k维情况依次类推。具体参[Bishop]的2.2节.

- 共轭先验分布(Conjugate Prior)。考虑某概率密度函数,要估计其中的参数t。按照Bayes学派的观点,参数 t ~p(t).我们有p(t|X) ∝p(X|t)p(t),这个式子说:在没有做任何观测时,我们对t的知识用先验分布p(t)表示。当观察到X后,就通过该式将先验概率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分布就是k取1分布的Conjugate Prior。若k维随机向量 θ~ Drichlet分布,则θ的k个分量θ_1,θ_2,...,θ_k都取连续的非负值,且 θ_1 + θ_2 + ... + θ_k= 1。Dirichlet分布的具体表达式参见[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. 就是用图来表示随机变量中的依赖关系。这个tutorial一google一大把。建议参考[Bishop]的8.1节,了解几个符号(空心圆圈——隐藏(latent)变量,实心圆圈——观察(observed)变量,方框——重复次数)就足够看懂原文中的Figure 1和Figure 3了。最多再看看[Bishop]的8.2节

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

- 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_1和Z_2条件独立——然后进行后续推导。
这一假设当然会产生误差,考虑二维高斯分布p(Z|X) =p(Z_1,Z_2|X),Z_1与Z_2不独立,所以p(Z_1,Z_2|X)的等高图是同心椭圆,椭圆可任意倾斜(例如,若Z_1与Z_2的线性相关系数是1,则椭圆倾斜45°)。现简记 p(Z_1|X) = q_1(Z_1), p(Z_2|X) =q_2(Z_2),我们想改变q_1与q_2,用q_1*q_2去拟合p(Z_1,Z_2|X).但无论如何改变q_1与q_2的形式,q_1*q_2的椭圆等高线都是长轴、短轴分别与Z_1轴、Z_2轴平行!不过,合适的q_1与q_2保证q_1*q_2与p(Z|X)的峰值点重合,一般这就足以解决实际问题了。详细讲解可以参见[Bishop]的第10章。也可参考[Winn]的1.8节。
另外,[Winn]提出了通用的计算框架,你不必每次都先用VariationalInference推导出公式,再手工编写代码;你只用在一个GUI里编辑好GraphicalModel,再点start...(作为类比,考虑离散的线性系统转移函数H(z),你可以由此推导出差分方程的表达式,然后用Matlab编程求解;也可以在Simulink中编辑好框图,再点start...)


参考文献


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



网上资源


可google到LDA的Matlab和C实现
http://vibes.sourceforge.net/index.shtmljohn winn的通用框架,Java实现(里面有文档指导怎样在Matlab中调Java)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数字乡村和智慧农业的数字化转型是当前农业发展的新趋势,旨在通过应用数字技术,实现农业全流程的再造和全生命周期的管理服务。中国政府高度重视这一领域的发展,提出“数字中国”和“乡村振兴”战略,以提升国家治理能力,推动城乡融合发展。 数字乡村的建设面临乡村治理、基础设施、产业链条和公共服务等方面的问题,需要分阶段实施《数字乡村发展战略纲要》来解决。农业数字化转型的需求包括满足市民对优质农产品的需求、解决产销对接问题、形成优质优价机制、提高农业劳动力素质、打破信息孤岛、提高农业政策服务的精准度和有效性,以及解决农业融资难的问题。 数字乡村建设的关键在于构建“1+3+4+1”工程,即以新技术、新要素、新商业、新农民、新文化、新农村为核心,推进数据融合,强化农业大数据的汇集功能。数字农业大数据解决方案以农业数字底图和数据资源为基础,通过可视化监管,实现区域农业的全面数字化管理。 数字农业大数据架构基于大数据、区块链、GIS和物联网技术,构建农业大数据中心、农业物联网平台和农村综合服务指挥决策平台三大基础平台。农业大数据中心汇聚各类涉农信息资源和业务数据,支持大数据应用。信息采集系统覆盖市、县、乡、村多级,形成高效的农业大数据信息采集体系。 农业物联网平台包括环境监测系统、视频监控系统、预警预报系统和智能控制系统,通过收集和监测数据,实现对农业环境和生产过程的智能化管理。综合服务指挥决策平台利用数据分析和GIS技术,为农业决策提供支持。 数字乡村建设包括三大服务平台:治理服务平台、民生服务平台和产业服务平台。治理服务平台通过大数据和AI技术,实现乡村治理的数字化;民生服务平台利用互联网技术,提供各类民生服务;产业服务平台融合政企关系,支持农业产业发展。 数字乡村的应用场景广泛,包括农业生产过程、农产品流通、农业管理和农村社会服务。农业生产管理系统利用AIoT技术,实现农业生产的标准化和智能化。农产品智慧流通管理系统和溯源管理系统提高流通效率和产品追溯能力。智慧农业管理通过互联网+农业,提升农业管理的科学性和效率。农村社会服务则通过数字化手段,提高农村地区的公共服务水平。 总体而言,数字乡村和智慧农业的建设,不仅能够提升农业生产效率和管理水平,还能够促进农村地区的社会经济发展,实现城乡融合发展,是推动中国农业现代化的重要途径。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值