1、GaussianLDA (文字描述和代码讲解)

1、GaussianLDA (文字描述和代码讲解)

(1)模型和生成过程介绍

LDA已经被广泛应用于推导文本预料的主题结构,LDA假设文档都是有一些主题混合构成的,而每个主题又是一个在词项上的多项分布。这样的假设确实能产生不错的结果,但是我们希望得到的主题能具有更好的语义关联。
近年来随着深度学习(DL)迅速发展,基于深度学习的词嵌入学习方法在NLP领域有重大突破。LDA结合词嵌入的方法成为主题模型发展的方向。

在Gaussian
LDA中,我们的观测变量不再是离散的值,而是稠密的向量表示(如:word2vec训练的单词向量),即文档的每一个词都用一个s维的向量表示。每个主题k也不再是一个关于词项的多项分布,而是一个多元高斯分布图片,其中
图片也服从一个均值为图片的高斯分布。在(Hu et al., 2012)的工作中,他们使用Wishart作为图片的先验分布,并用变分EM进行参数估计,但是其中有很多符号参数,文章中也没有给出推导过程以及任何解释,暂时还不能理解,故下面介绍Rajarshi
Das在2015年的论文“Gaussian LDA for Topic Models with Word Embeddings”的工作提出的Gaussian LDA,本章主要参考该论文,以及C博客博主“Clear.的博客”的“Gaussian LDA简介”。

在Gaussian LDA中,每个主题k被表示为一个多元高斯分布图片,因此,我们需要估计这个高斯分布的均值协方差矩阵是什么。这里,假设图片服从于Gaussian-inverse-Wishart分布,即图片。那么文档的生成过程如下:

  1. 对于每个主题k=1,…,K:

  2. 生成主题的协方差矩阵图片

  3. 生成主题的均值图片

  4. 对每篇文档d=1,…,M:

  5. 生成文档-主题分布
    图片

  6. 对文档中的每个词图片

  7. 生成词的主题
    图片

  8. 生成词向量
    图片
    其中先验参数有图片以及图片。文章中使用collapsed Gibbs Sampling方法推断每个词对应的主题。但是在介绍Gibbs Sampling方法之前,我们先对Gaussian LDA生成文档的过程进行分解(类似Rickjin的“LDA数学八卦”中的分解过程):

1.图片,即首先从狄里克雷分布中生成文档d的主题分布图片,接着生成文档d的第i个词对应的主题图片

2.图片,即从NIW分布中生成表示主题的高斯分布的均值向量和协方差矩阵,再由这个高斯分布生成对应的词向量。

对于第一个过程,隐变量是图片,而它的后验概率分布同样是一个狄里克雷分布,为图片,其中图片表示文档d中的单词数。对于第二个过程,隐变量图片,后验概率分布同样服从于一个Normal-inverse-Wishart分布,它的参数为图片
图片
图片
图片
图片
其中:
图片
图片

图片也可以写成图片,即图片表示所有文档中被分配为主题k的词的向量化表示。

写出联合概率分布
图片
其中,参数为图片
将联合概率分布的每一项展开得
图片
其中
图片
图片
图片
图片
其中,图片表示分配给主题k的单词数;

联合概率分布对每一项进行积分
图片
其中:
图片
进行Gibbs采样,需要推导每个变量在给定其他变量情况下的条件概率

图片
第一部分:表示主题分布
图片

第二部分:表示从t分布中采样单词的嵌入向量表示
图片

d表示词嵌入的维度;

(2)参数估计(Collapsed Gibbs Sampling)

在贝叶斯框架下,我们的参数图片,图片 ,图片 该如何估计呢?
由于我们已经有了参数的后验分布,所以合理的方式是使用后验分布的极大值点,或者参数在后验分布的期望。那么我们用期望作为参数估计值:
图片
图片
图片

这里讨论其中一个主题k的情况,公式中的图片表示文档d中被赋值为主题k的词的个数,因此我们需要知道文档中每个词背后的主题是什么,可以使用Gibbs
Sampling方法进行采样,具体原理可以参考“LDA数学八卦”。

