基于文本分析的参数估计

目录

0基于文本分析的参数估计... 1

1     参数估计方法... 1

1.1最大似然估计MLE. 2

1.2最大后验概率... 3

1.3贝叶斯推理... 4

2     共轭分布... 7

2.1 随机生成过程及共轭分布... 7

2.2 Multinomial分布和 Dirichlet分布... 8

3 unigram model10

3 LDA隐含狄利克雷分布... 11

3.1   Gibbs Sampling的流程... 13

3.2   LDA的联合分布... 14

3.3   Gibbs updating rule. 15

3.4 Gibbs sampling algorithm.. 16

4  LDA 超参数... 18

4.1 LDA. 18

 

 

0基于文本分析的参数估计

1         参数估计方法

以PLSA和LDA为代表的文本语言模型是当今统计自然语言处理研究的热点问题。这类语言模型一般都是对文本的生成过程提出自己的概率图模型,然后利用观察到的语料数据对模型参数做估计。有了语言模型和相应的模型参数,我们可以有很多重要的应用,比如文本特征降维、文本主题分析等等。本文主要介绍文本分析的三类参数估计方法-最大似然估计MLE、最大后验概率估计MAP及贝叶斯估计

1.1最大似然估计MLE

首先回顾一下贝叶斯公式

这个公式也称为逆概率公式,可以将后验概率转化为基于似然函数和先验概率的计算表达式,即

最大似然估计就是要用似然函数取到最大值时的参数值作为估计值,似然函数可以写做

由于有连乘运算,通常对似然函数取对数计算简便,即对数似然函数。最大似然估计问题可以写成

这是一个关于的函数,求解这个优化问题通常对求导,得到导数为0的极值点。该函数取得最大值是对应的的取值就是我们估计的模型参数。

以扔硬币的伯努利实验为例子,N次实验的结果服从二项分布,参数为P,即每次实验事件发生的概率,不妨设为是得到正面的概率。为了估计P,采用最大似然估计,似然函数可以写作

其中表示实验结果为i的次数。下面求似然函数的极值点,有

得到参数p的最大似然估计值为

可以看出二项分布中每次事件发的概率p就等于做N次独立重复随机试验中事件发生的概率。

如果我们做20次实验,出现正面12次,反面8次

那么根据最大似然估计得到参数值p为12/20 = 0.6。

1.2最大后验概率

最大后验估计与最大似然估计相似,不同点在于估计的函数中允许加入一个先验,也就是说此时不是要求似然函数最大,而是要求由贝叶斯公式计算出的整个后验概率最大,即

注意这里P(X)与参数无关,因此等价于要使分子最大。与最大似然估计相比,现在需要多加上一个先验分布概率的对数。在实际应用中,这个先验可以用来描述人们已经知道或者接受的普遍规律。例如在扔硬币的试验中,每次抛出正面发生的概率应该服从一个概率分布,这个概率在0.5处取得最大值,这个分布就是先验分布。先验分布的参数我们称为超参数(hyperparameter)即

同样的道理,当上述后验概率取得最大值时,我们就得到根据MAP估计出的参数值。给定观测到的样本数据,一个新的值发生的概率是

下面我们仍然以扔硬币的例子来说明,我们期望先验概率分布在0.5处取得最大值,我们可以选用Beta分布即

其中Beta函数展开是

当x为正整数时

Beta分布的随机变量范围是[0,1],所以可以生成normalised probability values。下图给出了不同参数情况下的Beta分布的概率密度函数

我们取,这样先验分布在0.5处取得最大值,现在我们来求解MAP估计函数的极值点,同样对p求导数我们有

得到参数p的的最大后验估计值为

和最大似然估计的结果对比可以发现结果中多了这样的pseudo-counts,这就是先验在起作用。并且超参数越大,为了改变先验分布传递的belief所需要的观察值就越多,此时对应的Beta函数越聚集,紧缩在其最大值两侧。

如果我们做20次实验,出现正面12次,反面8次,那么

那么根据MAP估计出来的参数p为16/28 = 0.571,小于最大似然估计得到的值0.6,这也显示了“硬币一般是两面均匀的”这一先验对参数估计的影响。

1.3贝叶斯推理

贝叶斯估计是在MAP上做进一步拓展,此时不直接估计参数的值,而是允许参数服从一定概率分布。回顾一下贝叶斯公式

现在不是要求后验概率最大,这样就需要求,即观察到的evidence的概率,由全概率公式展开可得

