(一)LDA主题模型问题
问题1:一篇文章,生成乐观主题、悲观主题的概率假设独立同分布(服从伯努利分布),生成n个主题。
设生成乐观主题的概率为θ。
1.伯努利分布Bernoulli distribution
概率密度函数
2.二项式分布Binomial Distribution:多重伯努利分布
3.Gamma函数
性质:
证:
分部积分:
4.beta分布
假设θ不是常量,而是服从beta分布(分布的分布)
举例:θ取值0.3时,beta函数可计算出它的概率,即分布的分布。
5.二项式分布与beta分布的关系
θ服从beta分布(先验分布),然后再基于伯努利分布采样到某个主题xi,重复n次采样,最后计算后验分布f(θ;x)。结合贝叶斯理论:
得知:后验分布f(θ;x)和先验分布都属于相同形式的分布。
在贝叶斯统计中,如果后验分布与先验分布属于同类(分布形式相同),则先验分布与后验分布被称为共轭分布。
共轭的好处:计算多批新样本数据下的后验分布后,使之直接成为“先验”,不需要重新整体计算,只需要考虑新样本数据。
其它应用:点击率的贝叶斯平滑
问题2:一篇文章,生成K个主题的概率假设独立同分布(服从伯努利分布),生成n个主题。
设生成主题ki的概率为pi,P为生成{xi个主题ki;i=1,2,..,k}的联合概率。
6.多项式分布
7.Dirichlet分布
,
8.多项式分布与Dirichlet分布的关系
共轭
9.Dirichlet分布重要性质
10.小结问题
一篇文章通过多项式分布采样生成n个主题,而多项式分布的参数服从Dirichlet分布。
问题3:一篇文章通过多项式分布采样生成n个主题,而多项式分布的参数服从Dirichlet分布。然而主题是隐含变量。观察变量是词,而词是由主题通过另一个多项式分布采样生成的,其参数服从另一个Dirichlet分布。
问题4:再问题3的基础上,给定一个M个文章的语料。
M+K组Dirichlet-multi共轭
问题5:如何求解我们想要的每一篇文档的主题分布和每一个主题中词的分布呢?
第一种方法是基于Gibbs采样算法求解,第二种方法是基于变分推断EM算法求解。
(二)Gibbs采样
2.1 蒙特卡罗方法
积分,如果f(x)原函数比较难求解,可以考虑蒙特卡罗方法来模拟求解近似值。
设是x的概率分布,,则
2.2 接受拒绝采样
对于概率分布不是常见的分布,一个可行的办法是采用接受-拒绝采样来得到该分布的样本。
接受-拒绝采样:给定一个常见分布q(x),进行采样,然后按照一定的方法拒绝某些样本,以达到接近目标分布p(x)的目的。
其中,即
接受拒绝采样过程:
遍历样本:
产生
如果,则接受样本;否则拒绝
所有接受的样本服从p(x)分布。
证明:等价证明
其中代表满足条件,要接受样本。
2.3 马尔可夫链的平稳状态
马尔可夫链中,已知系统的初始状态和状态转移矩阵,则可推断出系统任意时刻可能所处的状态。
平稳分布:如存在非零状态概率向量,使得:,其中为状态概率矩阵,则称X为该马尔可夫链的一个平稳分布。
性质1:当状态转移矩阵为正规概率矩阵时,平稳分布唯一。
正规概率矩阵:存在m>0,使得中诸元素皆非负非零。
例如:正例P=[[0,1],[0.4,0.6]],反例P=[[1,0],[0.5,0.5]]
性质2:
证明:数学归纳法,假设成立,
性质3:
性质4:
证明:,,故
把从一维扩展到k维,设2个状态
2.4 Gibbs采样
Gibbs采样算法:
输入:状态向量随机初始化,有个K个状态;状态转移次数(Gibbs采样迭代次数)阈值n;状态概率矩阵P。
for t=0 to n-1:
for k=1 to K:
从条件概率分布采样得到
(三)基于Gibbs采样的LDA模型
求解条件分布(状态转移概率):
LDA Train---基于Gibbs采样的LDA算法:
for in 语料库:
for in :
随机赋予一个topic的编号
for i=0 to gibbs采样轮数:
for in 语料库:
for in :
Gibbs采样:计算条件概率分布,采样得到该词的新主题
根据后验分布,更新对应的主题-词的先验分布(Dirichlet分布)
根据后验分布,更新对应的文章-主题的先验分布(Dirichlet分布)
for in 语料库:
该文章下的主题概率分布计算:
for in K个主题:
该主题下的词概率分布计算:
LDA Inference---基于Gibbs采样的LDA算法:
对于新文档doc,
for i=0 to gibbs采样轮数:
for in doc:
Gibbs采样:计算条件概率分布,采样得到该词的新主题
不用更新:主题-词的先验分布(Dirichlet分布)
根据后验分布,更新文章-主题的先验分布(Dirichlet分布)
计算新文章中每个主题的概率分布:
结束。