这里,我们需要计算第d个文档的第i个单词当前取主题k的概率图片,其中z表示所有文档中所有词被赋予主题的列表,V表示所有文档中的单词的向量化表示组成的列表,与z一一对应,而图片表示除了文档d的第i个单词向量对应的主题之外的列表。那么:
图片

上式的最后两项积分,恰好各是一个期望形式,查“Conjugate
Prior”的wikipedia里关于共轭分布的表,根据其中的“Posterior
predictive”,可以得到:
图片

其中,后面第一项与传统LDA相同表示单词计数比例;第二项是一个t分布,t分布的广义形式和标准t分布函数如下:

广义t分布:

图片
标准t分布:图片
图片

附录一:那么,如何根据贝叶斯思想,推出上述Gaussian LDA的“Posterior
predictive”的呢,特别是其中的第二部分t分布的推断过程如下:

先验分布 * 似然函数 = 后验分布

先验分布:标准逆威沙特分布(Normal-Inverse-Wishart)

似然函数:多元高斯分布

后验分布:标准逆威沙特分布(Normal-Inverse-Wishart)

似然函数:

图片
其中

图片
先验分布:

图片
图片
图片
图片
其中

图片
后验分布

图片
其中:

图片
图片
图片
图片
其中边缘分布均值和方差分别服从:

图片
图片
后验预测

图片
得到上述采样概率公式图片以后,就可以进行Gibbs Sampling了,Gibbs
Sampling的算法过程如下:

Algorithm: Gaussian LDA的Gibbs Sampling过程
Zero all count variables, 图片,图片,图片,图片for all 图片,图片 and图片 //初始化 for all documents图片 do: for all words图片 do: sample topic图片 increment document-topic count / sum:图片 increment topic-term count / sum:图片 //假定文档d的第i个单词是字典中的第t个单词 end for end for while not finished do: for all documents图片 do: for all words图片 do: for current topic assignment of k to a term t for word图片 decrement counts and sums:图片 sample a new topic index

图片 increment counts and sums:
图片 end for end for end while |

(3)优化

Faster Sampling(快速采样):朴素的采样过程计算复杂度非常高,[Das et
al.2015]文章的另一个贡献就是使用一系列的技巧优化这一过程(包括:乔里斯基矩阵分解和Alias
table,这里并不做详细的介绍,具体内容可参考下文中提供的链接)。

(4)评价指标

Topic Coherence(语义连贯性):关于语义连贯的评价,本小节首先介绍下(Newman
et al.,
2009)的工作。Newman等人提出一种方法,评价主题模型学习到的方法是否又用(useful/useless),模型得到的结果与人工评价结果具有较高的相关性,而其中人工评价一个主题是否又用则从以下概念出发:

图片

有些主题是有意义的,有些虽然在统计学上有意义、连贯的、可解释的,但是对于人类的使用并没有用。作者提出的评估方法希望判断一些有用的主题是如何有用的。作者评价说什么是“有用的”,即是连贯的、有意义的、可解释的、词汇相关的等,就是主题是否能轻易的被打标签。Newman等人提出了评价模型得到的主题打分来模拟人工评价(Newman等人提出两个打分模型,本文介绍Das等人在GaussianLDA中用到的方法)。该方法很直观,考虑了主题词两两之间的关系,具体而言,他们引入两个大规模的英文的外部预料:Wikipedia和Google
n-grams,在英文Wikipedia数据中,统计每对主题词图片图片在一个大小为10的窗口中共同出现的次数,在Googlen-grams数据中,统计每个词对在5-grams中的共现次数。接着使用“pointwise mutual
information, PMI”作为词关系的评价指标,那么一个主题的PMI打分定义为:
图片
图片
Newman等人对“主题是否有用”的PMI打分结果与人工评价结果具有较高的相关性(Pearson
相关系数在0.7以上)进行分析,直觉上是因为他们的人工评价主要基于主题词之间是否相关等,与PMI打分的计算方式相似。Newman等人最后进行文档相似度评价,除了传统基于tf-idf的相似度方法,还使用了基于主题的方法(使用Hellinger
distance):