当新的数据被观察到时,后验概率可以自动随之调整。但是通常这个全概率的求法是贝叶斯估计比较有技巧性的地方。

那么如何用贝叶斯估计来做预测呢?如果我们想求一个新值的概率,可以由

来计算。注意此时第二项因子在上的积分不再等于1,这就是和MLE及MAP很大的不同点。

我们仍然以扔硬币的伯努利实验为例来说明。和MAP中一样,我们假设先验分布为Beta分布,但是构造贝叶斯估计时,不是要求用后验最大时的参数来近似作为参数值,而是求满足Beta分布的参数p的期望,有

注意这里用到了公式

当T为二维的情形可以对Beta分布来应用;T为多维的情形可以对狄利克雷分布应用

根据结果可以知道,根据贝叶斯估计,参数p服从一个新的Beta分布。回忆一下,我们为p选取的先验分布是Beta分布,然后以p为参数的二项分布用贝叶斯估计得到的后验概率仍然服从Beta分布,由此我们说二项分布和Beta分布是共轭分布。在概率语言模型中,通常选取共轭分布作为先验,可以带来计算上的方便性。最典型的就是LDA中每个文档中词的Topic分布服从Multinomial分布,其先验选取共轭分布即Dirichlet分布;每个Topic下词的分布服从Multinomial分布,其先验也同样选取共轭分布即Dirichlet分布。

根据Beta分布的期望和方差计算公式,我们有

可以看出此时估计的p的期望和MLE ,MAP中得到的估计值都不同,此时如果仍然是做20次实验,12次正面,8次反面,那么我们根据贝叶斯估计得到的p满足参数为12+5和8+5的Beta分布,其均值和方差分别是17/30=0.567, 17*13/(31*30^2)=0.0079。可以看到此时求出的p的期望比MLE和MAP得到的估计值都小,更加接近0.5。

综上所述我们可以可视化MLE,MAP和贝叶斯估计对参数的估计结果如下

个人理解是,从MLE到MAP再到贝叶斯估计,对参数的表示越来越精确,得到的参数估计结果也越来越接近0.5这个先验概率,越来越能够反映基于样本的真实参数情况。

2         共轭分布

2.1 随机生成过程及共轭分布

要理解LDA首先要理解随机生成过程。用随机生成过程的观点来看,文本是一系列服从一定概率分布的词项的样本集合。最常用的分布就是Multinomial分布,即多项分布,这个分布是二项分布拓展到K维的情况,比如投掷骰子实验,N次实验结果服从K=6的多项分布。相应的,二项分布的先验Beta分布也拓展到K维,称为Dirichlet分布。在概率语言模型中,通常为Multinomial分布选取的先验分布是Dirichlet分布,因为它们是共轭分布,可以带来计算上的方便性。什么是共轭分布呢?在文本语言模型的参数估计-最大似然估计、MAP及贝叶斯估计一文中我们可以看到,当我们为二项分布的参数p选取的先验分布是Beta分布时,以p为参数的二项分布用贝叶斯估计得到的后验概率仍然服从Beta分布,由此我们说二项分布和Beta分布是共轭分布。这就是共轭分布要满足的性质。在LDA中,每个文档中词的Topic分布服从Multinomial分布,其先验选取共轭先验即Dirichlet分布;每个Topic下词的分布服从Multinomial分布,其先验也同样选取共轭先验即Dirichlet分布。

2.2 Multinomial分布和 Dirichlet分布

上面从二项分布和Beta分布出发引出了Multinomial分布和Dirichlet分布。这两个分布在概率语言模型中很常用,让我们深入理解这两个分布。Multinomial分布的分布律如下

多项分布来自N次独立重复实验,每次实验结果可能有K种,式子中为实验结果向量,N为实验次数,为出现每种实验结果的概率组成的向量,这个公式给出了出现所有实验结果的概率计算方法。当K=2时就是二项分布,K=6时就是投掷骰子实验。很好理解,前面的系数其实是枚举实验结果的不同出现顺序,即

后面表示第K种实验结果出现了次,所以是概率的相应次幂再求乘积。但是如果我们不考虑文本中词出现的顺序性,这个系数就是1。 本文后面的部分可以看出这一点。显然有各维之和为1,所有之和为N。

Dirichlet分布可以看做是“分布之上的分布”,从Dirichlet分布上Draw出来的每个样本就是多项分布的参数向量。其分布律为

