先验知识

Gamma 函数

Beta/Dirichlet 分布与共轭

MCMC, 吉布斯采样

这块资料暂时自己去找, 等我有空写了的教程再补上.

LDA 介绍

构成

  是一种词袋模型. 由语料, 文档, 话题. , 这三个概念组成.

  • 语料

    语料是文档的集合.

  • 文档

    文档是词的集合, 可以看做是一篇作文, 或是像这篇一样的博文, 反正就是一篇完整的文本.

  • 话题

    话题给出了某个词出现的概率. 到底是啥呢?认为, 文档中每个词都应该有它的话题, 词是由话题来生成的. 比如说某个词的话题是 “概率论” , 那么这个词就很有可能是 “函数” , 而不太可能是 “吃饭” . “可能” 与 “不太可能” 在数学上用概率描述, 而话题就给出了这个概率的值.

  • 这应该无需多解释, “词” 本身就是一个词. 文档是由一个个词组成的

生成文档过程

  生成文本的过程, 就像是上帝抛骰子. 关于这个骰子如何抛, 频率派与贝叶斯派有不同的解释, 而就是基于贝叶斯派的解释.

频率派

  频率派认为, 上帝有两种骰子, 一种是骰子, 它有个面, 每个面都是一个的编号. 还有一种是骰子, 一共有个, 正好对应个面. 每个骰子有个面, 每一个面都对应一个词. 生成文档包括两个过程:抛投 骰子, 得到一个 编号.

  1. 抛投骰子, 得到一个编号.
  2. 按照这个编号, 找到对应的骰子, 再次抛投, 生成一个词.

假如说一个文档有个词, 那么以上过程就重复次, 这样就生成了这篇文档所有的词, 这篇文档也就生成完毕.

贝叶斯派

  对于这样的抛骰子过程, 贝叶斯派可就不满意了. 无论是骰子, 还是骰子, 都是模型里的参数, 参数都是随机变量, 怎么能没有先验呢?

  于是, 就有了两大缸骰子, 一缸装了骰子, 一缸装了骰子, 相比频率派, 贝叶斯派多了两个过程.

  1. 缸中取出骰子, 每个骰子有个面, 每一个面都对应一个词.
  2. 缸中取出一个骰子, 所有的骰子都只有个面.
  3. 抛投骰子, 得到一个编号.
  4. 按照这个编号, 找到对应的骰子, 再次抛投, 生成一个词. 如果一篇文档所有的词没有生成完毕, 那么就跳到第点继续重复生成词.

执行完这个过程一篇文档就生成完成, 然后重新回到, 生成下一篇文档 (也就是说骰子不用重新抽取), 直到整个语料 (包含篇文档) 生成完毕, 也就是重复次. 每篇文档都是独立的, 每个词也是, 所以生成的过程可以互相交换.

目标

  的目标就是给定文档 然后估计文档中每个词的, 以及估计出你取到的骰子与骰子到底是长啥样 (每个面的概率) . 我们这里将某篇文档的骰子记为, 整个语料中的骰子记为.向量的每个分量的值就是取到某个编号的概率. 而骰子记为. 我们的目的就是求出. 我们再将每篇文档中的词记为, 整个语料包含篇文档记为, 所有的对应的记为.

先验分布

  由于的数量服从分布, 很自然就把骰子的分布设为与其共轭的分布. 于是有

其中分布的参数, 求取前就已经确定,,是第篇文档中词的数量., 它的分量代表第篇文档中第产生的词的数量.,表示第产生的词中的个数. 当然这里表述有点不严谨, 因为都用的是字母, 只是根据下标区别.

联合分布

  这里注意到, 整个过程就是共轭.

现在我们要分别求出, 与.这里设. 那么有

上式已经给出了共轭. 其中是归一化因子, 也可以看做是高维的函数. (本来还想根据规律称其为狄利克雷函数, 但是这个名字已经被占用了) .

还记得我上面提到的吗, 由于每篇文档都是独立的, 每个词也是, 所以生成的过程可以互相交换. 那么在每个词的(也就是) 已经生成的条件下, 可以将语料中的词进行交换, 将相同的词放在一起生成

因此有

 同样是归一化因子

最终有

多么简洁漂亮!

吉布斯采样

  我们要估计的是, 根据吉布斯采样的要求, 我们要求出.

注意到无关, 因此有

那么就有

注意到是一个共轭结构即

所以

 也有类似的结论. 因此有

根据分布的期望, 我们得到

因此

通过吉布斯采样, 我们就可以估计出了.