图片
图片
其中dist*表示只用计算得到的useful的主题,在他们的实验结果中,这个方法的效果最好。

Das等人对于Topic
Coherence(语义连贯性)就是基于上述的PMI方法,他们取主题词个数为15,如果PMI打分越高,则说明主题词通常都在共现于同一篇文档,结果如下图所示,Gaussian
LDA在PMI评价上平均比LDA搞275%。
图片

(5)源码分析

Das在其Gaussian LDA文章“Gaussian LDA for Topic Models with Word
Embeddings”中提供了源码,https://github.com/rajarshd/Gaussian_LDA

其中实现了三种方法:

我在Win7-64、eclipse环境下运行该代码,这里主要介绍一下GaussianLDAWithoutCholesky.java
,另外两个方法是对此方法的加速(感兴趣的同学可以自行学习,其中用到了Cholesky
decomposition 和 Alias Table),这两种加速算法参考下面的链接:

  1. Cholesky decomposition (乔里斯基分解,此链接主要包括Rank-one update和
    Rank-one downdate两个算法):

https://en.wikipedia.org/wiki/Cholesky_decomposition#Rank-one_update

  1. Alias Tables
    是采样加速的一种方法,下面的链接比较全面地从原理、prob和Alias生成过程进行介绍,代码实现主要参考其中的Generating
    Alias Tables过程:

http://www.keithschwarz.com/darts-dice-coins/

首先弄懂输入参数是什么,先运行起来再说:

参数1: …\embedding.txt (从语料库中学习的embedding向量,预料库不是确定的。比如我是用word2vec从text8学的embedding,此embedding是从外部预料中学习的,用来作为Gaussian LDA的一个输入。根据给定的Vocab.txt,只保留字典中的单词对应的embedding。如字典大小是20000,那么embedding文件中只有20000行,每一行是一个单词的embedding向量) 参数2: 200 (提取的embedding向量的维度) 参数3: 1 (循环次数) 参数4: 20 (主题数目) 参数5: …\data\20_news\vocab.txt (待训练预料的字典) 参数6: …\data\20_news\corpus.train (待训练预料)

代码里面主要包括两个函数:

initialize(); 参数初始化:初始化均值,协方差等
sample(); 采样每一维度新的主题,更新均值,协方差等
  1. initialize() 函数

函数中的部分代码如下:

图片
上述代码对照下图进行说明,图中的等号右边分为两部分:

图片

第一部分是类似于传统LDA的计数,文档d中属于主题k的单词数:

图片
第二部分是一个t函数:(关于t分布的介绍可参考wiki百科

图片
https://zh.wikipedia.org/wiki/学生t-分布 ):

其概率密度函数为:

图片
上式中,t分布包含两个参数:

  • 第一个均值是图片

  • 第二个协方差是图片,其中图片

上面的那段代码,实际上就是求的第二个参数。读者可以把公式对照代码列出来一看便知。

协方差初始化代码:协方差是D*D的矩阵,每一项初始化为0

图片

计算均值、方差的逆、方差行列式函数,可对照下面公式理解**,calculateTableParams(id);**

图片

  1. sample() 函数

sample函数主要包括两个更新参数的过程:

  • calculateTableParams(oldTableId);

  • calculateTableParams(newTableId);

针对每次采样的新旧topic(即文中所述的table),进行两次参数的更新。

其中,在下面代码中体现了采样公式的核心,反映了下面的公式:

图片
图片

参照上面的公式和代码截图,

| double count = tableCountsPerDoc[k][d]+alpha; | 第一部分计算

图片
double logLikelihood = logMultivariateTDensity(dataVectors[custId],k);

参考文献

  1. Gaussian LDA论文—Das R, Zaheer M, Dyer C. Gaussian LDA for Topic Models with Word Embeddings[C]// Meeting of the Association for Computational Linguistics and the, International Joint Conference on Natural Language Processing. 2015:795-804.

  2. Clear.的博客(Gaussian LDA)—http://blog.csdn.net/u011414416/article/details/51188483

展开全文
相关主题
Top