为Dirichlet分布的参数,在概率语言模型中通常会根据经验给定,由于是参数向量服从分布的参数,因此称为“hyperparamer”。是Dirichlet delta函数,可以看做是Beta函数拓展到K维的情况,但是在有的文献中也直接写成。根据Dirichlet分布在上的积分为1(概率的基本性质),我们可以得到一个重要的公式

这个公式在后面LDA的参数Inference中经常使用。下图给出了一个Dirichlet分布的实例

在许多应用场合,我们使用对称Dirichlet分布,其参数是两个标量:维数K和参数向量各维均值. 其分布律如下

关于Dirichlet分布,维基百科上有一张很有意思的图如下

这个图将Dirichlet分布的概率密度函数取对数

并且使用对称Dirichlet分布,取K=3,也就是有两个独立参数  ,分别对应图中的两个坐标轴,第三个参数始终满足且  ,图中反映的是从0.3变化到2.0的概率对数值的变化情况。

3 unigram model

我们先介绍比较简单的unigram model。其概率图模型图示如下

关于概率图模型尤其是贝叶斯网络的介绍可以参见Stanford概率图模型(Probabilistic Graphical Model)— 第一讲贝叶斯网络基础一文。简单的说,贝叶斯网络是一个有向无环图,图中的结点是随机变量,图中的有向边代表了随机变量的条件依赖关系。unigram model假设文本中的词服从Multinomial分布,而Multinomial分布的先验分布为Dirichlet分布。图中双线圆圈表示我们在文本中观察到的第n个词,表示文本中一共有N个词。加上方框表示重复,就是说一共有N个这样的随机变量是隐含未知变量,分别是词服从的Multinomial分布的参数和该Multinomial分布的先验Dirichlet分布的参数。一般由经验事先给定,由观察到的文本中出现的词学习得到,表示文本中出现每个词的概率。

3 LDA隐含狄利克雷分布

理解了unigram model之后,我们来看LDA。我们可以假想有一位大作家,比如莫言,他现在要写m篇文章,一共涉及了K个Topic,每个Topic下的词分布为一个从参数为的Dirichlet先验分布中sample出来的Multinomial分布(注意词典由term构成,每篇文章由word构成,前者不能重复,后者可以重复)。对于每篇文章,他首先会从一个泊松分布中sample一个值作为文章长度,再从一个参数为的Dirichlet先验分布中sample出一个Multinomial分布作为该文章里面出现每个Topic下词的概率;当他想写某篇文章中的第n个词的时候,首先从该文章中出现每个TopicMultinomial分布中sample一个Topic,然后再在这个Topic对应的词的Multinomial分布中sample一个词作为他要写的词。不断重复这个随机生成过程,直到他把m篇文章全部写完。这就是LDA的一个形象通俗的解释。用数学的语言描述就是如下过程

转化成概率图模型表示就是

图中K为主题个数,M为文档总数,是第m个文档的单词总数。 是每个Topic下词的多项分布的Dirichlet先验参数,   是每个文档下Topic的多项分布的Dirichlet先验参数。是第m个文档中第n个词的主题,是m个文档中的第n个词。剩下来的两个隐含变量分别表示第m个文档下的Topic分布和第k个Topic下词的分布,前者是k维(k为Topic总数)向量,后者是v维向量(v为词典中term总数)。

给定一个文档集合,是可以观察到的已知变量,是根据经验给定的先验参数,其他的变量都是未知的隐含变量,也是我们需要根据观察到的变量来学习估计的。根据LDA的图模型,我们可以写出所有变量的联合分布

那么一个词初始化为一个term t的概率是

也就是每个文档中出现topic k的概率乘以topic k下出现term t的概率,然后枚举所有topic求和得到。整个文档集合的似然函数就是

用Gibbs Sampling学习LDA

3.1   Gibbs Sampling的流程

从第4部分的分析我们知道,LDA中的变量都是未知的隐含变量,也是我们需要根据观察到的文档集合中的词来学习估计的,那么如何来学习估计呢?这就是概率图模型的Inference问题。主要的算法分为exact inference和approximate inference两类。尽管LDA是最简单的Topic Model, 但是其用exact inference还是很困难的,一般我们采用approximate inference算法来学习LDA中的隐含变量。比如LDA原始论文Blei02中使用的mean-field variational expectation maximisation 算法和Griffiths02中使用的Gibbs Sampling,其中Gibbs Sampling 更为简单易懂。

Gibbs Sampling 是Markov-Chain Monte Carlo算法的一个特例。这个算法的运行方式是每次选取概率向量的一个维度,给定其他维度的变量值Sample当前维度的值。不断迭代,直到收敛输出待估计的参数。可以图示如下

初始时随机给文本中的每个单词分配主题,然后统计每个主题z下出现term t的数量以及每个文档m下出现主题z中的词的数量,每一轮计算,即排除当前词的主题分配,根据其他所有词的主题分配估计当前词分配各个主题的概率。当得到当前词属于所有主题z的概率分布后,根据这个概率分布为该词sample一个新的主题。然后用同样的方法不断更新下一个词的主题,直到发现每个文档下Topic分布和每个Topic下词的分布收敛,算法停止,输出待估计的参数,最终每个单词的主题也同时得出。实际应用中会设置最大迭代次数。每一次计算的公式称为Gibbs updating rule.下面我们来推导LDA的联合分布和Gibbs updating rule。

3.2   LDA的联合分布

由LDA的概率图模型,我们可以把LDA的联合分布写成

第一项和第二项因子分别可以写成

可以发现两个因子的展开形式很相似,第一项因子是给定主题Sample词的过程,可以拆分成从Dirichlet先验中SampleTopic Z下词的分布和从参数为的多元分布中Sample词这两个步骤,因此是Dirichlet分布和Multinomial分布的概率密度函数相乘,然后在上积分。注意这里用到的多元分布没有考虑词的顺序性,因此没有前面的系数项。表示term t被观察到分配topic z的次数,表示topic k分配给文档m中的word的次数.此为这里面还用到了2.2部分中导出的一个公式

因此这些积分都可以转化成Dirichlet delta函数,并不需要算积分。第二个因子是给定文档,sample当前词的主题的过程。由此LDA的联合分布就可以转化成全部由Dirichlet delta函数组成的表达式

这个式子在后面推导Gibbs updating rule时需要使用。

3.3   Gibbs updating rule

得到LDA的联合分布后,我们就可以推导Gibbs updating rule,即排除当前词的主题分配,根据其他词的主题分配和观察到的单词来计算当前词主题的概率公式

里面用到了伽马函数的性质

同时需要注意到

这一项与当前词的主题分配无关,因为无论分配那个主题,对所有k求和的结果都是一样的,区别只在于拿掉的是哪个主题下的一个词。因此可以当成常量,最后我们只需要得到一个成正比的计算式来作为Gibbs updating rule即可。

3.4 Gibbs sampling algorithm

当Gibbs sampling 收敛后,我们需要根据最后文档集中所有单词的主题分配来计算,作为我们估计出来的概率图模型中的隐含变量。每个文档上Topic的后验分布和每个Topic下的term后验分布如下

可以看出这两个后验分布和对应的先验分布一样,仍然为Dirichlet分布,这也是共轭分布的性质决定的。

使用Dirichlet分布的期望计算公式

我们可以得到两个Multinomial分布的参数的计算公式如下

综上所述,用Gibbs Sampling 学习LDA参数的算法伪代码如下

4  LDA 超参数

4.1 LDA

LDA是由Blei,Ng, Jordan 2002年发表于JMLR的概率语言模型,应用到文本建模范畴,就是对文本进行“隐性语义分析”(LSA),目的是要以无指导学习的方法从文本中发现隐含的语义维度-即“Topic”或者“Concept”。隐性语义分析的实质是要利用文本中词项(term)的共现特征来发现文本的Topic结构,这种方法不需要任何关于文本的背景知识。文本的隐性语义表示可以对“一词多义”和“一义多词”的语言现象进行建模,这使得搜索引擎系统得到的搜索结果与用户的query在语义层次上match,而不是仅仅只是在词汇层次上出现交集。

时间: 2024-08-28 19:52:57

基于文本分析的参数估计的相关文章

文本分析的参数估计方法

http://blog.csdn.net/pipisorry/article/details/51482120 文本分析的三类参数估计方法-最大似然估计MLE.最大后验概率估计MAP及贝叶斯估计. 参数估计 参数估计中,我们会遇到两个主要问题:(1)如何去估计参数的value.(2)估计出参数的value之后,如何去计算新的observation的概率,即进行回归分析和预测. 首先定义一些符号: 数据集X中的所有Xi,他们是独立同分布的,因此后面求X 的概率的时候,xi可以相乘. 贝叶斯公式 这

PAI文本分析实验:常用文本分析组件及案例实战

上一篇介绍了PAI以及机器学习相关的一点知识,没有深入算法原理,只是从使用角度出发熟悉了操作流程,后面随着学习的深入,我也会对算法原理做一个详细的阐述.这次我们还是继续实战,认识机器学习在文本分析领域是如何工作的.先贴出官方的教程:机器学习PAI眼中的<人民的名义>. 准备开始 还是在阿里PAI环境下,我们从实验模板:人民的名义分析进入,然后点击去PAI平台创建,这样就在机器学习页面创建好了实验.接下里设置各个组件的参数,我们先看下模型图: 你会发现模板创建的结果和教程的模型图不一样.这里我们

基于文本密度的新闻正文抽取方法之Python实现

参考文章链接: http://www.cnblogs.com/jasondan/p/3497757.html http://d.wanfangdata.com.cn/Patent/CN201410007832.6/ 基于网页分析构思出的正文提取算法 回顾以上的网页分析,如果按照文本密度来找提取正文,那么就是写这么一个算法,能够从过滤html标签后的文本中找到正文文本的起止行号,行号之间的文本就是网页正文部分. 还是从上面三个网页的分析结果看,他们都有这么一个特性:正文部分的文本密度要高出非正文部

基于人工分析的HTTP-POST请求报文特征获取一般方法

基于人工分析的HTTP-POST请求报文特征获取一般方法 (以百度贴吧客户端发帖行为分析为例) 本文由CSDN-蚍蜉撼青松 [主页:http://blog.csdn.net/howeverpf]原创,转载请注明出处! 现有的HTTP-POST请求报文信息还原工具都是基于特征(包括网络应用的行为识别特征与信息提取特征)的,而特征的获取往往依赖于人工分析.在分析的过程中往往需要用到一些能帮助完成网络数据采集和分析功能的工具.根据网络环境的不同,可能用到的几款工具包括: Tcpdump(Unix/Li

《人民的名义》---简单的文本分析

我们都知道进行自然语言处理的第一步就是分词,下面使用jieba模块对最近比较热的电视剧<人民的名义>进行分词,并对它进行一些简单的文本分析. 一.jieba模块中常用的方法说明(github): 1.分词: jieba.cut 方法接受三个输入参数: 需要分词的字符串:cut_all 参数用来控制是否采用全模式:HMM 参数用来控制是否使用 HMM 模型 jieba.cut_for_search 方法接受两个参数:需要分词的字符串:是否使用 HMM 模型.该方法适合用于搜索引擎构建倒排索引的分

Solr:文本分析

文本分析时搜索引擎的核心工作之一,对文本包含许多处理步骤,比如:分词.大写转小写.词干化.同义词转化等.简单的说,文本分析就说将一个文本字段的值转为一个一个的token,然后被保存到Lucene的索引结构中被将来搜索用.当然,文本分析不仅在建立索引时有用,在查询时对对所输入的查询串也一样可以进行文本分析.在 Solr Schema设计 中我们介绍了许多Solr中的字段类型,其中最重要的是solr.TextField,这个类型可以进行分析器配置来进行文本分析. 接下来我们先来说说什么是分析器. 分

(版本定制)第5课:基于案例分析Spark Streaming流计算框架的运行源码

本期内容: 1.在线动态计算分类最热门商品案例回顾与演示 2.基于案例分析Spark Streaming的运行源码 第一部分案例: package com.dt.spark.sparkstreaming import com.robinspark.utils.ConnectionPoolimport org.apache.spark.SparkConfimport org.apache.spark.sql.Rowimport org.apache.spark.sql.hive.HiveConte

用R进行文本分析初探——以《红楼梦》为例

刚刚接触R语言和文本分析,为了将二者结合,试着对<红楼梦>进行分析,首先对<红楼梦>进行分词处理,并统计词频,同时画出标签云. 其实文本分析还可以分析其它很多东西,我的下一步打算分析新浪微博.现在先写一个小的分析,作为学习用. 文本分析是指对文本的表示及其特征项的选取:文本分析是文本挖掘.信息检索的一个基本问题,它把从文本中抽取出的特征词进行量化来表示文本信息. 一.需要加载的包 需要用到rJava,Rwordseg,wordcloud 安装步骤: 1.安装java: http:/

linux基础--awk文本分析工具详解

简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理. awk有3个不同版本: awk.nawk和gawk,未作特别说明,一般指gawk,gawk 是 AWK 的 GNU 版本. awk其名称得自于它的创始人 Alfred Aho .Peter Weinberger 和 Brian Kernighan 姓氏的首个字母.实际上 AWK